MjAwMi0xMC0yMiAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQnVtcGVkIHZlcnNpb24gdG8gMS40LjNhLgoKCUdOVSBsaWJ0b29sIDEuNC4zIHdhcyByZWxlYXNlZC4KCgkqIGNvbmZpZ3VyZS5pbjogQnVtcGVkIHZlcnNpb24gdG8gMS40LjMuCgkqIGNvbmZpZy5zdWIsIGNvbmZpZy5ndWVzczogIFN5bmNocm9uaXNlZCBmcm9tIGZ0cC5nbnUub3JnLgoJKiBORVdTOiBVcGRhdGVkLgoKMjAwMi0xMC0yMiAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jOiBJbml0IGNoYXIgKiB0byBOVUxMLCBub3QgMC4gQW5kLCBmb3IKCXNvbWUgY2hhciAqIHZhbHVlcywgc2V0ICpbdmFyXSA9IDAgdG8gKlt2YXJdID0gJ1wwJy4KCjIwMDItMTAtMjIgIEJyYWQgU21pdGggIDxicmFkQGNvbXN0eWxlLmNvbT4KCgkqIGxpYnRvb2wubTQ6ICRsaW5rZXJfZmxhZyAtPiAkY29tcGlsZXJfZmxhZyBmb3IgT3BlbkJTRAoJYXJjaGl2ZV9jbWRzIGVudHJpZXMgdXNpbmcgJENDLgoKMjAwMi0xMC0yMiAgQWxleGFuZHJlIER1cmV0LUx1dHogIDxhZGxAZ251Lm9yZz4KCgkqIGx0ZGwubTQgKEFDX0xJQl9MVERMLCBBQ19MVERMX0VOQUJMRV9JTlNUQUxMLAoJQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlMsIEFDX0xURExfU0hMSUJFWFQsIEFDX0xURExfU0hMSUJQQVRILAoJQUNfTFRETF9TWVNTRUFSQ0hQQVRILCBBQ19MVERMX09CSkRJUiwgQUNfTFRETF9ETFBSRU9QRU4sCglBQ19MVERMX0RMTElCLCBBQ19MVERMX1NZTUJPTF9VU0NPUkUsIEFDX0xURExfRExTWU1fVVNDT1JFKTogUXVvdGUKCW1hY3JvIG5hbWUgaW4gZGVmaW5pdGlvbi4KCjIwMDItMTAtMjIgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00OiBXaGVuIGEgbW9kdWxlIGlzIGJ1aWx0IGZvciBBSVgsIHRoZSAnbGliJwoJcHJlZml4IGlzbid0IG5lZWRlZCwgbmVpdGhlciBpcyB0aGUgdmVyc2lvbi4gQUlYIGRsb3BlbgoJd2lsbCBob25vciB0aGUgUlBBVEggaW4gYSBsaWJyYXJ5LgoKMjAwMi0xMC0yMCAgQWxleGFuZHJlIER1cmV0LUx1dHogIDxhZGxAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRSk6IEhvbm9yCglhY19leGVleHQuCgoyMDAyLTEwLTE0ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogSWYgbGQgaXMgYmVpbmcgdXNlZCBvbiBJUklYIHRvIGVtYmVkIHRoZQoJcnVudG1pZSBwYXRoLCB1c2UgLXJwYXRoLCBub3QgLVdsLC1ycGF0aC4gRW1iZWQgdGhlIHJ1bnRpbWUKCXBhdGggaW50byBsaWJyYXJpZXMgZm9yIEFJWCAoc3VwcG9ydGVkIG9uIEFJWCA0LjMuMispLgoJRW1iZWQgdGhlIHJ1bnRpbWUgcGF0aCBpbnRvIFRydTY0IGxpYnJhcmllcywgZXZlbiB0aG91Z2ggaXQKCWRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHVubGVzcyB1c2luZyBUcnU2NCBVTklYIDUuMSB3aXRoIGEKCXNwZWNpZmljIHBhdGNoIGFuZCA+NS4xLgoKMjAwMi0xMC0xMSBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNCAoYWl4KTogV2hlbiBMREZMQUdTPSItV2wsLWJydGwsW290aGVyIG9wdGlvbnNdIiwKCXRoZSAiLWJydGwiIHNwZWNpYWwtY2FzZSBjb2RlIGZvciBBSVggbmV2ZXIgZ2V0cyB0cmlnZ2VyZWQKCWJlY2F1c2Ugd2VyZSBhcmUgYmVpbmcgdG9vIHNwZWNpZmljIGFib3V0IGhvdyB3ZSBzZWFyY2ggZm9yCgkiLWJydGwiLiAgVXNlIGNhc2Ugc3RhdGVtZW50IHRvIGF2b2lkIHRoaXMuIFJlbW92ZSBleHRyYW5lb3VzCglzZW1pY29sb24uCgkqIGx0bWFpbi5pbjogUmVjb2duaXplIHRoZSBJQk0geGxjIGNvbXBpbGVyIGZhbWlseS4KCjIwMDItMTAtMTEgIENocmlzdG9waCBFZ2dlciAgPENocmlzdG9waF9FZ2dlckBnbXguZGU+CgoJKiBsaWJ0b29sLm00IChkYXJ3aW4pOiBBZGQgLWluc3RhbGxfbmFtZSB0byB0aGUgbGluayBsaW5lIG9ubHkKCXdoZW4gLWR5bmFtaWNsaWIgaXMgc3BlY2lmaWVkIGZvciBhIG1vZHVsZS4KCSogbHRtYWluLmluIChkYXJ3aW4pOiBVc2UgLWJpbmRfYXRfbG9hZCB3aGVuIGxpbmtpbmcgc2hhcmVkCglsaWJyYXJpZXMuCgoyMDAyLTA5LTA5ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogQ3VzdG9tICRzeW1jb2RlIGZvciBUcnU2NCBVTklYIHRvIGNhdGNoICdRJywKCXJlYWQtb25seSBjb25zdGFudHMuCgoyMDAyLTA5LTA5ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5kZT4KCgkqIGxpYnRvb2wubTQgKG9zZlszNDVdKTogQXBwZW5kICRtYWpvciB0byBzb25hbWVfc3BlYy4KCVJlZmxlY3QgdGhpcyBpbiBsaWJyYXJ5X25hbWVzX3NwZWMuCgkqIGx0bWFpbi5pbiAob3NmKTogUHJlZml4ICRtYWpvciB3aXRoICcuJyBmb3IgdXNlIGFzIGV4dGVuc2lvbi4KCjIwMDItMDYtMjYgIEJvYiBGcmllc2VuaGFobiAgPGJmcmVpc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoJKiBsaWJ0b29sLm00IChzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMpOiAgUmVtb3ZlIGV4dHJhbmVvdXMgJz0nCgljaGFyYWN0ZXIgd2hpY2ggYXBwZWFycyBpbiBnY2MgMy4xIC1wcmludC1zZWFyY2gtZGlycyBvdXRwdXQuCgoyMDAyLTA2LTIzICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbHRkbC5tNCAoQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlMpOiBIUC9VWCBuZWVkcwoJbGlibHRkbF9jdl9zeXNfZGxvcGVuX2RlcGxpYnMgc2V0IHRvIHllcy4KCjIwMDItMDYtMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5jIChhcmd6X2luc2VydCk6IEFjdHVhbGx5LCBCRUZPUkUgY2FuIGJlIE5VTEwKCXdoZW4gKlBBUkdaX0xFTiBpcyBub24tTlVMTCwgc28gdGhlIGFzc2VydGlvbiB0byB0aGUgY29udHJhcnkgd2FzCglib2d1cy4KCVJlcG9ydGVkIGJ5IEJvYiBGcmllc2VuaGFobiA8YmZyZWlzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KCWFuZCBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoyMDAyLTA2LTIxICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoZm9yZWFjaF9kaXJpbnBhdGgpOiBFbnN1cmUgdGhhdCBmaWxlbmFtZSBpcyAnXDAnCgl0ZXJtaW5hdGVkIGJ5IGFsbCBjb2RlIHBhdGhzLgoJUmVwb3J0ZWQgYnkgTHV0eiBN/GxsZXIgPGx1dHpAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKMjAwMi0wNi0yMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gS2V2aW4gUnlkZSAgPHVzZXI0MkB6aXAuY29tLmF1PjoKCSogZG9jL2xpYnRvb2wudGV4aSAoUGxhdGZvcm0gcXVpcmtzKTogcy9kZXBlbmRhbi9kZXBlbmRlbi8KCSogVE9ETzogRGl0dG8uCgoyMDAyLTA2LTEzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGx0bWFpbi5pbiAoaXJpeCwgbm9uc3RvcHV4KTogU2V0IG1ham9yIGJlZm9yZSB1c2UuCgoyMDAyLTA2LTExICBEYW5pZWwgS29icmFzICA8a29icmFzQGxpbnV4LmRlPgoKCSogbGlibHRkbC9sdGRsLmMgKHRyeV9kbG9wZW4pOiBEb24ndCByZXR1cm4gYm9ndXMgaGFuZGxlIHRvIHVzZXIKCSAgaWYgdHJ5YWxsX2Rsb3BlbigpIGZhaWxzLgoKMjAwMi0wNS0wNiAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAdHdpbnN1bi5jb20+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IGhlYWQgLTEgLT4gc2VkIDFxIHRvCglwb3J0IHRvIFBPU0lYIDEwMDMuMS0yMDAxIGhvc3RzLCBsaWtlIHRleHR1dGlscyAyLjAuMjEgd2l0aAoJX1BPU0lYMl9WRVJTSU9OPTIwMDExMi4KCjIwMDItMDUtMDYgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogbHRtYWluLmluOiBEb24ndCBhc3N1bWUgdGhhdCAic29ydCArMiIgd29ya3MsIGFzIFBPU0lYCgkxMDAzLjEtMjAwMSBzYXlzIHRoYXQgInNvcnQgKzIiIGlzIHN1cHBvc2VkIHRvIHNvcnQgdGhlIGZpbGUKCW5hbWVkICIrMiIuICBBbiBleGFtcGxlIGhvc3QgdGhhdCBiZWhhdmVzIGxpa2UgdGhpcyBpcwoJdGV4dHV0aWxzIDIuMC4yMSB3aXRoIF9QT1NJWDJfVkVSU0lPTj0yMDAxMTIuCgoyMDAyLTA1LTAyICBEYXZlIFZhc2lsZXZza3kgIDx0aGV2YXNAbWFjLmNvbT4KCgkqIGx0bWFpbi5pbjogUmVtb3ZlIGNvbnZlbmllbmNlIGxpYnJhcmllcyBmcm9tIGRlcGxpYnMgZm9yIERhcndpbi4KCjIwMDItMDUtMDIgIEZyaXR6IEVsZmVydCAgPGZlbGZlcnRAdG8uY29tPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyk6IE1vZGlmeSBhcmNoaXZlX2V4cHN5bV9jbWRzCgl0byBjYXRjaCBwcm9wZXJseSBoYW5kbGUgZGxsIGFsaWFzIHN5bWJvbHMuCgoyMDAyLTA0LTE0ICBKZWFuLUZyZWRlcmljIENsZXJlICA8amZyZWRlcmljLmNsZXJlQGZ1aml0c3Utc2llbWVucy5jb20+CgoJKiBsaWJ0b29sLm00OiBVcGRhdGUgc3VwcG9ydCBmb3IgRnVqaXN0dS1TaWVtZW5zIENvbXB1dGVycyAoRlNDKS4KCSogbHRtYWluLmluOiBBZGQgc3VwcG9ydCBmb3IgRUJDRElDIGJhc2VkIHN5c3RlbXMuCgoyMDAyLTAzLTE2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBUT0RPOiBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnRzIGFib3V0IFJNUycgcGFja2FnZSBzeXN0ZW0uCgoyMDAyLTAzLTA3ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogQWxsb3cgTFRfQUNfUFJPR19TRUQgdG8gd29yayB1bmRlciBhdXRvY29uZgoJMi4xMyBhbmQgMi41eCB3aXRoICRFQ0hPX04vJEVDSE9fQyBhbmQgJGFjX24vJGFjX2MuCgoyMDAyLTAyLTI1ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbHRtYWluLmluOiBRdW90ZSAkcGljX21vZGUuCgoyMDAyLTAyLTI1ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbHRtYWluLmluOiBGaXggdmVyc2lvbiBzdHJpbmcgdW5kZXIgSVJJWC4KCjIwMDItMDItMjUgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00IChMVF9BQ19QUk9HX1NFRCk6IFVzZSAkYWNfbiBhbmQgJGFjX2MgcmF0aGVyIHRoYW4KCSRFQ0hPX04gYW5kICRFQ0hPX0MgZm9yIG5ldyBMVF9BQ19QUk9HX1NFRCBtYWNyby4KCSRFQ0hPX04gYW5kICRFQ0hPX0MgZGVmaW5lZCBmb3IgYXV0b2NvbmYgMi41MCBhbmQgYWJvdmUgb25seS4KCjIwMDItMDItMDEgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQHJpY2FyZG8tdXMuY29tPgoKCSogbGlidG9vbC5tNCAoTFRfQUNfUFJPR19TRUQpOiBOZXcgbWFjcm8gdGVzdHMgc2VkIGZvciB0cnVuY2F0aW9uIG9mCglvdXRwdXQuICBBQ19SRVFVSVJFIHRoZSBuZXcgbWFjcm8uCgkqIGx0bWFpbi5pbjogVXNlICRTRUQgcmF0aGVyIHRoYW4gcGxhbiBvbGQgc2VkLCBhcyBzZXQgYnkgdGhlIG5ldwoJbWFjcm8gTFRfQUNfUFJPR19TRUQuCgoyMDAyLTAxLTE0ICBPc3NhbWEgT3RobWFuICA8b3NzYW1hQHVjaS5lZHU+CgoJRnJvbSBSb2dlciBMZWlnaCA8cmwxMTdAeW9yay5hYy51az46CgkqIGxpYnRvb2xpemUuaW4gKGF1eGRpcmxpbmUpOiBGaXhlZCBoYXJkY29kZWQgdmFsdWUgb2YKCSJjb25maWd1cmUuaW4uIiBJbnN0ZWFkIHVzZSAiJGNvbmZpZ3VyZV9hYyIgdmFyaWFibGUuICBDb3JyZWN0cwoJQUNfQ09ORklHX0FVWF9ESVIgc3VwcG9ydCB3aGVuIHVzaW5nIG5ldyBzdHlsZSBgY29uZmlndXJlLmFjLicKCgkqIGRvYy9saWJ0b29sLnRleGk6ICBDb3JyZWN0ZWQgdHlwby4gICJTYWZldHkiIG5vdCAiU2FmdGV5Ii4KCjIwMDItMDEtMTQgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQHJpY2FyZG8tdXMuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiBBZGQgbWlwcy9taXBzZWwgdG8gbGlzdCBvZgoJYXJjaGl0ZWN0dXJlcyBmb3IgbGludXguCgoyMDAyLTAxLTEwICBWb2xrZXIgQ2hyaXN0aWFuICA8dm9jQHNvZnQudW5pLWxpbnouYWMuYXQ+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoZmluZF9oYW5kbGVfY2FsbGJhY2spOiB0cmVhdCB0aGUgcmVzdWx0IG9mIGEgY2FsbAoJdG8gYWNjZXNzKDIpIGNvcnJlY3RseSB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgYSBsaWJyYXJ5IGNhbiBiZSBmb3VuZAoJaW4gYSBkaXJlY3RvcnkgZnJvbSB1c2VyX3NlYXJjaF9wYXRoLgoKMjAwMS0xMS0yOCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJV2l0aCBoZWxwIGZyb20gTWljaGFlbCBNYXR6IDxtYXR6QGtkZS5vcmc+OgoJKiBsdG1haW4uaW46ICBBZGQgYSBuZXcgY29tbWFuZCBsaW5lIGFyZ3VtZW50CgktLXByZXNlcnZlLWR1cC1kZXBzIGZvciBwcmVzZXJ2aW5nIGR1cGxpY2F0ZQoJZGVwZW5kZW50IGxpYnJhcmllcy4KCSogbGlidG9vbC50ZXhpOiBEb2N1bWVudCBpdC4KCjIwMDEtMTEtMjggIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2xpemUuaW46IFRoZSB0ZXN0IGZvciB3aGV0aGVyIEFDX1BST0dfTElCVE9PTCBpcyBkZWZpbmVkCglpbiBhY2xvY2FsLm00IGhhZCBiaXRyb3R0ZWQgc2xpZ2h0bHkuCglSZXBvcnRlZCBieSBUYWthaGlrbyBLYXdhc2FraSA8VGFrYWhpa29fS2F3YXNha2lAY2lpLmNzay5jby5qcD4KCjIwMDEtMTEtMjcgIERvbmFsZCBELiBBbmRlcnNvbiAgPGRkYUBzbGVlcHljYXQuY29tPgoKCSogbHRtYWluLmluOiBUcmVhdCBmcmVlYnNkIGxpa2Ugb3BlbmJzZCwgaW4gdGhhdCAtbGMvLWxjX3Igc2hvdWxkCglub3QgYmUgZXhwbGljaXRseSB1c2VkLiAgbGQgaGFuZGxlcyB0aGlzIGRlcGVuZGluZyBvbiB0aGUgcHJlc2VuY2UKCW9mIHRoZSAtcHRocmVhZCBvcHRpb24uCgoyMDAxLTExLTE1ICBHdWlkbyBEcmFoZWltICA8Z3VpZG9kLTIwMDFxM0BnbXguZGU+CgoJKiBsdGRsLm00OiBDaGFuZ2VkICJ1bmRlcnNjb2RlIHRvIHVuZGVyc2NvcmUiLgoKMjAwMS0xMS0xNSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPjoKCSogbHRtYWluLmluOiBUeXBvLgoKMjAwMS0xMS0xNSAgIE1vIERlSm9uZyAgPHN1cGVybW9AYmF5YXJlYS5uZXQ+CgoJKiBsdG1haW4uaW46IFBsYWNlIHBhcmVucyBhcm91bmQgYSBnZW5lcmF0ZWQgcmVsaW5rX2NvbW1hbmQKCXNvIGl0IGlzIHJ1biBpcyBhIHN1YnNoZWxsLiBUaGlzIGF2b2lkcyBhbiBpbnN0YWxsIGVycm9yCgl3aGVyZSBsaWJ0b29sIGVuZGVkIHVwIGluIHRoZSB3cm9uZyBkaXJlY3RvcnkgYWZ0ZXIKCXJlbGlua2luZyBhIC5sYSBmaWxlLgoKMjAwMS0xMS0xNSAgR3VpZG8gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KCgkqIGx0bWFpbi5pbjogRGlzcGxheSBiZXR0ZXIgYW5kIGRpZmZlcmVudCBlcnJvciBtZXNzYWdlcyB3aGVuCglsaWJyYXJ5IGxpbmthZ2UgZmFpbHMgaW4gdmFyaW91cyB3YXlzLgoKMjAwMS0xMC0yOCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gVG9tIEJhdGVzICA8VG9tLkJhdGVzQGNvbXBhcS5jb20+OgoJKiBsaWJ0b29sLm00IFttaXBzLWNvbXBhcS1ub25zdG9wdXhdOiBOZXcgcG9ydC4KCSogbHRtYWluLmluIFttaXBzLWNvbXBhcS1ub25zdG9wdXhdOiBTdXBwb3J0CgkkdmVyc2lvbl90eXBlID09IG5vbnN0b3B1eC4KCSogTkVXUzogVXBkYXRlZC4KCjIwMDEtMTAtMjggIEFsYmVydCBDaGluLUEtWW91bmcgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChmb3JlYWNoX2RpcmlucGF0aCk6IGNoYW5nZSBzb21lIHR5cGVzIHRvIHNpemVfdAoJZnJvbSBpbnQgYmVjYXVzZSBzdHJsZW4oKSByZXR1cm5zIHNpemVfdC4gYXJnel9sZW4gY2hhbmdlZCB0bwoJc2l6ZV90IGJlY2F1c2UgYXJneml6ZV9wYXRoKCkgdGFrZXMgM3JkIGFyZ3VtZW50IGFzIHNpemVfdCwgbm90CglpbnQuCglCYXNlZCBvbiBsaW50IHJ1biBmcm9tIEJvYiBGcmllc2VuaGFobiA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KCjIwMDEtMTAtMjcgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0ZGwubTQgKEFDX1dJVEhfTFRETCk6IE5ldyBtYWNybyB0byBhZGQgYC0td2l0aC1pbmNsdWRlZC1sdGRsJwoJb3B0aW9uIHRvIGNvbmZpZ3VyZSwgYnV0IHRvIGZpbmQgYW4gYXBwcm9wcmlhdGUgbHRkbCBsaWJyYXJ5IGFuZAoJYXBwZW5kIHRoZSByaWdodCBvcHRpb25zIHRvIGxpbmsgaXQuCgoyMDAxLTEwLTA0ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlibHRkbC9sdGRsLmM6IE1hdGNoIGZ1bmN0aW9uIHJldHVybiB0eXBlIHdpdGggcHJvdG90eXBlCgkoYWRkIHN0YXRpYyBpbml0aWFsaXplciB0byBmaWxlX25vdF9mb3VuZCkuCgoyMDAxLTA5LTMwICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJMVERMX0NPTlZFTklFTkNFKTogcy9JTkNMVERML0xURExJTkNMLyBmb3IKCWNvbnNpc3RlbmN5IHdpdGggZ2V0dGV4dCdzIElOVExJTkNMLiAgS2VlcCB0aGUgb2xkIHN5bWJvbCB0b28gZm9yCgliYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KCShBQ19MSUJMVERMX0lOU1RBTExBQkxFKTogRGl0dG8uCgkqIGRvYy9saWJ0b29sLnRleGkgKERpc3RyaWJ1dGluZyBsaWJsdGRsKTogIEFkanVzdCBkb2N1bWVudGF0aW9uLgoKMjIwMDEtMDktMjIgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsdGRsLm00IChBQ19MVERMX0RMTElCKTogRXZlbiB0aG91Z2ggSFAtVVggMTAuMjAgYW5kIDExLjAwCglzdXBwb3J0IHNobF9sb2FkICphbmQqIGRsb3BlbiwgZGxvcGVuIHdvcmtzIGNvcnJlY3RseSBvbmx5Cgl3aXRoIGEgcGF0Y2guIEJlY2F1c2Ugd2Ugd2FudCB0byBhdm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIHdlCglidWlsZCBvbiBhIHN5c3RlbSB3aXRoIHRoZSBwYXRjaCBidXQgZGVwbG95IG9uIGEgc3lzdGVtIHdpdGhvdXQsCgl1c2Ugc2hsX2xvYWQgZXhjbHVzaXZlbHkgaWYgZm91bmQuCgoyMDAxLTA5LTIxICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBUb3IgTGlsbHF2aXN0IDx0bWxAaWtpLmZpPjoKCSogbHRtYWluLmluIFtjeWd3aW4qIG1pbmd3Kl06IFRha2UgY2FyZSBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCgl3cmFwcGVyIHNjcmlwdCBuYW1lIGFuZCBleGVjdXRhYmxlIG5hbWUuCgoJKiBsaWJ0b29sLm00IChhcmNoaXZlX2NtZHMpIFtkYXJ3aW4xLlswLTJdXTogRGFyd2luIHVzZXMgenNoLTMuMS42Cglmb3IgL2Jpbi9zaCwgYW5kIHRoYXQgc2hlbGwgZG9lcyBub3QgaGFuZGxlIGVzY2FwZWQgcXVvdGVzCglwcm9wZXJseSB5ZXQuCglSZXBvcnRlZCBieSBDaHJpc3RvcGhlciBQZmlzdGVyZXIgPGNwQGNocmlzcC5kZT4KCjIwMDEtMDktMjEgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYzogTWF0Y2ggZnVuY3Rpb24gcmV0dXJuIHR5cGUgd2l0aCBwcm90b3R5cGUKCShhZGQgc3RhdGljIGluaXRpYWxpemVyIHRvIHNvbWUgZnVuY3Rpb25zKSB0byBwcmV2ZW50IHdhcm5pbmdzCglmcm9tIEhQLVVYIGNjLgoKMjAwMS0wOS0yMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmM6IEFkZGVkIHN1cHBvcnQgZm9yIGRtYWxsb2MsIGFuZCB1bmNvdmVyZWQgc29tZQoJbWVtb3J5IGJ1Z3MgYXMgYSByZXN1bHQuCgoyMDAxLTA5LTEzICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdG1haW4uaW4gKGV4ZWNfY21kKTogRG9uJ3Qgb3ZlcnF1b3RlIG9yIHdlIGVuZCB1cCB3aXRoIHRoaXM6CgkkIGxpYnRvb2wgLS1tb2RlPWV4ZWN1dGUgZWNobyBmb28KCSJmb28iCglSZXBvcnRlZCBieSBSb2IgQnJvd25pbmcgPHJsYkBkZWZhdWx0dmFsdWUub3JnPgoKMjAwMS0wOS0xMyAgQXNzYXIgV2VzdGVybHVuZCAgPGFzc2FyQHNpY3Muc2U+CgoJKiBsdGRsLm00IChBQ19MVERMX0RMTElCKTogY2FsbCBkbG9wZW4gd2l0aCBhcmd1bWVudHMgc28gdGhlIHRlc3QKCWRvZXMgbm90IGZhaWwgZHVlIHRvIGEgcHJvdG90eXBlIGluIGRsZmNuLmgKCjIwMDEtMDktMTEgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKE9CSkVDVFMpOiAgSW4gYWRkaXRpb24gdG8gbWFraW5nICQoT0JKRUNUUykKCWRlcGVuZCBvbiBsaWJ0b29sIC0tIHdoaWNoIGNhdXNlcyBBdXRvbWFrZSAxLjQgdG8gZ2VuZXJhdGUgdGhlCglpYnRvb2wgc2NyaXB0IGluIHRoaXMgZGlyZWN0b3J5IGR1cmluZyBib290c3RyYXAgLS0gYWxzbyBhZGQKCWxpYmx0ZGxfbGFfT0JKRUNUUyBhbmQgbGlibHRkbGNfbGFfT0JKRUNUUywgdGhlIEF1dG9tYWtlIDEuNQoJZXF1aXZhbGVudHMuCgkqIE5FV1M6IFVwZGF0ZWQuCgoJKiBib290c3RyYXA6IEJlIHJvYnVzdCB0byBoYXZpbmcgbm8gZmlsZXMgdGhhdCBuZWVkIHJlbW92aW5nLgoKCSogY29uZmlndXJlLmluOiBCdW1wZWQgdmVyc2lvbiB0byAxLjQuMmEuCgoJR05VIGxpYnRvb2wgMS40LjIgd2FzIHJlbGVhc2VkLgoKCSogY29uZmlndXJlLmluOiBCdW1wZWQgdmVyc2lvbiB0byAxLjQuMi4KCSogY29uZmlnLnN1YiwgY29uZmlnLmd1ZXNzOiAgU3luY2hyb25pc2VkIGZyb20gZnRwLmdudS5vcmcuCgkqIE5FV1M6IFVwZGF0ZWQuCgoyMDAxLTA5LTExICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+LCAgQWxiZXJ0IENoaW4gPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4uICBUaW0gVmFuIEhvbGRlciAgPHRpbS52YW4uaG9sZGVyQHBhbmRvcmEuYmU+CgoJKiBsaWJ0b29sLm00IChub191bmRlZmluZV9mbGFnKSBbc29sYXJpcypdOiAgRG9uJ3Qgc2V0IHRoaXMgZmxhZwoJaWYgR0NDIDwgMy4wIHdpdGggbmF0aXZlIGxkLCB3aGljaCBpbnRyb2R1Y2VzIGEgZGVwZW5kZW5jeSBvbgoJbGliZ2NjLmEgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB3aGljaCBpbiB0dXJuIHZpb2xhdGVzCgktbm8tdW5kZWZpbmVkLiAgQWxzbyBkaXNwbGF5IGEgcHJvbWluZW50IGNvbmZpZ3VyZSB0aW1lIHdhcm5pbmcgaWYKCXRoZSBidWdneSBjb21iaW5hdGlvbiBvZiBHQ0MgYW5kIGxkIGlzIGRldGVjdGVkLgoJKEFDX0xJQlRPT0xfSEVBREVSX0FTU0VSVCk6ICBsaWJsdGRsIGZhbGxzIGZvdWwgb2YgdGhpcyBidWcKCWJlY2F1c2UgYXNzZXJ0IHJlcXVpcmVzIF9fZXByaW50ZiBmcm9tIGxpYmdjYy5hLiAgVGhpcyBtYWNybwoJZGV0ZWN0cyB0aGUgY29tYmluYXRpb24gb2YgR0NDIGFuZCBsZCB0aGF0IHByb2R1Y2UgdGhpcyBwcm9ibGVtLAoJYW5kIHByZXRlbmRzIHRoYXQgYXNzZXJ0LmggZG9lcyBub3QgZXhpc3QuLi4KCSogbGlibHRkbC9sdGRsLmMgKEhBVkVfQVNTRVJUX0gpOiAgLi4uc28gdGhhdCBhc3NlcnRpb25zIGNhbiBiZQoJZGlzYWJsZWQgaW4gbGlibHRkbC4gIE90aGVyd2lzZSB0aGUgbGlicmFyeSB3b3VsZCBvbmx5IGJlIHVzZWFibGUKCXdoZW4gbGlua2luZyB1c2luZyBnY2MsIG9yIGJ5IG1hbnVhbGx5IGFkZGluZyBsaWJnY2MuYSB0byB0aGUgbGluawoJbGluZSBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCB1c2VzIGxpYmx0ZGwuCgkqIGx0ZGwubTQgKEFDX0xJQl9MVERMKTogIFJlcXVpcmUgQUNfTElCVE9PTF9IRUFERVJfQVNTRVJULgoJKiBkb2MvUExBVEZPUk1TOiAgVXBkYXRlZC4KCjIwMDEtMDktMTEgIERhbmllbCBIYXJ2ZXkgPGRhbmllbEBhbXJpc3Rhci5jb20uYXU+CgoJKiBsaWJ0b29sLm00IChsdGRsbF9jbWRzKTogWyRdMCBkb2Vzbid0IGFwcGVhciB0byB0cmFuc2xhdGUgdGhyb3VnaAoJdGhlIHNjcmlwdCBjb3JyZWN0bHksIGNoYW5nZSB0byAkJycwCgoyMDAxLTA5LTExICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbiAoQUNfQ09ORklHX0hFQURFUik6IFVzZSBjb25maWctaC5pbiBmb3IgRE9TCgljb21wYXRpYmlsaXR5LgoKCSogbGlidG9vbC5tNDogQWRkIG1pc3NpbmcgTTQgcXVvdGF0aW9uIHRvICQxIG9mIEFDX0RFRlVOIGNhbGxzLgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKEFNX0lOSVRfQVVUT01BS0UpOiBCdW1wIGxpYmx0ZGwgdmVyc2lvbiB0bwoJMS4yLgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChsaWJsdGRsX2xhX0xERkxBR1MpOiAgQnVtcCBsaWJ0b29sIGxpYnJhcnkKCXZlcnNpb24gaW5mbyB0byA0OjA6MS4KCjIwMDEtMDktMTAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MSUJUT09MX1NZU19QQVRIX1NFUEFSQVRPUik6ICBPb3BzLiAgV2UKCXJlYWxseSBvdWdodCB0byBzZXQgUEFUSF9TRVBBUkFUT1IgaW4gaGVyZSBzb21ld2hlcmUuCgkoQUNfUFJPR19MRCk6IERvbid0IGZvcmdldCB0byBBQ19SRVFVSVJFIGl0ISAgQmUgY2FyZWZ1bCBub3QgdG8KCXNldCBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiIgZm9yIFBBVEggc3BsaXR0aW5nLCBvdGhlcndpc2UKCXNwYWNlcyBpbiBkaXJlY3RvcnkgbmFtZXMgd2lsbCBiZSBsb3N0LgoJKEFDX1BST0dfTk0pOiBEaXR0by4KCSogbHRtYWluLmluOiBEZWZhdWx0IElGUyBvbmNlLCBhdCB0aGUgc3RhcnQuCglSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlIDxha2ltQGVwaXRhLmZyPgoKMjAwMS0wOS0xMCAgQnJhZCAgPGJyYWRAY29tc3R5bGUuY29tPgoKCSogbHRtYWluLmluICgtbGNfcik6IFN0eWxlIGltcHJvdmVtZW50LgoKCSogZG9jL2xpYnRvb2wudGV4aTogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gbHRjb25maWcuCgkqIGJvb3RzdHJhcDogRG9uJ3QgYm90aGVyIGNyZWF0aW5nIGFuIGVtcHR5IGx0Y29uZmlnIGFuZCB0aGVuCglyZW1vdmluZyBpdC4KCSogdGVzdHMvcXVvdGUudGVzdDogcy9sdGNvbmZpZy9cJDAvCgoyMDAxLTA5LTA5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBCcmFkIDxicmFkQGNvbXN0eWxlLmNvbT46CgkqIGxpYnRvb2wubTQ6IFVzZSBBdXRvY29uZiBzcXVhcmUgYnJhY2tldCBxdW90aW5nIHN0eWxlCgljb25zaXN0ZW50bHkgdGhyb3VnaG91dC4KCjIwMDEtMDktMDcgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGJvb3RzdHJhcDogQ2xlYW51cCBgYXV0b200dGUnIGFuZCBgbGlidG9vbCcgc28gdGhhdCB3ZSBkb24ndAoJZ2V0IGNhdWdodCBieSBzb21ldGhpbmcgZnJvbSBhIHByZXZpb3VzIGJ1aWxkLgoKCSogbGlidG9vbC5tNCAoYXJjaGl2ZV9jbWRzLCBhcmNoaXZlX2V4cHN5bV9jbWRzKSBbc29sYXJpcypdOiBSZXZlcnQKCW15IDIwMDEtMDktMDYgcGF0Y2guCgkobm9fdW5kZWZpbmVkX2ZsYWcpaSBbc29sYXJpcypdOiBSZXZlcnQgQWxleGFuZHJlJ3MgMjAwMS0wNC0xMSBwYXRjaC4KCgkqIGxpYmx0ZGwvYWNjb25maWcuaDogIFJlbW92ZWQuICBPYnNvbGV0ZWQgd2l0aCBtb2Rlcm4gQXV0b21ha2UKCShpLmUuIDEuNCBvciBiZXR0ZXIpLgoKCSogbGlibHRkbC9sdGRsLmMgKGZvcmVhY2hfZGlyaW5wYXRoKTogYXJnel9sZW4gc2hvdWxkIGJlIGEgc2l6ZV90LgoJUmVwb3J0ZWQgYnkgQWxiZXJ0IENoaW4gPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCjIwMDEtMDktMDYgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKGFyY2hpdmVfY21kcywgYXJjaGl2ZV9leHBzeW1fY21kcykgW3NvbGFyaXMqXTogQ2hhbmdpbmcKCW5vX3VuZGVmaW5lZF9mbGFnIGZyb20gYC16IHRleHQnIHRvIGAteiBkZWZzJyAoc2VlIGVudHJ5IGJlbG93IGF0CgkyMDAxLTA0LTExICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4pIGhhcyBhIHByb2JsZW0uCgl3aGVuIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeSB3aXRoIGdjYyBjYWxsaW5nIC91c3IvY2NzL2Jpbi9sZCAoZWcuCgl0aGUgZ2NjIHN1cHBsaWVkIHdpdGggU29sYXJpcyA4IGNvbXBhbmlvbiBDRCksIHVzaW5nIHRoZSBmbGFnCgktbm8tdW5kZWZpbmVkLCBzaGFyZWQgbGlicmFyeSBsaW5raW5nIHdpbGwgYWx3YXlzIGZhaWwgYmVjYXVzZSBvZgoJdGhlIHVucmVzb2x2ZWQgc3ltYm9scyBmcm9tIGxpYmdjYy5hLiAgQ29uc2VxdWVudGx5IHdlIGhhdmUgdG8KCXByb3ZpZGUgYSBwYXRoIHRvIGxpYmdjYy5hIHdoZW4gbGlua2luZyBzaGFyZWQgbGlicmFyaWVzIGluCgljb25qdW5jdGlvbiB3aXRoIC1uby11bmRlZmluZWQhCgoJRnJvbSBNaWNoYWVsIFBydWV0dCA8bXBydWV0dEBlbmdyLnNnaS5jb20+OgoJKiBsaWJsdGRsL2x0ZGwuYyAoZmluZF9tb2R1bGUpOiBgMCcgdmFsdWVkIGFyZ3VtZW50cyB0bwoJdHJ5YWxsX2Rsb3Blbl9tb2R1bGUoKSBtdXN0IGJlIGV4cGxpY2l0bHkgY2FzdCB0byBhdm9pZCBjb21waWxlcgoJd2FybmluZ3Mgb24gc29tZSBlbnZpcm9ubWVudHMuCgoyMDAxLTA5LTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBkZW1vL01ha2VmaWxlLmFtIChoZWxsZGwpOiAgQXV0b21ha2UgMS40IGNhbid0IGZpbmQgdGhlIHRhcmdldAoJaWYgd2UgdXNlIGhlbGxkbCQoRVhFRVhUKSwgYW5kIEF1dG9tYWtlIDEuNSBiYXJmcyB1bmxlc3Mgd2UgZG8uCglVc2luZyBib3RoIHRhcmdldHMgdG8gdGhlIGxlZnQgb2YgdGhlIGNvbG9uIHNlZW1zIHRvIHdvcmsgdGhvdWdoIQoKMjAwMS0wOS0wMyAgQnJhZCAgPGJyYWRAY29tc3R5bGUuY29tPgoKCSogbHRkbC5tNCBbQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlNdOiBUZWFjaCBsdGRsIGFib3V0IHRoZQoJYmVoYXZpb3Igb2YgT3BlbkJTRCdzIGRsb3BlbigpLgoKMjAwMS0wOS0wMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBCdW1wZWQgdmVyc2lvbiB0byAxLjQuMWEuCgoJR05VIGxpYnRvb2wgMS40LjEgd2FzIHJlbGVhc2VkLgoKCSogY29uZmlndXJlLmluOiBCdW1wZWQgdmVyc2lvbiB0byAxLjQuMS4KCSogY29uZmlnLnN1YiwgY29uZmlnLmd1ZXNzOiAgU3luY2hyb25pc2VkIGZyb20gZnRwLmdudS5vcmcuCgkqIGRvYy90ZXhpbmZvLnRleDogRGl0dG8uCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIFRPRE86IFJlbW92ZSBmaXhlZCBidWdzLgoKCSogbHRkbC5tNCAoQUNfQ0hFQ0tfVFlQRVMpOiAgVGhpcyBtYWNybyB3YXMgaW50cm9kdWNlZCBpbiBBdXRvY29uZgoJMi41eC4gIEJhY2twb3J0ZWQgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiAoZGlyZWN0bHkgdG8gbHRkbC5tNCkKCWZyb20gQXV0b2NvbmYgMi41MCwgc28gdGhhdCB3ZSBjYW4gc3RpbGwgYm9vdHN0cmFwIHdpdGggQXV0b2NvbmYKCTIuMTMuCgoJRnJvbSBNYXJpdXMgVm9sbG1lciA8bXZvQHphZ2Fka2EucGluZy5kZT46CgkqIGxpYmx0ZGwvbHRkbC5jICh0cnlhbGxfZGxvcGVuX21vZHVsZSk6IERvbid0IGZvcmdldCB0byBwcm9wb2dhdGUKCWVycm9ycyBvdmVyIHJlY3Vyc2UgbGV2ZWxzLgoKMjAwMS0wOS0wMyAgQnJhZCAgPGJyYWRAY29tc3R5bGUuY29tPgoKCSogbGlidG9vbC5tNCBbb3BlbmJzZCpdOiBNb3JlIGltcHJvdmVtZW50cyB0byB0aGUgT3BlbkJTRCBwb3J0LgoKCSogbGlidG9vbC5tNCAoZGVwbGlic19jaGVja19tZXRob2QpIFthaXgqXTogUmVtb3ZlZCByZWR1bmRhbnQKCXNldHRpbmcgb2YgdGhpcyB2YXJpYWJsZS4KCjIwMDEtMDktMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIEFsYmVydCBDaGluIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+OgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTEFOR19DX0NPTkZJRykgW2FpeDQqXTogQmUgY2FyZWZ1bCB3aXRoCglzaGFyZWQgbmFtZXNwYWNlcyBmb3Igc3RhdGljIGFuZCBzaGFyZWQgbGlicy4KCShBQ19MSUJUT09MX0RMT1BFTl9TRUxGKTogSWYgYWxsIGVsc2UgZmFpbHMsIHRyeSBkbGRfbGluayBmcm9tIEdOVQoJRExELgoKMjAwMS0wOS0wMiAgQ2hyaXN0b3BoZXIgUGZpc3RlcmVyIDxjcEBjaHJpc3AuZGU+CgoJKiBsaWJ0b29sLm00LCBsdG1haW4uaW46IExpbmtlciBmbGFnIGFuZCB2ZXJzaW9uIG51bWJlcmluZyBmaXhlcwoJZm9yIGRhcndpbi4KCjIwMDEtMDktMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglCYWNrcG9ydGVkIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBmcm9tIHRoZSBkZXZlbG9wbWVudCBicmFuY2g6CgoJQmFzZWQgb24gYSBwYXRjaCBmcm9tIE1hcml1cyBWb2xsbWVyIDxtdm9AemFnYWRrYS5waW5nLmRlPjoKCSogTkVXUzogdXBkYXRlZC4KCSogbHRkbC5tNCAoQUNfTElCX0xUREwpOiBDaGVjayBmb3IgdW5pc3RkLmguCgkqIGxpYmx0ZGwvbHRkbC5jOiBJbmNsdWRlIHVuaXN0ZC5oIGlmIGl0IGV4aXN0cy4KCShMVERMX1NFQVJDSFBBVEhfVkFSKTogTWFjcm8gdG8gcHJldmVudCBoYXJkY29kaW5nCgkiTFRETF9MSUJSQVJZX1BBVEgiLgoJKExURExfQVJDSElWRV9FWFQpOiBNYWNybyB0byBwcmV2ZW50IGhhcmRjb2RpbmcgIi5sYSIuCgkoYXJjaGl2ZV9leHQpOiBIYXZlIG9ubHkgb25lIGNvcHkgb2YgIi5sYSIgaW4gdGhlIHJlYWRvbmx5CglzZWdtZW50IG9mIHRoZSBjb21waWxlZCBsaWJyYXJ5LgoJKGZpbmRfaGFuZGxlX2NhbGxiYWNrKTogRG9uJ3QgYm90aGVyIHRyeWluZyB0byBkbG9wZW4gdGhlIGZpbGUgaWYKCWl0IGRvZXNuJ3QgZXhpc3QuCgkoZmluZF9oYW5kbGUpOiBEb24ndCBib3RoZXIgc2VhcmNoaW5nIGZvciBmaWxlcyBpZiBubyBzZWFyY2hfcGF0aAoJd2FzIHN1cHBsaWVkLgoJKGZpbGVfbm90X2ZvdW5kKTogQSBuZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGxhc3QKCWVycm9yIHdhcyBkdWUgdG8gYSBmaWxlIG5vdCBmb3VuZCBjb25kaXRpb24uCgkodHJ5X2Rsb3Blbik6IFJlbmFtZWQgZnJvbSBsdF9kbG9wZW4oKSBhbmQgY2hhbmdlZCB0byBoYXZlIHRoZQoJc2FtZSBmb290cHJpbnQgYXMgdHJ5YWxsX2Rsb3Blbi4gIFRoaXMgaW52b2x2ZWQgYSBtaW5vciByZXdyaXRlIG9mCgltdWNoIG9mIHRoZSBpbnRlcm5hbHMgb2YgdGhpcyBmdW5jdGlvbi4KCShsdF9kbG9wZW4pOiBBIG5ldyBmdW5jdGlvbiB3cmFwcGVkIGFyb3VuZiB0cnlfZGxvcGVuKCkuCgkobHRfZGxvcGVuZXh0KTogSWYgYSBmaWxlIGFscmVhZHkgaGFzIGEgc3VpdGFibGUgZXh0ZW5zaW9uLCBkb24ndAoJYm90aGVyIGFkZGluZyBhZGRpdGlvbmFsIGV4dGVuc2lvbnMgYW5kIHRyeWluZyB0byBvcGVuIHRob3NlLgoJVGlkeSB1cCB0aGUgcmVzdCBvZiB0aGUgY29kZSB0byBwcmV2ZW50IGNvbnRpbnVlZCBzZWFyY2hpbmcgd2l0aAoJYW4gZXZlbnR1YWwgRklMRV9OT1RfRk9VTkQgd2hlbiBhIGdlbnVpbmUgZmFpbHVyZSBlYXJsaWVyIGluIHRoZQoJc2VhcmNoIHByb2Nlc3MgY291bGQgYmUgbGVnaXRpbWF0ZWx5IHJlcG9ydGVkLgoKCSogbGlibHRkbC9sdGRsLmMgKGFyZ3pfY3JlYXRlX3NlcCk6IERvbid0IGZvcmdldCB0byBpbmNsdWRlIHRoZQoJdGVybWluYXRpbmcgJ1wwJyB3aGVuIGNvdW50aW5nIGFyZ3pfbGVuLgoJKGFyZ3pfY3JlYXRlX3NlcCk6IFdoZW4gY2Fub25pY2FsaXppbmcgYXJneiwgZG9uJ3QgZm9yZ2V0IHRvIGNvcHkKCXRoZSB0ZXJtaW5hdGluZyAnXDAnLCBpbmNhc2UgY2Fub25pY2FsaXphdGlvbiBoYXMgc2hvcnRlbmVkIGFyZ3ouCgkoYXJnel9zdHJpbmdpZnkpOiBEb24ndCBjb3ZlcnQgdGhlIGZpbmFsICdcMCcgdG8gYSBzZXBhcmF0b3IuCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxoYW5kbGVfbmV4dCk6IE5vdyB3ZSBjYW4gbG9vcCB0aHJvdWdoIGFsbAoJbG9hZGVkIG1vZHVsZSBoYW5kbGVzIGFzIG9yaWdpbmFsbHkgaW50ZW5kZWQuCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxzZXRlcnJvcik6IE9vcHMuICBUaGlzIG5ldmVyIHdvcmtlZAoJZWl0aGVyLCBkdWUgdG8gYSBwYWlyIG9mIHR5cG9zLiAgTm93IGZpeGVkLgoKCSogbGlibHRkbC9sdGRsLmMgKE5fRUxFTUVOVFMpOiAgRGVsZXRlZC4gIEhvdyBjb21lIG5vYm9keSBub3RpY2VkCgl0aGVyZSB3YXMgbm8gd2F5IHRoaXMgY291bGQgaGF2ZSBldmVyIHdvcmtlZD8KCShsdF9kbGNhbGxlcl9zZXRfZGF0YSk6IE5vdyB0aGF0IHZhbGlkIGNhbGxlcl9pZHMgbXVzdCBiZQoJbm9uLXplcm8sIGFsbG9jYXRlIGFuIGFkZGl0aW9uIGVudHJ5IGluIHRoZSBjYWxsZXJfZGF0YSB2ZWN0b3IgYW5kCgl1c2UgYSB6ZXJvIHZhbHVlZCBrZXkgYXMgdGhlIGVuZCBtYXJrZXIuCgkobHRfZGxjYWxsZXJfZ2V0X2RhdGEpOiBJdGVyYXRlIHVwIHRvIHRoZSBlbmQgbWFya2VyIGluIG9uZSBwYXNzLgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsY2FsbGVyX3JlZ2lzdGVyKTogQ2FsbGVyIGlkcyBhcmUgYWxsb2NhdGVkCglzdGFydGluZyBmcm9tIHZhbHVlIGAxJywgc28gdGhhdCBjbGllbnRzIGNhbiB1c2UgYSB2YWx1ZSBvZiB6ZXJvCgl0byBpbmRpY2F0ZSB0aGF0IGxpYmx0ZGwgaGFzIG5vdCB5ZXQgaW5pdGlhbGlzZWQuCgoJKiBsaWJsdGRsL2x0ZGwuYyAoZmluZF9maWxlX2NhbGxiYWNrKTogRml4IGEgbXVsdGlwbGUgZnJlZSgpCglidWcuCgkodHJ5YWxsX2Rsb3Blbl9tb2R1bGUpOiBSZW1vdmUgc29tZSB1bnVzZWQgdmFyaWFibGVzLgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsaW5zZXJ0c2VhcmNoZGlyKTogQ2FsY3VsYXRlIHRoZSBhZGRyZXNzCglvZiB0aGUgZW5kIG9mIHVzZXJfc2VhcmNoX3BhdGggY29ycmVjdGx5LgoKCSogbGlibHRkbC9sdGRsLmMgKHJwbF9hcmd6X3N0cmluZ2lmeSk6IE5ldyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbi4KCSogbHRkbC5tNCAoQUNfTFRETF9GVU5DX0FSR1opOiAgVGVzdCBmb3IgYXJnel9zdHJpbmdpZnkgaW4gbGliYy4KCSogbGlibHRkbC9sdGRsLmMgKGx0X2FyZ3pfaW5zZXJ0aW5vcmRlcik6IFJlbmFtZWQgZnJvbQoJbHRfYXJnel9pbnNlcnQgdG8gbWFrZSByb29tIGZvci4uLgoJKGx0X2FyZ3pfaW5zZXJ0KTogV3JhcHMgYXJnel9pbnNlcnQgd2l0aCBsaWJsdGRsIGVycm9yIGhhbmRsaW5nLgoJKGx0X2RscGF0aF9pbnNlcnRkaXIpOiBJbnNlcnQgbmV3IHBhdGggZWxlbWVudHMgaW50byBhbgoJYXJneml6ZWQgcGF0aC4KCShsdF9kbGluc2VydHNlYXJjaGRpcik6IE5ldyBmdW5jdGlvbiB0byBpbnNlcnQgbmV3IHNlYXJjaAoJZGlyZWN0b3JpZXMgYW55d2hlcmUgaW50byB1c2VyX3NlYXJjaF9wYXRoIHVzaW5nIHRoZSBhYm92ZS4KCShsdF9kbGFkZHNlYXJjaGRpcik6IFJld3JpdHRlbiB0byB1c2UgbHRfZGxwYXRoX2luc2VydGRpci4KCSogbGlibHRkbC9sdGRsLmggKGx0X2RsaW5zZXJ0c2VhcmNoZGlyKTogUHJvdG90eXBlIGZvciBleHBvcnQuCgkqIGRvYy9saWJ0b29sLnRleGkgKExpYmx0ZGwgaW50ZXJmYWNlKTogRG9jdW1lbnQgaXQuCgoyMDAxLTA4LTE4ICBCcmFkICA8YnJhZEBjb21zdHlsZS5jb20+CgoJKiBsdG1haW4uaW46IERvIG5vdCByZW1vdmUgLWxtIGZyb20gZGVwbGlicyBmb3IgT3BlbkJTRC4KCjIwMDEtMDgtMDUgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIEJyYWQgPGJyYWRAY29tc3R5bGUuY29tPjoKCSogbGlidG9vbC5tNCAoYXJjaGl2ZV9jbWRzKSBbZGFyd2luLCBuZXdzb3MsIHN5c3Y0XTogUmVwbGFjZQoJMS4zIGVyYSAkbGlua29wdHMgcmVmZXJlbmNlcyB3aXRoICRsaW5rZXJfZmxhZ3MuCgoJRnJvbSBCcmFkIDxicmFkQGNvbXN0eWxlLmNvbT46CgkqIGxpYnRvb2wubTQgW29wZW5ic2RdOiAgT3BlbkJTRCBjYW4gYnVpbGQgbW9kdWxlcyB3aXRob3V0IGEgYGxpYicKCXByZWZpeCBhbmQgdmVyc2lvbiBudW1iZXIuCgoyMDAxLTA4LTA0ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBFZG91YXJkIEcuIFBhcm1lbGFuIDxlZ3BAZnJlZS5mcj4KCSogbGlidG9vbC5tNCBbZGFyd2luLCBvcGVuYnNkXTogRml4IHF1b3RpbmcgcHJvYmxlbXMgd2l0aAoJdW5xdW90ZWQgW10gZXhwcmVzc2lvbnMuCgoyMDAxLTA3LTI5ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogUHJlZmVyIHNobF9sb2FkIHRvIGRsb3BlbglvbiBIUC1VWCBiZWNhdXNlCglkbG9wZW4gd29uJ3Qgd29yayBwcm9wZXJseSB3aXRob3V0IGEgcGF0Y2guCgoyMDAxLTA3LTEyICBEYW4gTWNOaWNob2wgIDxtY25pY2hvbEBhdXN0aW4uaWJtLmNvbT4KCglGcm9tIGFsYmVydCBjaGluIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgkqIGxpYnRvb2wubTQ6IEZpeCBBSVggcnVuLXRpbWUtbGlua2luZyB3aGVuIHVzaW5nIGdjYy4KCglGcm9tIGFsYmVydCBjaGluIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgkqIGx0bWFpbi5pbjogRml4IGEgY2FzZSB3aGVyZSB0aGUgbG9ja2ZpbGUgaXMgbm90IHJlbW92ZWQsIHRodXMKCWNhdXNpbmcgbGlidG9vbCB0byBsb29wIGZvcmV2ZXIgd2FpdGluZyBmb3IgaXQgdG8gYmUgcmVtb3ZlZC4KCjIwMDEtMDctMDUgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogIFJldmVydCB0byAxLjMueAoJc2VtYXRpY3MsIGFuZCBhbHdheXMgYnVpbGQgc3RhdGljIGxpYnMgd2hlbiB0aGUgaG9zdCBtYWNoaW5lCgljYW5ub3QgYnVpbGQgc2hhcmVkIGxpYnMuICBFdmVuIGlmIHN0YXRpYyBsaWJzIHdlcmUgZXhwbGljaXRseQoJZGlzYWJsZWQuCgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUpIFtIUFVYXTogRGVmaW5lCglsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyB0byBiZSBhIHNlZCBleHByZXNzaW9uCglmb3IgbWFuZ2xpbmcgdGhlIG91dHB1dCBvZiB0aGUgc3ltYm9sIHBpcGUgaW50byBhIGJyYWNlIGRlbGltaXRlZAoJQyBkZWNsYXJhdGlvbiBvZiBzeW1ib2wgbmFtZSBhbmQgYWRkcmVzcy4KCSogbHRtYWluLmluOiBVc2UgaXQgdG8gZ2VuZXJhdGUgdGhlIGZvb1MuYyBzeW1ib2wgbmFtZSB0byBhZGRyZXNzCgltYXAuCgoyMDAxLTA2LTMwICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJUG9ydGluZyB0ZXN0IGltcHJvdmVtZW50cyBmcm9tIG11bHRpLWxhbmd1YWdlLWJyYW5jaDoKCSogdGVzdHMvZGVmczogRmluZCBhbmQgc2V0IHRoZSB2YWx1ZSBvZiBDQyBwcm9iZWQgYnkgbGlidG9vbC5tNAoJKiB0ZXN0cy9saW5rLTIudGVzdDogVXNlIGEgLmxvIHdyYXBwZXIgc2NyaXB0LCBhbmQgdGhlIHZhbHVlIG9mCglDQyBzZXQgYnkgZGVmcyBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgZ2NjLgoJKiB0ZXN0cy9saW5rLnRlc3Q6IFVzZSB0aGUgdmFsdWUgb2YgQ0Mgc2V0IGJ5IGRlZnMgaW5zdGVhZCBvZgoJaGFyZGNvZGluZyBnY2MuCgkqIHRlc3RzL3F1b3RlLnRlc3Q6IERpdHRvLgoJKiB0ZXN0cy9zdWZmaXgudGVzdDogRGl0dG8uCgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSykgW2FpeCpdOiBBbHdheXMgc2V0CglsdF9wcm9nX2NvbXBpbGVyX3dsIHRvIGAtV2wnLgoJUmVwb3J0ZWQgYnkgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCjIwMDEtMDYtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIFRpbSBWYW4gSG9sZGVyIDx0aW0udmFuLmhvbGRlckBwYW5kb3JhLmJlPgoJKiB0ZXN0cy9zdWZmaXgudGVzdDogVHlwbyBpbiAybmQgZm9yIGxvb3AuCgoJRnJvbSBCcnVubyBIYWlibGUgPGhhaWJsZUBpbG9nLmZyPgoJKiBsaWJ0b29sLm00OiAgdW5kZWZpbmUgdGhlIG00IGJ1aWx0aW4gYHN5bWJvbHMnLCBzbyB0aGF0IHRoZQoJc3RyaW5nIGBzeW1ib2xzJyBjYW4gYmUgdXNlZCBpbiB0aGUgcmVzdCBvZiB0aGUgY29kZSB3aXRob3V0CgljYXVzaW5nIGVycm9ycyB3aXRoIGF1dG9jb25mLTIuMTMuCgoJRnJvbSAiR29sdWJldiBJLiBOLiIgPGdpbkBtby5tc2sucnU+CgkqIHRlc3RzL01ha2VmaWxlLmFtIChDUFBMQUdTKTogVHlwby4gcy9DUFBMQUdTL0NQUEZMQUdTLgoKCSogbWRlbW8vTWFrZWZpbGUsYW0gKGZvbzFfbGFfTElCQUREKTogQWRkIGxpYnN1Yi5sYSwgc2luY2UgZm9vMQoJZG9lcyB1c2Ugc3ltYm9scyBmcm9tIGxpYnN1Yi5sYSAtLSBvbmx5IHBsYXRmb3JtcyB0aGF0IGFsbG93Cgl1bmRlZmluZWQgc3ltYm9scyBpbiBsaWJyYXJpZXMgd2VyZSBhYmxlIHRvIGNvcGUgd2l0aCB0aGlzCglwcmV2aW91c2x5LgoJUmVwb3J0ZWQgYnkgUm9iZXJ0IENvbGxpbnMgPHJvYmVydC5jb2xsaW5zQGl0ZG9tYWluLmNvbS5hdT4KCglGcm9tICJHb2x1YmV2IEkuIE4uIiA8Z2luQG1vLm1zay5ydT4KCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUykgW3NjbzMuMnY1Kl06IE5lZWRzCgktd2wsLUJleHBvcnQgdG8gbWFrZSBzZWxmIGRsb3BlbiB3b3JrLgoKCUZyb20gQ2hyaXMgTGVpc2htYW4gPGNocmlzQHNoYXJpbmdhLmNvbT4KCSogbGlidG9vbCxtNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spIFtkYXJ3aW5dOiAgQ2hlYXAgaGFjayB0bwoJaGVscCBmYWtlIGEgQysrIGNvbXBpbGF0aW9uLgoKCUZyb20gQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4KCSogTkVXUzogVXBkYXRlZC4KCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiAgTWFrZSBzdXJlIGFjX29iamV4dCBpcwoJc2V0IHRvIGBsbycgd2hlbiB0ZXN0aW5nIGZvciBjb21waWxlciBvdXRwdXQgdG8gKi5sbyBmaWxlbmFtZXMuCgoyMDAxLTA2LTI4ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSAgQWxleGFuZGVyIEJsdWhtICA8QWxleGFuZGVyLkJsdWhtQFdpcmVkTWluZHMuZGU+CgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBGaXggYmFkIG1lbW9yeSBpbml0aWFsaXNhdGlvbgoJYXNzdW1wdGlvbnMuCgoyMDAxLTA2LTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBicmFkQG9wZW5ic2Qub3JnOgoJKiBORVdTOiBVcGRhdGVkLgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSykgW29wZW5ic2RdOiBJbXByb3ZlZCBzdXBwb3J0Cglmb3IgdmFyaW91cyBvcGVuYnNkIHBsYXRmb3Jtcy4KCSogbHRtYWluLmluOiBEaXR0bywKCjIwMDEtMDUtMjAgIFBldGVyIEVpc2VudHJhdXQgIDxwZXRlcl9lQGdteC5uZXQ+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IEZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUuCgoyMDAxLTA1LTIwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQgKGFsbG93X3VuZGVmaW5lZF9mbGFnKSBbYWl4NCogfCBhaXg1Kl06IEZpeCBxdW90ZQoJZXJyb3IuCgoJKiBsdG1haW4uaW4gKGV4ZWNfY21kKTogTmV3IHZhcmlhYmxlLiAgRG9uJ3QgZXhlYyBwcm9ncmFtcyB3aXRoaW4KCXRoZSBiaWcgYGNhc2UnOyBzZXQgdGhlIHZhcmlhYmxlIGluc3RlYWQsIGFuZCBleGVjIHRoZSBjbWQKCWFmdGVyd2FyZHMsIHNvIHRoYXQgdGhlIHNoZWxsIGdldHMgYSBjaGFuY2UgdG8gY2xlYW4gdXAgaGVyZS1kb2MKCWZpbGVzLgoJKiBORVdTOiBVcGRhdGUuCgoyMDAxLTA1LTE2ICBBbGFuIE1vZHJhICA8YW1vZHJhQG9uZS5uZXQuYXU+CgoJKiBsaWJ0b29sLm00IChsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCk6IHBhc3NfYWxsIGZvciBocHBhKi1saW51eC4KCjIwMDEtMDUtMDMgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4sIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBsdG1haW4uaW4gKHJlbGlua19jb21tYW5kKTogQXJyYW5nZSBmb3Igd3JhcHBlciBzY3JpcHQgdG8gc2F2ZQoJb3V0cHV0IHRvIGEgdmFyaWFibGUgYW5kIGRpc3BsYXkgaXQgb25seSBpZiByZWxpbmtpbmcgZmFpbHMuCgoyMDAxLTA1LTAzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQnVtcGVkIHZlcnNpb24gdG8gMS40LjBhLgoKMjAwMS0wNC0yNSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJR05VIGxpYnRvb2wgMS40IHdhcyByZWxlYXNlZC4KCgkqIGNvbmZpZ3VyZS5pbjogQnVtcGVkIHZlcnNpb24gdG8gMS40LgoJKiBjb25maWcuc3ViLCBjb25maWcuZ3Vlc3M6ICBTeW5jaHJvbmlzZWQgZnJvbSBmdHAuZ251Lm9yZy4KCSogTkVXUzogdXBkYXRlZC4KCjIwMDEtMDQtMjQgIFBldGVyIEVpc2VudHJhdXQgIDxwZXRlcl9lQGdteC5uZXQ+CgoJKiBsaWJ0b29sLm00OiBTdXBwb3J0ICRob3N0X29zIGFzIC9zeXN2NXV3NyovIGZyb20gbmV3ZXIKCWNvbmZpZy5ndWVzcyBpbiBhZGRpdGlvbiB0byBvbGRlciAvdW5peHdhcmUqLy4gIFVzZSBjb21waWxlcgoJZHJpdmVyLCBub3QgbGlua2VyLCBmb3IgbGlua2luZyBzaGFyZWQgbGlicmFyaWVzLgoKMjAwMS0wNC0yNCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00LCBsdG1haW4uaW4sIGxpYmx0ZGwvY29uZmlndXJlLmluLAoJdGVzdHMvcXVvdGUudGVzdDogIFJlbW92ZSBzdGFsZSByZWZlcmVuY2VzIHRvIGx0Y29uZmlnLgoKCSogbHRkbC5tNCAoQUNfQ19JTkxJTkUpOiBObyBsb25nZXIgcmVxdWlyZWQuCgkqIGxpYmx0ZGwvbHRkbC5jIChzdHJkdXAsIHN0cmNtcCwgc3RyY2hyLCBzdHJyY2hyLCBtZW1jcHksIHRyaW0sCglmcmVlX3ZhcnMpOiAgUmV2b2tlIGlubGluZSBrZXl3b3JkIGZyb20gZGVjbGFyYXRpb25zLiAgYHN0YXRpYwoJaW5saW5lJyBpcyBub3QgdmVyeSBwb3J0YWJsZSwgYW5kIGluIGFkZGl0aW9uIFVuaXh3YXJlIDcuMS4xJ3MKCWNvbXBpbGVyIHNheXMgeW91IGNhbid0IGFjY2VzcyBzdGF0aWMgdmFyaWFibGVzIGZyb20gaW5saW5lCglmdW5jdGlvbnMuCglSZXBvcnRlZCBieSBQZXRlciBFaXNlbnRyYXV0ICA8cGV0ZXJfZUBnbXgubmV0PgoKMjAwMS0wNC0yNCBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00OiBIYW5kbGUgY2FzZSB3aGVyZSAvYmluL25tIC1wIG91dHB1dHMgbXVsdGlwbGUKCXN5bWJvbCB0eXBlcyAobGlrZSB1bmRlciBIUC1VWCAxMS4wMCkuCgoyMDAxLTA0LTI0ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogVE9ETzogZGVzY3JpYmUgcHJvYmxlbXMgd2l0aCBsaWJsdGRsCgkqIGx0bWFpbi5pbiAoSUxEKTogdGlkeSB1cCwgYWRkIGNvbW1lbnRzLCByZW1vdmUgZGVhZCBjb2RlLAoJICBtZXJnZSBkdXBsaWNhdGUgY29kZQoJKiBsdG1haW4uaW4gKElMRCk6IGRvbid0IHRvdWNoIG5ld2RlcGVuZGVuY3lfbGlicyBhZnRlciBzY2FuIG9yCgkgIGRsb3BlbiBwYXNzCgkqIGx0bWFpbi5pbiAoSUxEKTogZG9uJ3QgZGxwcmVvcGVuIGRlcGVuZGVuY3lfbGlicyBvZiBhIGRsb3BlbmVkCgkgIG1vZHVsZSAocmVtb3ZlIGFic29sdXRlbHkgd3JvbmcgcXVpY2sgaGFjaykKCSogbHRtYWluLmluIChJTEQpOiByZW1vdmUgd3JvbmcgY29tbWVudHMgYWJvdXQgZHVwbGljYXRlIHJlbW92YWwKCSogbHRtYWluLmluIChJTEQpOiBidWlsZCBhIHN0YXRpYy1vbmx5IG1vZHVsZSBpZiBpdCBoYXMKCSAgc3RhdGljIGxpYnJhcmllcyBpbiBpdHMgZGVwZW5kZW5jaWVzIChzbyB0aGF0IGxpYmx0ZGwgY2FuCgkgIHNhZmVseSBsb2FkIGRlcGVuZGVuY3lfbGlicykKCSogbHRtYWluLmluIChhcmd1bWVudCBwYXJzaW5nKTogcHJlZml4IGNvbXBhcnNpb25zIG9mIC1sIGFyZ3Mgd2l0aCBYLAoJICByZXBsYWNlIC1sYyB3aXRoIGAtZnJhbWV3b3JrIFN5c3RlbScgX2FmdGVyXyB0aGUgSUxEIHBhc3NlcwoJKiBsdG1haW4uaW4gKGFyZ3VtZW50IHBhcnNpbmcpOiBzdXBwb3J0IGRsW3ByZV1vcGVuCgkgIGZvciBib3RoIC5vIGFuZCAubG8gZmlsZXMKCSogbHRtYWluLmluIChkZXBsaWJzX2NoZWNrKTogdXNlIHBvcnRhYmxlIHRlc3Qgc3ludGF4CgkqIGx0bWFpbi5pbiAoaGVscCk6IGRvY3VtZW50IC1wcmVmZXItW25vbi1dcGljIGZsYWdzCgkqIGx0bWFpbi5pbjogaW1wcm92ZSByZWFkYWJsaXR5IGJ5IGFkZGluZyBzb21lIGNvbW1lbnRzLAoJICByZW5hbWUgdW5pbnN0XyogdG8gbm90aW5zdF8qIChtb3JlIGFkZXF1YXRlIG5hbWUpCgoyMDAxLTA0LTI0ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGRvYy9QTEFURk9STVM6ICBNb3JlIHVwZGF0ZXMgZnJvbSBzdWJzY3JpYmVycyB0bwoJbGlidG9vbEBnbnUub3JnLgoKCUZyb20gVGltIE1vb25leSA8bW9vbmV5QGRvZ2JlcnQuY2MubmRzdS5Ob0Rhay5lZHU+CgkqIHRlc3RzL01ha2VmaWxlLmFtIChURVNUU19FTlZJUk9OTUVOVCk6IE1ha2Ugc3VyZSB0aGUgKi50ZXN0CglzY3JpcHRzIGdldCB0aGUgc2FtZSBtYWtlIHRoYXQgd2FzIHVzZWQgaW4gdGhlIHRvcCBsZXZlbAoJZGlyZWN0b3J5LgoKMjAwMS0wNC0yMyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvUExBVEZPUk1TOiAgVXBkYXRlZCB3aXRoIG1vcmUgcGxhdGZvcm1zIHN1Y2Nlc3NmdWxseQoJdGVzdGVkIGJ5IG1lbWJlcnMgb2YgbGlidG9vbEBnbnUub3JnLgoKMjAwMS0wNC0yMyAgUGV0ZXIgRWlzZW50cmF1dCAgPHBldGVyX2VAZ214Lm5ldD4KCgkqIGRvYy9QTEFURk9STVM6ICBXaXRoIHRoaXMgcGF0Y2gsIGZyZWVic2Q0LjMgcGFzc2VzIHRoZSB0ZXN0CglzdWl0ZS4KCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsZXhpdCk6IFF1aXQgbG9vcCBpZiBvbmx5IHJlc2lkZW50IG1vZHVsZXMKCWFyZSBsZWZ0LgoKMjAwMS0wNC0yMyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvUExBVEZPUk1TOiAgV2l0aCB0aGlzIHBhdGNoLCBteSBTb2xhcmlzIGJveGVzIG5vdyBwYXNzIHRoZQoJdGVzdCBzdWl0ZSwgIFlheSEKCUZyb20gQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoJKiBsdG1haW4uaW46ICBgdGVzdCAtTCcgaXMgbm90IHBvcnRhYmxlLCBhbmQgaW5mYWN0IGJyZWFrcyB1bmluc3RhbGwKCW1vZGUgb24gU29sYXJpcy4gIEZhbGxiYWNrIHRvIGB0ZXN0IC1oJyBhbmQgZmluYWxseSBgdGVzdCAtZicsCglidXQgYmUgY2FyZWZ1bCBub3QgdG8gbGV0IHRoZSBmYWlsdXJlIHN0YXR1cyBjYXVzZSBsaWJ0b29sIHRvCglzdG9wLgoKCUZyb20gU2ltb24gU3Blcm8gPHNlc0BpYmlibGlvLm9yZz4KCSogbHRkbC5tNCAoQUNfTFRETF9ETFNZTV9VU0NPUkUpOiAgQWRkICRMSUJBRERfREwgd2hpbGUKCWNoZWNraW5nIGZvciBkbHN5bSBfLgoKCUZyb20gU2ltb24gU3Blcm8gPHNlc0BpYmlibGlvLm9yZz4KCSogbGlidG9vbC5tNCAobHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QpIFtkYXJ3aW5dOiBTZXQgaXQhCgoJKiBUT0RPOiBNYWtlIGEgbm90ZSB0byB1bmRvIHRoaXMgbGF0ZXIuCglGcm9tIENocmlzdG9waCBQZmlzdGVyZXIgPGNwQGNocmlzcC5kZT4KCSogbGlidG9vbC5tNDogVXNlICQoKSBleGVjdXRpb24gc3Vic3RpdHV0aW9uIHF1b3RhdGlvbiB0byB3b3JrCglhcm91bmQgenNoIGJ1aWx0aW4gZWNobyBcIGVzY2FwZSByZW1vdmFsLgoKMjAwMS0wNC0yMiAgUGV0ZXIgRWlzZW50cmF1dCAgPHBldGVyX2VAZ214Lm5ldD4KCgkqIGJvb3RzdHJhcDogQWxsb3cgb3ZlcnJpZGluZyB0aGUgbG9jYXRpb24gYWNsb2NhbCwgYXV0b21ha2UsCglhdXRvY29uZiwgYXV0b2hlYWRlciBmcm9tIHRoZSBlbnZpcm9ubWVudC4KCgkqIGRlbW8vTWFrZWZpbGUuYW06IEF1dG9tYWtlIDEuNGUgZG9lcyBub3QgYWxsb3cgYCs9JyBhc3NpZ25tZW50cwoJaWYgdGhlIHZhcmlhYmxlIHdhcyBub3Qgc2V0IHdpdGggYD0nIGVhcmxpZXIuICBgKz0nIHdhcyBub3QgdXNlZnVsCgloZXJlIGFueXdheS4KCjIwMDEtMDQtMjIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRkbC5tNCAoQUNfQ0hFQ0tfSEVBREVSUyk6IFVXNyBoYXMgc3lzL2RsLmgsIHNvIHdlIG11c3QKCWNoZWNrIGZvciB0aGF0IGhlcmUuCgkqIGxpYmx0ZGwvbHRkbC5jIChIQVZFX1NZU19ETF9IKTogIEluY2x1ZGUgaXQgaWYgbmVjZXNzYXJ5IGZvcgoJdGhlIGRsb3BlbiBsb2FkZXIuCglSZXBvcnRlZCBieSBNYXR0aGV3IFNjaGFsaXQgPG1zY2hhbGl0QHBhY2JlbGwubmV0PgoKCSogbGlidG9vbC5tNCAoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiAgVXNlIHBhc3NfYWxsIGZvcgoJdmFyaW91cyByZWxlYXNlcyBvZiBVbml4V2FyZSBhbmQgT3BlblNlcnZlciB0aGF0IHN1cHBvcnQgaXQuCglSZXBvcnRlZCBieSBNYXR0aGV3IFNjaGFsaXQgPG1zY2hhbGl0QHBhY2JlbGwubmV0PgoKCSogZG9jL1BMQVRGT1JNUzogIFVwZGF0ZWQgd2l0aCB2YXJpb3VzIHBsYXRmb3JtcyBzdWNjZXNzZnVsbHkKCXRlc3RlZCBieSBtZW1iZXJzIG9mIGxpYnRvb2xAZ251Lm9yZy4KCjIwMDEtMDQtMjEgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogVE9ETzogIHByb3Bvc2UgcGtnLWNvbmZpZyBtZXJnZS4KCjIwMDEtMDQtMjEgIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCgkqIGx0bWFpbi5pbjogQ29ycmVjdCBhbiBlcnJvciBpbiB5ZXN0ZXJkYXkncyBwYXRjaC4KCjIwMDEtMDQtMjAgIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCgkqIGxpYnRvb2wubTQ6IEltcHJvdmUgTmV0QlNEIHN1cHBvcnQuCgkqIGx0bWFpbi5pbjogZGl0dG8uCgoyMDAxLTA0LTE5ICBEYW4gTWNOaWNob2wgPG1jbmljaG9sQGF1c3Rpbi5pYm0uY29tPgoKCSogbGlidG9vbC5tNDogQnVpbGQgc3RhbmRhcmQgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVggUE9XRVIKCW1vcmUgbGlrZSBBSVggZG9lcywgd2l0aCBhIHNoYXJlZCBvYmplY3QgYXJjaGl2ZWQgaW50byBsaWI8eHh4Pi5hLgoJT24gQUlYIC1iZXhwYWxsIGZsYWcgZG9lcyBzdHJhbmdlIHRoaW5ncy4uLiBEb24ndCB1c2UgaXQuCglGaXggcXVvdGVzIGFyb3VuZCAtYmVyb2sgZmxhZy4gIEFkZCBzdXBwb3J0IGZvciBBSVggNS4KCUFkZCBzdXBwb3J0IGZvciBydW4gdGltZSBsaW5raW5nIG9uIEFJWCBQT1dFUi4gKHNob3VsZCB3b3JrCglvbiBBSVggNC4yIGFuZCB1cCkuICBUdXJuIHRoaXMgZmVhdHVyZSBvbiBieSBhZGRpbmcgLWJydGwgZmxhZwoJdG8gTERfRkxBR1MuICBBZGQgc3VwcG9ydCBmb3IgQUlYIG9uIElBNjQuIE5vdGU6IEFJWCBvbiBJQTY0Cgl1c2VzIGEgU1lTViB0eXBlIGxpbmtlci4gIEFkZCBhIGNvbW1lbnQgdGVsbGluZyB3aGF0IHRvIGRvIGlmIHRoZQoJVE9DIHN0YXJ0cyBnZXR0aW5nIHRvbyBsYXJnZSBvbiBBSVguCgkqIE5FV1M6IG1lbnRpb24gYWl4NSBzdXBwb3J0LgoKMjAwMS0wNC0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBUT0RPOiBBZGQgLUwtIGZsYWcuCgoyMDAxLTA0LTExICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQgKG5vX3VuZGVmaW5lZF9mbGFnKSBbU29sYXJpcyBsZF06IENoYW5nZSB0byAtemRlZnMuCgoyMDAxLTA0LTExICBPc3NhbWEgT3RobWFuICA8b3NzYW1hQHVjaS5lZHU+CgoJKiBBVVRIT1JTOiBBZGRlZCBteXNlbGYgdG8gdGhlIGxpc3Qgb2YgbWFpbnRhaW5lcnMuCgoyMDAxLTA0LTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIG9zZjQvb3NmNSk6IFVzZSAke3dsfQoJdG8gcGFzcyAtcnBhdGggd2hlbiBjb21waWxpbmcgd2l0aCBnY2MuCglSZXBvcnRlZCBieSBUaW0gTW9vbmV5IDxtb29uZXlAZG9nYmVydC5jYy5uZHN1Lk5vRGFrLmVkdT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChzeXNfc2hsX29wZW4pOiBDYWNoZSBhIGhhbmRsZSBmb3IgdGhlIGBzZWxmJwoJbW9kdWxlLCBzaW5jZSBIUFVYIGFkZHMgbW9kdWxlIHN5bWJvbHMgaW50byB0aGUgYHNlbGYnIHBvb2wgaWYKCWl0IGlzIG9wZW5lZCBsYXRlci4gIFJldHVybiB0aGUgY2FjaGVkIHBvaW50ZXIgaWYgdGhlIGNhbGxlcgoJc3Vic2VxdWVudGx5IHRyaWVzIHRvIG9wZW4gYHNlbGYnLgoJKHN5c19zaGxfc3ltKTogRGlhZ25vc2UgTlVMTCBtb2R1bGVzLgoKCUZyb20gUGV0ZXIgRWlzZW50cmF1dCAgPHBldGVyX2VAZ214Lm5ldD4KCSogbHRtYWluLmluIChjbGVhbix1bmluc3RhbGwpOiB0ZXN0IC1lIGlzIG5vdCBwb3J0YWJsZS4gIFdlbGwsCgluZWl0aGVyIGlzIC1MLCBidXQgSSdtIGhvcGluZyB0aGF0IHJlZGlyZWN0aW5nIGVycm9yIG1lc3NhZ2VzCgl0byAvZGV2L251bGwgYW5kIHJlbHlpbmcgb24gbm9uLXplcm8gZXhpdCBzdGF0dXMgd2lsbCB3b3JrIG9rYXkKCW9uIHRoZSBmZXcgaG9zdHMgdGhhdCBkb24ndCBzdXBwb3J0IC1MLgoKMjAwMS0wNC0wOCAgTmljayBIdWRzb24gIDxza3JsbEBuZXRic2Qub3JnPgoKCSogbHRtYWluLmluOiBJbXByb3ZlIGNoZWNrIGZvciB2YWxpZCAtdmVyc2lvbi1pbmZvIHBhcmFtZXRlci4KCjIwMDEtMDQtMDggIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCUZyb20gTmljayBIdWRzb24gIDxza3JsbEBuZXRic2Qub3JnPgoJKiBkb2MvTWFrZWZpbGUuYW0gKGxpYnRvb2xfVEVYSU5GT1MpOiBBZGQgZmRsLnRleGkgc28gdGhhdCBpdAoJaXMgaW5jbHVkZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KCjIwMDEtMDQtMDcgIFBldGVyIEVpc2VudHJhdXQgIDxwZXRlcl9lQGdteC5uZXQ+CgoJKiBsdG1haW4uaW4gKGNsZWFuLHVuaW5zdGFsbCk6IERvIG5vdCBlcnJvciBpZiB0aGUgZmlsZSBkb2Vzbid0CglleGlzdCBhbmQgJ3JtIC1mJyB3YXMgdXNlZC4gIEV4aXQgd2l0aCBzdGF0dXMgMSBvbiBlcnJvci4KCjIwMDEtMDQtMDYgIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCgkqIGx0bWFpbi5pbjogSW1wbGVtZW50IGEgbmV3IGRlcGxpYnNfY2hlY2tfbWV0aG9kIGNhbGxlZAoJbWF0Y2hfcGF0dGVybiB0aGF0IGRvZXMgcGF0dGVybiBtYXRjaGluZyBvbiBmaWxlbmFtZXMuLi4KCSogbGlidG9vbC5tNDogLi4udXNlIGl0IHdpdGggTmV0QlNECgoyMDAxLTA0LTA1ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGRvYy9saWJ0b29sLnRleGkgKE11bHRpcGxlIGRlcGVuZGVuY2llcyk6IEEgbm90ZSBhYm91dCB0aGUKCXByb2JsZW1zIEkndmUgcmVpbnRyb2R1Y2VkIGJ5IHJldmVydGluZyB0aGUgbXkgcGF0Y2ggb2YgMjAwMS0wMy0zMS4KCglGcm9tIEVkd2FyZCBMZWUgPHRhaWxiZXJ0QHlhaG9vLmNvbT4KCSogbGlidG9vbC5tNDogVHlwb3MuCgoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBEZWxldGUgcmVmZXJlbmNlcyB0byBkZXBkZW1vLWR1cHMudGVzdC4KCSogdGVzdHMvZGVwZGVtby1kdXBzLnRlc3Q6ICBSZW1vdmVkLCBhcyBwYXJ0IG9mIHRoZSBwYXRjaAoJcmV2ZXJzaW9uIGJlbG93LgoJKiBsdG1haW4uaW46IFJldmVydCBteSBjaGFuZ2UgZnJvbSAyMDAxLTAzLTMxLiAgQWx0aG91Z2ggaXQKCXdhcyB0ZWNobmljYWxseSBjb3JyZWN0LCBpdCBvcGVucyBhIHdob2xlIGNhbiBvZiB3b3JtcyB3ZSBkb24ndAoJd2FudCB0byBkZWFsIHdpdGggcmlnaHQgbm93LgoKCUZyb20gQWhtZWQgTWFzdWQgPG1hc3VkQGdvb2dndW4uY29tPgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3lzX3NobF9vcGVuKTogIFJldHVybiBhIE5VTEwgbW9kdWxlIGhhbmRsZQoJZm9yIHNlbGYgb3BlbmluZy4KCShzeXNfc2hsX2Nsb3NlKTogIEJlIGNhcmVmdWwgbm90IHRvIGNsb3NlIGEgTlVMTCBtb2R1bGUgaGFuZGxlLgoJKHN5c19zaGxfc3ltKTogIEFsbG93IHNobF9maW5kc3ltKCkgdG8gb3BlbiBOVUxMIG1vZHVsZXMsIGJ1dAoJZGlzY2FyZCB0aGUgbW9kaWZpZWQgbW9kdWxlIGFkZHJlc3MgaXQgcmV0dXJucy4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiAgV2hlbiByZWFkaW5nIHRoZSAubGEgZmlsZSwKCXJlYWxsb2NhdGUgdGhlIGxpbmUgYnVmZmVyIHNpemUgaWYgdGhlIGxpbmUgb3ZlcmZsb3dzIHRoZQoJb3JpZ2luYWwgYnVmZmVyLgoJUmVwb3J0ZWQgYnkgTmljayBIdWRzb24gPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBORVdTICgxLjNkKSBSZW1vdmVkIGJvZ3VzIGx0Y29uZmlnIHJlZmVyZW5jZS4KCjIwMDEtMDQtMDMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiAgUmVtb3ZlIHRoZSBzcHVyaW91cwoJYGRubCcgZnJvbSB0aGUgaGVscCB0ZXh0IG9mIC0td2l0aC1waWMuCglSZXBvcnRlZCBieSBzdGVmYW4gPHN0ZWZhbkBsa2NjLm9yZz4KCjIwMDEtMDQtMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogY29uZmlndXJlLmluOiBidW1wZWQgdmVyc2lvbiB0byAxLjNlLgoKCUdOVSBsaWJ0b29sIDEuM2Qgd2FzIHJlbGVhc2VkLgoKCSogTkVXUzogaW5zZXJ0ZWQgdG9kYXlzIGRhdGUuCgoyMDAxLTA0LTAxICBDaHJpc3RvcGggUGZpc3RlcmVyICA8Y3BAY2hyaXNwLmRlPgoKCSogbGlidG9vbC5tNDogRml4ZWQgc3VwcG9ydCBmb3IgRGFyd2luIGFuZCBSaGFwc29keS4gTm93IGNvcnJlY3RseQoJaGFyZGNvZGVzIHRoZSBsaWJyYXJ5IHBhdGggYW5kIGFkZHMgdmVyc2lvbmluZy4gT3RoZXIgc21hbGwKCWZpeGVzLgoJKiBsdG1haW4uaW46IEZpeGVkIHNwZWNpYWwgY2FzZXMgZm9yIGxpYmMgYW5kIGxpYm0gb24gUmhhcHNvZHkgYW5kCglEYXJ3aW4uIE9uZSBvZiB0aGVtIHdhcyBtaXNwbGFjZWQuIEFkZGVkIHZlcnNpb25fdHlwZSBjYXNlIGZvcgoJUmhhcHNvZHkgYW5kIERhcndpbiwgbmFtZWQgImRhcndpbiIuCgoyMDAxLTAzLTMxICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0bWFpbi5pbjogUmVtb3ZlIHRoZSBjb2RlIGZvciBzdHJpcHBpbmcgZHVwbGljYXRlIGRlcGxpYnMKCWZyb20gbGlidG9vbCBsaW5rIGxpbmVzIC0tIGR1cGxpY2F0ZXMgYXJlIHNvbXRpbWVzIG5lY2Vzc2FyeQoJdG8gc2F0aXNmeSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcywgYW5kIG5ldmVyIGNhdXNlIGxpbmsgdG8KCWZhaWwgZXZlbiBpZiB0aGV5IGFyZSBzcHVyaW91cy4KCSogdGVzdHMvZGVwZGVtby1kdXBzLnRlc3Q6IE5ldyBmaWxlLiAgTWFrZSBzdXJlIHRoaXMgYnVnIGRvZXNuJ3QKCWNyZWVwIGJhY2sgaW4gYWdhaW4hCgkqIHRlc3RzL01ha2VmaWxlLmFtIChURVNUUyk6IFVzZSB0aGUgbmV3IHRlc3QgYWJvdmUuCgoyMDAxLTAzLTI5ICBFZHdhcmQgTS4gTGVlICA8dGFpbGJlcnRAeWFob28uY29tPgoKCSogbGlidG9vbGl6ZS5pbjogQ2hlY2sgY29uZmlndXJlLmFjIGFuZCBwcmVmZXIgY29uZmlndXJlLmFjIHRvCgljb25maWd1cmUuaW4uCgoJKiBsaWJ0b29saXplLmluOiBjaGFuZ2UgcmVjb21tZW5kYXRpb24gZnJvbSBBTV9QUk9HX0xJQlRPT0wgdG8KCUFDX1BST0dfTElCVE9PTC4KCgkqIGxpYnRvb2wubTQ6IEdlbmVyYXRlIGRsbC9pbXBvcnQgbGlicmFyaWVzIGZvciBjeWd3aW4gYWNjb3JkaW5nCgl0byB0aGUgZm9sbG93aW5nOiBsaWJGT08uYSAoc3RhdGljIGxpYiksIGxpYkZPTy5kbGwuYSAoaW1wb3J0CglsaWIpLCBjeWdGT08tdmVyc2lvbi5kbGwgKGRsbCkuICBVcGRhdGUgcG9zdGluc3RhbGxfY21kcyBhbmQKCXBvc3R1bmluc3RhbGxfY21kcyB0byByZWZsZWN0IHRoaXMuCgkqIGx0bWFpbi5pbjogR2VuZXJhdGUgaW5zdGFsbGVkIC5sYSBmaWxlcyB3aXRoIGRsbmFtZXMgc2V0IHRvCgkuLi9iaW4vY3lnRk9PLXZlcnNpb24uZGxsIGZvciBub3JtYWwgZGxscy4gZGxscyBmb3IgbW9kdWxlcwoJcmVtYWluIHdpdGggdGhlIC5sYSBmaWxlLgoKCSogbGlibHRkbC9sdGRsLmM6ICBVc2Ugd2luZG93cyBwYXRocyB3aGlsZSBjYWxsaW5nIExvYWRMaWJyYXJ5LgoKMjAwMS0wMy0xNiAgQWxiZXJ0IENoaW4gIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsaWJ0b29sLm00IChzYXZlX0NQUEZMQUdTKTogRml4IHR5cG8uCgoyMDAxLTAzLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQgKGx0X2N2X2NvbXBpbGVyX2Nfbyk6IENhY2hlIGl0LgoJKGx0X2N2X2NvbXBpbGVyX29fbG8pOiBMaWtld2lzZS4KCjIwMDEtMDMtMDkgIFBldGVyIEVpc2VudHJhdXQgIDxwZXRlcl9lQGdteC5uZXQ+CgoJKiBsdG1haW4uaW4gKGNsZWFuKTogQXV0b21hdGljYWxseSByZW1vdmUgJG9iamRpciAodXN1YWxseSAnLmxpYnMnKS4KCjIwMDEtMDMtMDggIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKGxpYnJhcnlfbmFtZXNfc3BlYyk6IFVuZG8gbGF0aW4tMSBzcGFjZXMgSSBwYXN0ZWQKCWluIHllc3RlcmRheSBieSBtaXN0YWtlLgoKMjAwMS0wMy0wNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJRnJvbSBUb3IgTGlsbHF2aXN0IDx0bWxAaWtpLmZpPgoJKiBsaWJ0b29sLm00IChleHBvcnRfc3ltYm9scyk6IE9uIFdpbmRvd3MsIGlmIHRoZSBleHBvcnRfc3ltYm9scwoJZmlsZSAod2hpY2ggaGFzIGJlZW4gcGFzc2VkIHRvIGxpYnRvb2wgd2l0aCB0aGUgLWV4cG9ydC1zeW1ib2xzCgljb21tYW5kIGxpbmUgc3dpdGNoKSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlLCB1c2UgaXQgYXMgaXMuCgoJKiBsaWJ0b29sLm00IChsaWJyYXJ5X25hbWVzX3NwZWMpOiBVc2luZyBtNCBxdW90ZXMgY29ycmVjdGx5IHRoaXMKCXRpbWUgYXJvdW5kIQoKCUZyb20gVG9yIExpbGxxdmlzdCA8dG1sQGlraS5maT4KCSogbGlidG9vbC5tNCAobGlicmFyeV9uYW1lc19zcGVjKTogVXNlIGFuIGFwcHJvcHJpYXRlIGZpbGVuYW1lCglwcmVmaXggZm9yIGRsbHMgLS0gbGliIGZvciBtaW5ndzsgY3lnIGZvciBjeWd3aW47IHB3IGZvciBwdzMyLgoKMjAwMS0wMy0wNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChjYW5fYnVpbGRfc2hhcmVkKSBbQUlYIDQuWzAxXSwgR0NDXTogR0NDIHVwIHRvCgkyLjk2IGNhbid0IGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgcmVsaWFibHkuICBEaXNhYmxlIHRoZW0uCgoJKiBsdG1haW4uaW46IFdoZW4gZHJvcHBpbmcgZGVwZW5kZW5jaWVzIG9mIGEgLW5vLXVuZGVmaW5lZAoJbGlicmFyeSwgZ2l2ZSB1cCBvbiBidWlsZGluZyBhIHNoYXJlZCBsaWJyYXJ5LgoKMjAwMS0wMy0wNSAgQWtpbSBEZW1haWxsZSAgPGFraW1AZXBpdGEuZnI+CgoJKiBsdG1haW4uc2g6IERvbid0IHF1b3RlIHRoZSBhcmd1bWVudCBvZiBjYXNlL2VzYWMgYW5kCglhc3NpZ25tZW50cy4KCSogbGlidG9vbC5tNDogTGlrZXdpc2UuCgoyMDAxLTAzLTAzICBNYXJrdXMgRi5YLkouIE9iZXJodW1lciA8bWFya3VzQG9iZXJodW1lci5jb20+LAoJICAgIEFsZXhhbmRyZSBPbGl2YSA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBsaWJ0b29sLm00OiBBZGRlZCBleHBsaWNpdCByZXR1cm4gdHlwZSB0byBhbGwgQyBmdW5jdGlvbnMuCgoyMDAxLTAyLTIyICBHYXJ5IFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGRvYy9saWJ0b29sLnRleGkgKFRocmVhZCBTYWZldHkgaW4gbGlibHRkbCk6IE5ldyBub2RlIGRlc2NyaWJpbmcKCXRoZSAgYXBwbGljYXRpb24gdGhlIG5ldyBNVCBBUEkuCgkqIGxpYmx0ZGwvbHRkbC5oOiBQcm90b3R5cGVzLgoJKiBsaWJsdGRsL2x0ZGwuYzogVXNlIHRoZXNlIGZ1bmN0aW9ucyB0aHJvdWdob3V0IHRoZSByZXN0IG9mCgl0aGUgZmlsZSB0byBwcm92aWRlIHRocmVhZCBsb2NraW5nLgoJKGx0X2RsbXV0ZXhfcmVnaXN0ZXIpOiBOZXcgZnVuY3Rpb24gdG8gc2V0IGNhbGxiYWNrcyBmb3IKCW11bHRpLXRocmVhZGVkIGNhbGxzIGludG8gbGlibHRkbC4KCShsdF9kbF9tdXRleF9sb2NrKTogVHlwZSBvZiBhIGxvY2tpbmcgY2FsbGJhY2sgZnVuY3Rpb24uCgkobHRfZGxfbXV0ZXhfbG9jayk6IFR5cGUgb2YgYW4gdW5sb2NraW5nIGNhbGxiYWNrIGZ1bmN0aW9uLgoJKGx0X2RsX211dGV4X3NldGVycm9yKTogVHlwZSBvZiBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHNhdmUgdGhlCglsYXN0IGxpYmx0ZGwgZXJyb3IgbWVzc2FnZSBpbiB0aHJlYWQgbG9jYWwgc3RvcmFnZS4KCShsdF9kbF9tdXRleF9nZXRlcnJvcik6IFR5cGUgb2YgYSBjYWxsYmFjayBmdW5jdGlvbiB0byByZXRyaWV2ZQoJdGhlIGxhc3Qgc2F2ZWQgZXJyb3IgbWVzc2FnZSBmcm9tIHRocmVhZCBsb2NhbCBzdG9yYWdlLgoKMjAwMS0wMi0yMCAgR2FyeSBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxjYWxsZXJfcmVnaXN0ZXIpOiBkb250IHNldCBhbiB1bnNpZ25lZAoJdHlwZSB0byBhIG5lZ2F0aXZlIG51bWJlci4KCVJlcG9ydGVkIGJ5IEd1ZW50ZXIgTWlsbGFobiA8R3VlbnRlci5NaWxsYWhuQEluZm9ybWF0aWsuVFUtQ290dGJ1cy5ERT4KCjIwMDEtMDItMDUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCUZyb20gTmljayBIdWRzb24gPHNrcmxsQG5ldGJzZC5vcmc+CgkqIGx0ZGwubTQgKEFDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTKTogbmV0YnNkKiBpcyBhYmxlIHRvCglhdXRvbWF0aWNhbGx5IGxvYWQgbW9kdWxlIGRlcGxpYnMgd2l0aG91dCBhc3Npc3RhbmNlIGZyb20KCWxpYmx0ZGwuCgoyMDAxLTAyLTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsb2FkX2RlcGxpYnMpOiBNYWtlIHN1cmUgdGhlIGRlcGNvdW50IGlzIHJlc2V0LAoJZXZlbiB3aGVuIGRlcGxpYnMgYXJlIG5vdCB1c2VkIGJlY2F1c2Ugb2YgdGhlIHBhdGNoIGJlbG93LgoKCSogbHRkbC5tNCAoQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlMpOiBJZiB3ZSBrbm93IHRoYXQgdGhlIGhvc3QKCWFyY2hpdGVjdHVyZSBhdXRvbWF0aWNhbGx5IGxvYWRzIGRlcGxpYnMsIHRoZW4uLi4KCSogbGlibHRkbC9sdGRsLmMgKGxvYWRfZGVwbGlicyk6IC4uLmRvbid0IG1hbnVhbGx5IGxvYWQgZWFjaCBvbmUuCgoyMDAxLTAxLTMxICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIFRPRE86ICBVcGRhdGVkLgoKCSogbGlibHRkbC9sdGRsLmMgKGxvYWRfZGVwbGlicyk6IElmIGxvYWRpbmcgYSBkZXBsaWIgZmFpbHMsCglkb24ndCBzd2VhdCAtLSBpdCBtYXkgYmUgYSBsaWIgdGhhdCBpcyBhbHJlYWR5IHN0YXRpY2FsbHkgbGlua2VkCglpbnRvIHRoZSBsb2FkaW5nIGFwcGxpY2F0aW9uLgoKCSogbGlibHRkbC9sdGRsLmM6IENsZWFuIHVwIHRoZSBzaGFkb3dpbmcgb2YgdGhlIGdsb2JhbCBoYW5kbGVzCgl2YXJpYWJsZS4KCShMVF9ETFJFU0lERU5UX0ZMQUdTKTogQWRkIGV4dHJhIHBhcmVucyB0byBzYXRpc2Z5IC1XYWxsLgoJKGxvYWRfZGVwbGlicyk6ICBDYXN0IGlzc3BhY2UoKSBhcmd1bWVudCB0byBhbiBpbnQgdG8gc2F0aXNmeQoJLVdhbGwuCgoyMDAxLTAxLTMwICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIEFVVEhPUlM6IGFkZGVkIG15c2VsZiB0byB0aGUgbGlzdCBvZiBtYWludGFpbmVycy4KCjIwMDEtMDEtMjggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbGlibHRkbC9NYWtlZmlsZS5hbSAoQ0xFQU5GSUxFUyk6IENsZWFuIGNvbmRpdGlvbmFsbHktYnVpbHQKCWxpYnJhcmllcy4KCjIwMDEtMDEtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbGlidG9vbC5tNCAobGRfc2hsaWJzKSBbYWl4NCpdOiBEaXNhYmxlIG9uIHVua25vd24gQ1BVIHR5cGVzLgoKMjAwMS0wMS0wNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiBVcGRhdGVkLgoJKiBkb2MvbGlidG9vbC50ZXhpIChVc2VyIGRlZmluZWQgbW9kdWxlIGRhdGEpOiBVcGRhdGVkLgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxoYW5kbGVfbmV4dCk6IE5ldyBmdW5jdGlvbi4KCSogbGlibHRkbC9sdGRsLmggKGx0X2RsaGFuZGxlX25leHQpOiBQcm90b3R5cGVzLgoKMjAwMS0wMS0wNSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiBVcGRhdGVkLgoJKiBkb2MvbGlidG9vbC50ZXhpIChVc2VyIGRlZmluZWQgbW9kdWxlIGRhdGEpOiAgRG9jdW1lbnQgaXQgYWxsLgoJKiBsdGRsLm00OiAgQ2hlY2sgZm9yIG1lbWNweSwgb3IgZWxzZSBiY29weS4KCSogbHRkbC5jIChsdF9jYWxsZXJfZGF0YSk6IE5ldyB0eXBlLgoJKGx0X2RsX2hhbmRsZV9zdHJ1Y3QpOiBBZGQgYW4gbHRfY2FsbGVyX2RhdGEgZmllbGQuCgkobHRfZGxjYWxsZXJfcmVnaXN0ZXIsIGx0X2RsY2FsbGVyX3NldF9kYXRhLAoJbHRfZGxjYWxsZXJfZ2V0X2RhdGEpOiBOZXcgZnVuY3Rpb25zLgoJKHJwbF9tZW1jcHkpOiBBIG1pbmltYWwgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24uCgkocnBsX3JlYWxsb2MpOiBBIHJlYWxsb2MgaW1wbGVtZW50ZWQgd2l0aCBsdF9kbG1hbGxvYyBhbmQKCWx0X2RsZnJlZS4KCShMVF9ETE1BTExPQywgTFRfRExGUkVFLCBMVF9ETFJFQUxMT0MsIExUX0RMTUVNX1JFQVNTSUdOKToKCU5ldyBtZW1vcnkgaGFuZGxpbmcgY29udmVuaWVuY2UgbWFjcm9zLiAgVXNlIHRoZW0KCWFwcHJvcHJpYXRlbHkgdGhyb3VnaG91dCB0aGUgcmVzdCBvZiB0aGlzIGZpbGUuCgkqIGx0ZGwuaCAobHRfZGxjYWxsZXJfcmVnaXN0ZXIsIGx0X2RsY2FsbGVyX3NldF9kYXRhLAoJbHRfZGxjYWxsZXJfZ2V0X2RhdGEpOiBQcm90b3R5cGVkLgoKMjAwMS0wMS0wNCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuaDogIGZvcm1hdHRpbmcgY2hhbmdlLgoKMjAwMC0xMi0yMyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJRnJvbSB2dnZAdnN1LnJ1OgoJKiBkb2MvZmRsLnRleGkgKEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSk6IGNvbnRhaW5lZCBAYnllCgljb21tYW5kIHdoaWNoIHByZXZlbnRlZCBwYXJ0IG9mIGRvY3VtZW50IHRvIGJlIGdlbmVyYXRlZCAoaW5kaWNlcywKCWV0YykuCgkqIGRvYy9saWJ0b29sLnRleGkgKERscHJlb3BlbmluZyk6IHRoZSBAZGVmdHlwZXZhciBkaWQgbm90IGNvbnRhaW4KCWEgc3BhY2UgYWZ0ZXIgYSB0eXBlLgoKMjAwMC0xMi0yMiAgQWtpbSBEZW1haWxsZSAgPGFraW1AZXBpdGEuZnI+CgoJKiBsaWJ0b29sLm00OiBzL1sgXHRdKiQvLwoKMjAwMC0xMi0yMiAgQW5lZXNoIEt1bWFyIEsuViAgPGt2YW5lZXNoQGhvdG1haWwuY29tPgoKCSogbGlidG9vbC5tNCAoT1NGLzEpOiAgUmV2ZXJ0IG15IHBhdGNoIG9mIDIwMDAtMTItMTYuCgoyMDAwLTEyLTIwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGV4aXQpOiBXYXMgY2hlY2tpbmcgZm9yIHJlc2lkZW5jeSBvZiB0aGUKCXdyb25nIG1vZHVsZS4KCVJlcG9ydGVkIGJ5IFJvYmVydCBCb2VobmUgIDxyYm9laG5lQHJpY2FyZG8tdXMuY29tPgoKCSogbHRtYWluLmluIChkbHByZWZpbGVzKTogTm93IHRoYXQgYDIwMDAtMTItMTUgVXR6LVV3ZSBIYXVzJyBwYXRjaAoJYmVsb3cgY2FuIGRldGVjdCBwcmVvcGVuZWQgbGlicmFyeSBkZXBsaWJzIGNvcnJlY3RseSBpbiBsaWJsdGRsLAoJd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBsaWJ0b29sIGxpYnJhcnkgZGVwbGlicyBhcmUgYWxzbyBwcmVsb2FkZWQKCWludG8gdGhlIGJpbmFyeSBmb3IgdGhhdCBwaGFzZSB0byB3b3JrLgoKMjAwMC0xMi0xNiAgQW5lZXNoIEt1bWFyIEsuViAgPGt2YW5lZXNoQGhvdG1haWwuY29tPgoKCSogbGlidG9vbC5tNCAoT1NGLzEpOiBDaGFuZ2UgdGhlIHdheSB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoCgljb21waWxlciBvbiBhIFRydTY0IG1hY2hpbmUuCgoyMDAwLTEyLTE2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyk6IFVzZSB0ZXN0IGluc3RlYWQgb2YKCWBbJy4KCShhcmNoaXZlX2NtZHMpOiBBbmQgYW5vdGhlciBvbmUuCgoJKiBsaWJ0b29sLm00IChkYXJ3aW4qKTogRml4ZWQgYSBwYWlyIG9mIHN0dXBpZCB0eXBvcyBJIG1hZGUgaW4gdGhlCglsYXN0IHBhdGNoLgoKCSogbGlidG9vbC5tNCAoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiAgbW92ZWQgcm9ndWUgc2V0dGluZ3MgZnJvbQoJc2VxdWVudCwgbmNyIGFuZCBuZXdvczYgYmFjayBpbnRvIGhlcmUgZnJvbSBvdGhlciBtYWNyb3MuCgoyMDAwLTEyLTE2ICAgV2lsZnJlZG8gU2FuY2hleiAgPHdzYW5jaGV6QGFwcGxlLmNvbT4KCgkqIGxpYnRvb2wubTQ6IChkeWxkL2RhcndpbiopIE11Y2ggaW1wcm92ZWQgcG9ydC4KCSogbHRtYWluLmluOiAoZHlsZC9kYXJ3aW4qKSBNdWNoIGltcHJvdmVkIHBvcnQuCgoyMDAwLTEyLTE2ICBTYXNjaGEgU2NodW1hbm4gPHNhc2NoYUBzY2h1bWFubi5jeD4KCgkqIGxpYnRvb2wubTQ6IEFjY2VwdCBkYXJ3aW4gYXMgYW4gYWxpYXMgZm9yIHJoYXBzb2R5LgoJKiBsdG1haW4uaW46IGRpdHRvLgoKCSogbGlidG9vbC5tNCAoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiBVc2UgdGhlIEhQVVggMTAuMjAKCW1ldGhvZHMgdG8gY2hlY2sgZm9yIGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9uIEhQVVggMTEuCgoyMDAwLTEyLTE2ICBOaWNrIEh1ZHNvbiAgPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBsaWJ0b29sLm00IChuZXRic2QqLCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IEVuYWJsZSBJTEQgc3VwcG9ydAoJZm9yIE5ldEJTRCBhLm91dC4KCjIwMDAtMTItMTUgIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFKTogUmVuYW1lCglgYWNfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZScgYXMgYGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUnLgoJU2ltaWxhcmx5IHdpdGggYGx0X2N2X2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wKCShfTFRfQUNfTFRDT05GSUdfSEFDSyk6IFNpbWlsYXJseSB3aXRoIGBhY19jdl9wcm9nX2NjX3BpYycsCglgYWNfY3ZfcHJvZ19jY19zaGxpYicsIGBhY19jdl9wcm9nX2NjX3dsJywgYGFjX2N2X3Byb2dfY2Nfc3RhdGljJywKCWBhY19jdl9wcm9nX2NjX25vX2J1aWx0aW4nLCBgYWNfY3ZfcHJvZ19jY19jYW5fYnVpbGRfc2hhcmVkJywKCWBhY19jdl9wcm9nX2NjX3N0YXRpY193b3JrcycsIGBhY19jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYycuCgkoQUNfUEFUSF9UT09MX1BSRUZJWCk6IFNpbWlsYXJseSB3aXRoIGBhY19jdl9wYXRoX01BR0lDX0NNRCcKCShBQ19QUk9HX0xEKSA8YWNfY3ZfcGF0aF9MRD46IExpa2V3aXNlLgoJKEFDX1BST0dfTERfR05VKSA8YWNfY3ZfcHJvZ19nbnVfbGQ+OiBMaWtld2lzZS4KCShBQ19QUk9HX05NKSA8YWNfY3ZfcGF0aF9OTT46IExpa2V3aXNlLgoKMjAwMC0xMi0xNSAgVXR6LVV3ZSBIYXVzICA8aGF1c0BtYWlsLm1hdGgudW5pLW1hZ2RlYnVyZy5kZT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBDaGFuZ2VkICJkbF9kZXBlbmRlbmN5X2xpYnMiIGtleXdvcmQKCXRvICJkZXBlbmRlbmN5X2xpYnMiLgoKMjAwMC0xMi0xNCAgVG9kIE1pbGFtICA8dG1pbGFtQHRyYWNsYWJzLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGV4aXQpOiBSZXNldCB0aGUgbG9hZGVycyB2YWx1ZSB0byB6ZXJvIHdoZW4KCXRoZSBsYXN0IG1vZHVsZSBoYXMgYmVlbiB1bmxvYWRlZC4KCjIwMDAtMTItMTQgIE1pY2hhZWwgU2NobWl0eiAgPG1zY2htaXR6QGluYW1lLmNvbT4KCgkqIGxpYnRvb2wubTQ6IFBvcnQgdG8gKi1zbmktc3lzdjQgKFJlbGlhbnQgVW5peCkKCSogUkVBRE1FOiBhZGRlZCBSZWxpYW50IFVuaXggdG8gaHRlIGxpc3Qgb2Ygc3VwcG9ydGVkIHBsYXRmb3JtcwoJKiBkb2MvUExBVEZPUk1TOiBhZGRlZCBub3RlIG9uIHRlc3RzIG9uIFJlbGlhbnQgVW5peAoKMjAwMC0xMi0xNCAgTWFzYWhpcm8gTm9ib3JpICA8bm9ib3JpQHNzLnRpdGVjaC5hYy5qcD4KCgkqIFJFQURNRTogIFVwZGF0ZWQuCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGxpYnRvb2wubTQ6ICBOZXcgcG9ydCB0byBORVdTLU9TIFJlbGVhc2UgNi4KCjIwMDAtMTItMTQgIE5pY2sgSHVkc29uICA8c2tybGxAbmV0YnNkLm9yZz4KCgkqIGxpYnRvb2wubTQgKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMpOiAgUmVtb3ZlIGxpbmtlcgoJc3BlY2lmaWNhdGlvbiBmb3IgbmV0YnNkLgoKMjAwMC0xMi0xNCAgQWtpbSBEZW1haWxsZSAgPGFraW1AZXBpdGEuZnI+CgoJKiBsaWJ0b29sLm00OiAgRG9uJ3QgZGVwZW5kIG9uIEF1dG9jb25mIGludGVybmFsczoKCXMvYWNfY3ZfcHJvZ19nY2MvR0NDLy4KCjIwMDAtMTItMTQgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFKTogRG9uJ3QgZW1wdHkKCW91dCBhY19jdl9nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIGluc2lkZSB0aGUgbG9vcCwgaW5jYXNlIHdlCgluZWVkIHRvIGdvIGFyb3VuZCBhZ2FpbiBhbmQgdHJ5IHdpdGggdW5kZXJzY29yZSBwcmVmaXguCgkoX0xUX0FDX1RSWV9ETE9QRU5fU0VMRik6IE9uIHNvbWUgaG9zdHMgKGN5Z3dpbiBmb3IgaW5zdGFuY2UpCglzZWxmIGRsY2xvc2luZyB1bmxvYWRzIHRoZSBtYWluIHByb2dyYW0gYW5kIGNhdXNlcyBhIFNJR1NFR1YuICBTbwoJZG9uJ3QgZG8gaXQgZm9yIG5vdy4KCjIwMDAtMTItMDUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCU9oIE15ISBDeWd3aW4gc3VwcG9ydCBoYXMgYml0cm90dGVkIHdoaWxlIEkgd2FzIGxvb2tpbmcgdGhlIG90aGVyCgl3YXkuICBUaGlzIHNob3VsZCBmaXggaXQgc29tZToKCSogbGlidG9vbC5tNCAoZXh0cmFjdF9leHBzeW1zX2NtZHMpOiBUaGVyZSBpcyBhIHF1b3RpbmcgcHJvYmxlbQoJd2l0aCBhdXRvY29uZi0yLjEzIHRoYXQgcHJldmVudHMgWyRdMCBmcm9tIGV4cGFuZGluZy4gIFVzZSBzaGVsbAoJcXVvdGVzIGluc3RlYWQgdG8gZGVsYXkgZXZhbCBvZiAkMC4KCShpbXBnZW4uYykgVGhlICcjICcgc2VxdWVuY2Ugc3RyaXBwZWQgYnkgc2VkIHdvcmtzIGFnYWluLgoKMjAwMC0xMi0wMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaWJsdGRsIGludGVyZmFjZSk6ICBBZGQgZG9jdW1lbnRhdGlvbi4KCSogbGlibHRkbC9sdGRsLmggKGx0X2RsbWFrZXJlc2lkZW50LCBsdF9kbGlzcmVzaWRlbnQpOiAgQWRkCglwcm90b3R5cGVzLgoJKExUX0RMRVJST1JfQ0xPU0VfUkVTSURFTlRfTU9EVUxFKTogTmV3IGVycm9yIHN0YXR1cy4KCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsbWFrZXJlc2lkZW50LCBsdF9kbGlzcmVzaWRlbnQpOiAgQWxsb3cKCW1ha2luZyBhbmQgdGVzdGluZyBvZiByZXNpZGVudCBtb2R1bGUgc3RhdHVzLCB3aGljaCBwcmV2ZW50cyBhCgltb2R1bGUgZnJvbSBiZWluZyBsdF9kbGNsb3NlZC4KCShsdF9kbG9wZW4pOiAgSWYgbHRfZGxvcGVuKClpbmcgc2VsZiwgbWFrZSB0aGUgbW9kdWxlIHJlc2lkZW50LgoJKGx0X2RsY2xvc2UpOiAgUmV0dXJuIGFuIGVycm9yIGlmIHRoZSBtb2R1bGUgaXMgcmVzaWRlbnQuCgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IE1vdmUgdGhlIHRlc3RzIGZvciBkbG9wZW4KCWZyb20gaGVyZS4uLgoJKEFDX0xJQlRPT0xfRExPUEVOX1NFTEYpOiAuLi50byBoZXJlLgoJKF9MVF9BQ19DSEVDS19ETEZDTik6ICBGYWN0b3Igb3V0IHJlcGVhdGVkIGNvZGUgZm9yIGRsZmNuLmgKCShfTFRfQUNfVFJZX0RMT1BFTl9TRUxGKTogRmFjdG9yIG91dCByZXBlYXRlZCBjb2RlIGZvcgoJY2hlY2tpbmcgZGxvcGVuIHN0YXR1cy4KCSogbHRkbC5tNCAoQUNfTElCX0xUREwpOiAgVXNlIF9MVF9BQ19DSEVDS19ETEZDTi4KCWRsb3BlbiBjb21waWxlIHRpbWUgY2hlY2tpbmcuICBVc2UgX0xUX0FDX0NIRUNLX0RMRkNOLgoJKEFDX0xURExfRExTWU1fVVNDT1JFKTogIFVzZSBfTFRfQUNfVFJZX0RMT1BFTl9TRUxGLgoKMjAwMC0xMS0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRfZGxoYW5kbGUpOiBSZW5hbWUgdGhlIHdyYXBwZWQgc3RydWN0dXJlCgl0byBwcmV2ZW50IG5hbWVjbGFzaCB3aGVuIHVzZWQgZnJvbSBDKysuCgkqIGxpYmx0ZGwvbHRkbC5jOiBGaXhlZCBhbGwgcmVmZXJlbmNlcy4KCjIwMDAtMTEtMjUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsb3Blbik6ICBDaGFuZ2UgdGhlIGRlZmF1bHQgc2VhcmNoIG9yZGVyCglmb3IgbW9kdWxlcy4gIElmIHRoZSBuYW1lZCBtb2R1bGUgaGFzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsCglhbHdheXMgc3RhcnQgdGhlIHNlYXJjaCB3aXRoIHRoZSB1c2VyX3NlYXJjaF9wYXRoIGRpcmVjdG9yaWVzLAoJYW5kIHRoZW4gZmFsbCBiYWNrIG9uIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbmx5IGlmIHRoYXQgZmFpbHMuCgoyMDAwLTExLTIwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKGxpYmx0ZGxfbGFfTERGTEFHUyk6IGluY3JlbWVudCB0aGUgdmVyc2lvbgoJbnVtYmVyIHRvIHJlZmxlY3QgdGhlIGJyZWFrYWdlIG9mIGJpbmFyeSBjb21wYXRpYmlsaXR5LgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaWJsdGRsIGludGVyZmFjZSk6ICBEb2N1bWVudAoJTFRfTk9OX1BPU0lYX05BTUVTUEFDRS4KCSogbGlibHRkbC9sdGRsLmggKExUX1BPU0lYX05BTUVTUEFDRSk6ICBEZWxldGVkLiAgVGhlIGRlZmF1bHQgaXMKCW5vdyB0byB1c2UgdGhpcyBuYW1lc3BhY2UsIHNvIHRoZSBjcHAgbWFjcm8gaXMgbm8gbG9uZ2VyCgluZWNlc3NhcnkuCgoyMDAwLTExLTIwICBNb3J0ZW4gRXJpa3NlbiAgPG1vcnRlbmVAc2ltLm5vPgoKCSogbHRkbC5tNCAoQUNfTElCX0xUREwsIEFDX0xURExfU1lNQk9MX1VTQ09SRSk6IEJyZWFrIGEgY2lyY3VsYXIKCWRlcGVuZGVuY3kgYmV0d2VlbiBBQ19MVERMX1NZTUJPTF9VU0NPUkUgYW5kIEFDX0xURExfRExTWU1fVVNDT1JFLgoKMjAwMC0xMS0yMCAgUGF1bCBCZXJyZXZvZXRzICA8cGF1bEBzd2kuY29tPgoKCSogbHRtYWluLmluOiBTb21lIHZlcnNpb25zIG9mIGV4cHIgcmVzcG9uZCB3aXRoICIwIiBpZiBhCglyZWdleHAgZmFpbHMgdG8gbWF0Y2guCgoyMDAwLTExLTE5ICBQYXVsIEJlcnJldm9ldHMgIDxwYXVsQHN3aS5jb20+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IFF1b3RlIHRoZSAkIGluICQjLCAkMiBhbmQKCSQzIGluIHZhcmlhYmxlICdhcmNoaXZlX2V4cHN5bV9jbWRzJyBmb3IgY3lnd2luLgoKMjAwMC0xMS0xOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGRsLmM6IFJlbGVnYXRlIG5vbi1QT1NJWC1jb21wbGlhbnQgc3ltYm9scyAoZS5nLiB0aG9zZQoJZW5kaW5nIGluIGBgX3QnJykgdG8gZGVwcmVjYXRlZCAjZGVmaW5lIGNvbXBhdGliaWxpdHkgbWFjcm9zLgoJQWxzbyBlYXNlIHVwIG9uIHRoZSBuYW1lc3BhY2UgcG9sbHV0aW9uLCBzbyB0aGF0IG9ubHkgYGBsdF8nJwoJYW5kIGBgTFRfJycgcHJlZml4ZXMgYXJlIHRha2VuIGZyb20gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCgkqIGx0ZGwuaDogZGl0dG8uCgoyMDAwLTExLTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0ZGwuYzogUmVmb3JtYXR0ZWQuCgkqIGx0ZGwuaDogZGl0dG8uCgoyMDAwLTExLTExICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0ZGwubTQgKEFDX0xURExfU1lNQk9MX1VTQ09SRSk6IFVzZSAkYWNfZXh0IGZvciBjb25mdGVzdAoJc291cmNlZmlsZS4KCSogbGlidG9vbC5tNDogVXNlICRhY19leHQgYW5kICRhY19vYmpleHQgcmVzcGVjdGl2ZWx5IGZvciBjb25mdGVzdAoJc291cmNlcyBhbmQgb2JqZWN0cy4KCVJlcG9ydGVkIGJ5IENhcmxvIFdvb2QgPGNhcmxvQGFsaW5vZS5jb20+CgoJKiBkb2MvZmRsLnRleGk6IE5ldyBmaWxlLiAgVGhlIGxpY2Vuc2UgZm9yIGRpc3RyaWJ1dGluZyB0aGUKCWxpYnRvb2wgbWFudWFsLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBSZWZlcmVuY2UgdGhlIG5ldyBsaWNlbnNlLgoKMjAwMC0xMC0zMSAgTW9ydGVuIEVyaWtzZW4gIDxtb3J0ZW5lQHNpbS5ubz4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogUXVvdGUgYXJndW1lbnQgdG8gYXZvaWQKCWVycm9yIG91dHB1dCBmcm9tIGN5Z3BhdGggd2hlbiAkc3JjZGlyIGlzIGVtcHR5LgoKMjAwMC0xMC0zMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBib290c3RyYXA6ICBybSBNYWtlZmlsZXMgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wIGR1cmluZwoJY29uZmlndXJlIHdoZW4gbGlidG9vbC5tNCBpcyBuZXdlciB0aGFuIE1ha2VmaWxlLgoKMjAwMC0xMC0zMSAgQWtpbSBEZW1haWxsZSAgPGFraW1AZXBpdGEuZnI+CgoJKiBsaWJ0b29sLm00OiBBZGp1c3QgdGhlIGNvcHlyaWdodCBub3RpY2UuCglRdW90ZSBhbGwgdGhlIG1hY3JvIG5hbWVzIHdoZW4gZGVmaW5lZC4KCVNvbWUgbWlub3IgZm9ybWF0dGluZyBjaGFuZ2VzLgoJKEFNX1BST0dfTElCVE9PTCwgQU1fRU5BQkxFX1NIQVJFRCwgQU1fRU5BQkxFX1NUQVRJQykKCShBTV9ESVNBQkxFX1NIQVJFRCwgQU1fRElTQUJMRV9TVEFUSUMsIEFNX1BST0dfTEQsIEFNX1BST0dfTk0pOgoJRG9uJ3QgdXNlIGluZGlyIHdoZW4gdXNlbGVzcy4gIERvbid0IGFkZCB0cmFpbGluZyBgZG5sJyBlaXRoZXIuCgoyMDAwLTEwLTMwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGRvYy9saWJ0b29sLnRleGk6ICBDb3JyZWN0ZWQgYW5vdGhlciBhdHRhY2sgb2YgQ1JMRiBsaW5lCgllbmRpbmdzLgoKMjAwMC0xMC0zMCAgT3NzYW1hIE90aG1hbiAgPG9zc2FtYUBkZWJpYW4ub3JnPgoKCSogbGlidG9vbC5tNCAoYXJjaGl2ZV9leHBzeW1fY21kcyk6IEZpeCB0eXBvIHdoZXJlIGxpbmUgd2FzIGJyb2tlbgoJaW4gdGhlIG1pZGRsZSBvZiBhbiBleHByZXNzaW9uLgoKMjAwMC0xMC0zMCAgQW5lZXNoIEt1bWFyIEsuViA8a3ZhbmVlc2hAaG90bWFpbC5jb20+CgoJKiBsaWJ0b29sLm00IChhcmNoaXZlX2V4cHN5bV9jbWRzKTogIFN1cHBvcnQgZm9yIC1leHBvcnQtc3ltYm9sCglvcHRpb24gb24gVHJ1NjQuCgkoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyk6IEZpeGVkIGN4eCB0aHJvd2luZyBlcnJvciB3aGlsZSB1c2luZwoJbGlidG9vbC4gIERvbmUgYnkgcGFzc2luZyAtcnBhdGggZGlyZWN0bHR5IHRvIHRoZSBjb21waWxlci4KCjIwMDAtMTAtMjcgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQHJpY2FyZG8tdXMuY29tPgoKCSogZG9jcy9saWJ0b29sLnRleGk6IEFkZGVkIHBvaW50ZXJzIHRvIGRvY3VtZW50YXRpb24KCW9mIEhld2xldHQtUGFja2FyZCwgQ29tcGFxIFRydTY0IGFuZCBJQk0gQUlYIHN5c3RlbXMuCgoyMDAwLTEwLTAyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglGcm9tIEJydWNlIEtvcmIgPGJrb3JiQGNydXppby5jb20+CgkqIGx0bWFpbi5pbiAoZXhlY3V0ZV9kbGZpbGVzKTogUmVkdWNlIG9iZnVzY2F0aW9uLgoKMjAwMC0wOS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IFtuZXRic2QqXSAoZGVwbGlic19jaGVja19tZXRob2QsIGZpbGVfbWFnaWNfY21kLAoJZmlsZV9tYWdpY190ZXN0X2ZpbGUpOiBSZW1vdmVkIGluYXBwcm9wcmlhdGUgZHVwbGljYXRlCglkZWZpbml0aW9uczsgdGhlc2UgdmFyaWFibGVzIGFyZSBzZXQgaW4gQUNfREVQTElCU19DSEVDS19NRVRIT0QuCgoJKiBsaWJ0b29sLm00IChsdF9jdl9maWxlX21hZ2ljX2NtZCk6IERvbid0IHVzZSAnJHtNQUdJQ19DTUR9JyBvcgoJJyR7T0JKRFVNUH0nOyBTb2xhcmlzJyAvYmluL3NoIGxvc2VzIHdpdGggYH0nIGluIGNhY2hlIGZpbGVzLgoJKGFjX2N2X3BhdGhfTUFHSUNfQ01EKTogUmVuYW1lZCB0byBsdF9jdl9wYXRoX01BR0lDX0NNRC4KCjIwMDAtMDktMjggIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAoTUFHSUNfQ01EKTogRG9uJ3QgdXNlIE1BR0lDLCBzaW5jZSBCU0QgdmVyc2lvbnMgb2YKCXRoZSBmaWxlIGNvbW1hbmQgdXNlIHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaG9sZCB0aGUKCWxvY2F0aW9uIG9mIHRoZSBtYWdpYyBkYXRhYmFzZS4KCVJlcG9ydGVkIGJ5IE1hcmMgRXNwaWUgPE1hcmMuRXNwaWVAbGlhZmEuanVzc2lldS5mcj4KCjIwMDAtMDktMTkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogZG9jL1BMQVRGT1JNUzogVXBkYXRlZC4KCSogZGVtby9jb25maWd1cmUuaW46ICBSZXZlcnQgdG8gdGhlIGBsaWJ0b29sIC0tZmVhdHVyZXMnIHRlc3QuCgkqIE1ha2VmaWxlLmFtIChsaWJ0b29sKTogIFRoaXMgbmVlZHMgdG8gcmVydW4gY29uZmlndXJlIG5vdyB0aGF0CglsaWJ0b29sIGlzIGdlbmVyYXRlZCBlbnRpcmVseSBieSBBQ19QUk9HX0xJQlRPT0wgYWdhaW4uCgkobHRjb25maWcpOiBSZW1vdmVkLgoJKGx0bWFpbi5zaCk6ICBJcyBub3cgcmVnZW5lcmF0ZWQgd2hlbiBsdG1haW4uaW4gY2hhbmdlcy4KCSogbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBOb3cgZG9lcyBhbGwgb2YgdGhlIHdvcmsgZm9yCglnZW5lcmF0aW5nIGxpYnRvb2wgaW1tZWRpYXRlbHkgaW4gY29uZmlndXJlLmluLCByYXRoZXIgdGhhbgoJZGVmZXJyaW5nIHBhcnQgb2YgdGhlIGNyZWF0aW9uIHVudGlsIGNvbmZpZy5zdGF0dXMgcnVucy4KCjIwMDAtMDktMTcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogYm9vdHN0cmFwOiAgQmFja2VkIG91dCB5ZXN0ZXJkYXlzIHBhdGNoIHdoaWNoIGlzIG5vIGxvbmdlcgoJbmVjZXNzYXJ5LgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCk6IFJld29ya2VkIHJ1bGUgZm9yIHJlZ2VuZXJhdGlvbiBvZiBsaWJ0b29sLAoJbm93IHRoYXQgaXQgaXMgYnVpbHQgZW50aXJlbHkgd2l0aGluZyBjb25maWcuc3RhdHVzLgoJKGxpYnRvb2xpemUpOiBUaWRpZWQgZm9yIG9ydGhvZ29uYWxpdHkgd2l0aCB0aGUgb3RoZXIgZ2VuZXJhdGlvbgoJcnVsZXMuCgkobHRjb25maWcpOiAgVGhpcyBpcyBub3cgZ2VuZXJhdGVkIGJ5IEFDX1BST0dfTElCVE9PTCwgY2FsbGVkIGZyb20KCW1ha2UgYnkgcnVubmluZyBjb25maWcuc3RhdHVzIC0tcmVjaGVjay4KCShsdG1haW4uc2gpOiBNb3ZlZCBwcmltYXJ5IGdlbmVyYXRpb24gb2YgdGhpcyBmaWxlIGludG8gaGVyZS4uLgoJKiBjb25maWd1cmUuaW4gKEFDX09VVFBVVCk6IC4uLmluc3RlYWQgb2YgaGVyZS4KCSogbGlidG9vbC5tNCAoQUNfT1VUUFVUX0NPTU1BTkRTKTogIFdyaXRlIHRoZSBjb25maWcgdG8gbHRjb25maWcKCXdoZXJlIGl0IGNhbiBiZSByZXVzZWQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHRvIGxpYnRvb2wuCgkqIGRlbW8vY29uZmlndXJlLmluOiAgbGlidG9vbCBpcyBubyBsb25nZXIgcHJlc2VudCBpbW1lZGlhdGVseQoJYWZ0ZXIgQUNfTElCVE9PTF9NNCBoYXMgY29tcGxldGVkLCBzbyB0aGUgdGVzdHMgbm93IGdyZXAgdGhyb3VnaAoJbHRjb25maWcgaW5zdGVhZCAtLSB3aGljaCAqd2lsbCogYmUgcHJlc2VudC4KCjIwMDAtMDktMTYgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogVE9ETzogUmVtb3ZlZCB0aGUgaXRlbSBkZXNjcmliaW5nIHRoZSBjaGFuZ2UgYmVsb3csIGFuZCBhZGRlZCBhCglzaW1pbGFyIGl0ZW0gdG8gcmVtaW5kIHVzIHRvIGNoYW5nZSB0aGUgbHRkbC5tNCBtYWNyb3MgYWdhaW4gd2hlbgoJX0xUX0FDX0xUQ09ORklHX0hBQ0sgaXMgZGl2aWRlZCBpbnRvIHByb3BlciBtYWNyb3MuCgkqIGx0ZGwubTQgKEFDX0xURExfU05BUkZfQ09ORklHKTogIFJlbW92ZWQuICBObyBsb25nZXQgcmVxdWlyZWQKCW5vdyB0aGF0IGx0Y29uZmlnIGhhcyBtaWdyYXRlZCB0byBsaWJ0b29sLm00LgoJKEFDX0xURExfU0hMSUJFWFQpOiBSZXF1aXJlIF9MVF9BQ19MVENPTkZJR19IQUNLLgoJKEFDX0xURExfU0hMSUJQQVRIKTogZGl0dG8uCgkoQUNfTFRETF9TWVNTRUFSQ0hQQVRIKTogZGl0dG8uCgoJKiBsdGRsLm00IChBQ19MVERMX0RMUFJFT1BFTik6IFJlcXVpcmUgdGhlIGxpYnRvb2wubTQgc3ltYm9sX3BpcGUKCW1hY3JvLgoJKEFDX0xURExfU1lNQk9MX1VTQ09SRSk6IGRpdHRvLgoJKEFDX0xURExfR0xPQkFMX1NZTUJPTF9QSVBFKTogUmVtb3ZlZCwgc2luY2UgaXQgaXMgYSBkdXBsaWNhdGUKCW9mLi4uCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRSk6IC4uLnRoaXMgbmV3CgltYWNybywgZXh0cmFjdGVkIGZyb20gX0xUX0FDX0xUQ09ORklHX0hBQ0suCgoJKiBsdGRsLm00IChjaGFuZ2VxdW90ZSk6IEFuIGF1ZGl0IG9mIGNoYW5nZXF1b3RlIGFuZCBtNAoJcXVvdGUgdXNhZ2UgLS0gYWxsIGNoYW5nZXF1b3RlcyBoYXZlIGJlZW4gcmVtb3ZlZCwgYW5kIHNvbWUKCWxhdGVudCB1bnF1b3RlZCBgWycgYW5kIGBdJyBidWdzIGhhdmUgYmVlbiBmaXhlZC4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUKTogbHRtYWluLnNoIG11c3QgYmUgZ2VuZXJhdGVkIGluIHRoZQoJc291cmNlIHRyZWUgc2luY2UgdGhpcyBpcyB3aGVyZSBpdCB3b3VsZCBiZSBmb3VuZCBpbiBhIGZyZXNobHkKCXVucm9sbGVkIHRhcmJhbGwuCgoJKiBjb25maWd1cmUuaW46IFJlcGxhY2UgYGRubCcgY29tbWVudHMgd2l0aCBgIycgY29tbWVudHMgZm9yCgltb3JlIGNvbmZvcm1pdHkgd2l0aCBjdnMgYXV0b2NvbmYuCglSZW1vdmVkIGVtYWNzIGhhY2stbG9jYWwtdmFyaWFibGVzLCBzaW5jZSB0aGVyZSBpcyBub3cgYQoJcHJvcGVyIEF1dG9jb25mIG1ham9yIG1vZGUuCglSZW1vdmVkIGEgY291cGxlIG9mIGNoYW5nZXF1b3RlKClzLgoKCSogYm9vdHN0cmFwIChsdGNvbmZpZyk6IFdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sIHdpdGggYQoJc3RvY2sgYXV0b21ha2UgKGkuZS4gd2l0aG91dCB0aGUgUkVBRE1FIHBhdGNoIGFwcGxpZWQpLAoJcmVmZXJlbmNlcyB0byBsdGNvbmZpZyBhcmUgbWFudWFsbHkgcmVtb3ZlZCBmcm9tIHRoZSBnZW5lcmF0ZWQKCU1ha2VmaWxlLmluIGZpbGVzLgoKMjAwMC0wOS0xNSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBkb2MvbGlidG9vbC50ZXhpOiBSZW1vdmVzIHJlZmVyZW5jZXMgdG8gbHRjb25maWcsIGFuZCBhIHNtYWxsCglhbW91bnQgb2YgdGlkeWluZyB1cCB0byBjb21wZW5zYXRlLgoKMjAwMC0wOS0xNSAgTmljayBIdWRzb24gIDxza3JsbEBuZXRic2Qub3JnPgoKCSogbGlidG9vbC5tNCAobmV0YnNkKTogSW1wcm92ZWQgc3VwcG9ydC4KCjIwMDAtMDktMTUgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluICh2ZXJzaW9uX3R5cGUpOiBVc2UgIi1pZmFjZSIgYXMgdGhlIHdpbmRvd3MKCXZlcnNpb25pbmcgc2NoZW1lLCB3aGVyZSBpZmFjZSBpcyB0aGUgbnVtYmVyIG9mIHRoZSBvbGRlc3QKCWludGVyZmFjZSBzdXBwb3J0ZWQuCgoyMDAwLTA5LTE0ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglGcm9tIFBhdWwgU29rb2xvdnNreSA8UGF1bC5Tb2tvbG92c2t5QHRlY2hub2xvZ2lzdC5jb20+CgkqIGxpYnRvb2wubTQgKHB3MzIpOiBJbml0aWFsIHN1cHBvcnQgZm9yIHB3MzIsIGFzc3VtaW5nIHRoYXQKCWxpYnRvb2wncyBiZWhhdmlvdXIgaW4gdGhpcyBlbnZpcm9ubWVudCBpcyBpZGVudGljYWwgdG8gdW5kZXIKCWN5Z3dpbi4KCSogbHRtYWluLmluIChwdzMyKTogZGl0dG8uCgkqIE5FV1M6IFVwZGF0ZWQuCgoJKiBsaWJ0b29sLm00IChjaGFuZ2VxdW90ZSk6IEFuIGF1ZGl0IG9mIGNoYW5nZXF1b3RlIGFuZCBtNAoJcXVvdGUgdXNhZ2UgLS0gYWxsIGNoYW5nZXF1b3RlcyAoZXhjZXB0IGEgZmV3IHdpdGggbm9uLW5lc3RpbmcKCXNxdWFyZSBicmFja2V0cykgaGF2ZSBiZWVuIHJlbW92ZWQuCgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6ICBUaGUgYm9vdHN0cmFwIHNjcmlwdCBzaG91bGQgYmUKCWRpc3RyaWJ1dGVkIHdpdGggbGlidG9vbC4KCjIwMDAtMDktMTMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCWxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogT2ggbWFuISAgVGhpcmQgdGltZSBsdWNreS4KCUkganVzdCBkaXNjb3ZlcmVkIHRoYXQgJyYnIG5lZWRzIHRvIGJlIGVzY2FwZWQgaW5zaWRlCglBQ19UUllfRVZBTC4KCjIwMDAtMDktMTIgIE1pY2hhZWwgTWF0eiAgPG1hdHpAaWZoLmRlPgoKCSogbHRtYWluLmluOiAgQmUgY2FyZWZ1bCBhYm91dCBmaWxlbmFtZXMgd2l0aCBtdWx0aXBsZSBgLidzIGluCgl0aGVtIHdoZW4gY2FsY3VsYXRpbmcgZmlsZSBleHRlbnNpb25zLgoJUmVwb3J0ZWQgYnkgSm9lbCBSZWVkIDxqcmVlZEBzdXBwb3J0LmRkaXdvcmxkLmNvbT4KCjIwMDAtMDktMTIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCWxpYnRvb2wubTQgKEFDX1BST0dfTElCVE9PTCk6ICBSZW1vdmVkLCBhcyBpdCB3YXMgdHJpZ2dlcmluZyBhCglidWcgaW4gQXV0b2NvbmYtMi4xMyBBQ19SRVFVSVJFIGltcGxlbWVudGF0aW9uIHdoaWNoIGluc2VydGVkCglzb21lIG9mIHRoZSBleHBhbmRlZCB0ZXN0cyB0b28gZWFybHkgaW4gdGhlIGdlbmVyYWF0ZWQgY29uZmlndXJlLgoJKF9BQ19QUk9HX0xJQlRPT0wpOiByZW5hbWVkIHRvIEFDX1BST0dfTElCVE9PTCwgYW5kIGRlZmluZXMKCWl0c2VsZiB0byBhbiBlbXB0eSBleHBhbnNpb24gdG8gcHJldmVudCBtdWx0aXBsZSBleHBhbnNpb25zLgoJY29uZmlndXJlLmluIChBQ19MSUJUT09MX1NFVFVQKTogUmVwbGFjZWQgYnkgYSBjYWxsIHRvCglBQ19QUk9HX0xJQlRPT0wgbm93IHRoYXQgdGhlIEFDX1JFUVVJUkUgYnVnIGhhcyBiZWVuIHdvcmtlZAoJYXJvdW5kLgoKMjAwMC0wOS0wOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJbGlidG9vbC5tNCAoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiBGb3Jnb3QgdG8gZXNjYXBlIHRoZQoJcmVkaXJlY3Rpb25zIGluc2lkZSBBQ19UUllfRVZBTCBpbiB0aGUgbmVlZF9sYyB0ZXN0cy4gRG9oIQoKCWxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogRm9yZ290IHRvIHJlZGlyZWN0IHRoZQoJb3V0cHV0IG9mIGdyZXAgdG8gL2Rldi9udWxsIGluIHRoZSBuZWVkX2xjIHRlc3RzLgoKCWNvbmZpZ3VyZS5pbiAoQUNfUFJPR19MSUJUT09MKTogIFVzaW5nIHRoaXMgaW4gbGlidG9vbHMgb3duCgljb25maWd1cmUuaW4gaW50ZXJhY3RzIGJhZGx5IHdpdGggdGhlIEFDX1BST1ZJREUgY2FsbHMgYW5kCglyZXN1bHRzIGluIHNldmVyYWwgdGVzdHMgYmVpbmcgaW5zZXJ0ZWQgaW50byBjb25maWd1cmUgdG9vCgllYXJseS4gIFVzZSBBQ19MSUJUT09MX1NFVFVQIGluc3RlYWQuCgoyMDAwLTA5LTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IFRoZSBsdGNvbmZpZy5pbiBjb2RlIEkKCXBvcnRlZCBmcm9tIGx0Y29uZmlnLmluIHdhcyBpbmNvbXBsZXRlIC0tIHRoaXMgaXMgYSBiYWNrcG9ydAoJb2YgdGhlIG1pc3NpbmcgY29kZSB0YWtlbiBmcm9tIHRoZSBtdWx0aS1sYW5ndWFnZSBicmFuY2guCgoyMDAwLTA5LTA3ICBQYXZlbCBSb3NraW4gIDxwcm9za2luQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6ICBGaXhlZCBpbmNvcnJlY3QgdXNlIG9mCgljaGFuZ2VxdW90ZQoKMjAwMC0wOS0wNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiAgVXBkYXRlZC4KCSogVE9ETzogIEFkZCBhIHJlbWluZGVyIHRvIGdldCByaWQgb2YgbHRjb25maWcgaW4gbWxiLgoJKiBSRUFETUU6IFVudGlsIHRoaW5ncyBldmVuIG91dCwgSSBoYXZlIGFkZGVkIGEgbm90ZSBhbmQgYQoJcGF0Y2ggdG8gbWFrZSB0aGUgaW5zdGFsbGVkIGF1dG9tYWtlIGNvb3BlcmF0ZSB3aXRoIHRoZSBuZXcKCWx0Y29uZmlnIGZyZWUgbGlidG9vbC4KCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19MVENPTkZJR19IQUNLKTogd2l0aF9nY2MgaXMgb25seSB1c2VmdWwgaW4KCWx0bWFpbi5zaCBhcyBpdCBoYXMgbm90IHlldCBiZWVuIHNldCBpbiBsaWJ0b29sLm00LiAgVXNlCgkkYWNfY3ZfcHJvZ19nY2MgaW5zdGVhZC4KCgkqIGRvYy9QTEFURk9STVM6IFVwZGF0ZWQuCgoJKiBjb25maWd1cmUuaW4gKEFDX1BST0dfQVdLKTogUmVtb3ZlZCAtLSBubyBsb25nZXIgcmVxdWlyZWQgYnkKCXRoZSBidWlsZCBwcm9jZXNzLgoJKiBsaW5lbm86IGRpdHRvLgoKCSogbGlidG9vbGl6ZS5pbiAoZmlsZXMpOiBEb24ndCB0cnkgdG8gaW5zdGFsbCBsdGNvbmZpZyAtLSBpdAoJZG9lc24ndCBleGlzdCEhCgkqIGJvb3RzdHJhcDogRmFrZSBhbiBsdGNvbmZpZyBpbmNhc2UgdGhlIGluc3RhbGxlZCBhdXRvbWFrZQoJY2FsbHMgYW4gaW5zdGFsbGVkIGxpYnRvb2xpemUgKGFzIHBhcnQgb2YgaXRzIC0tYWRkLW1pc3NpbmcKCXByb2Nlc3MpIHdoaWNoIHRoaW5rcyBsdGNvbmZpZyBzaG91bGQgYmUgdGhlcmUuCgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTFRDT05GSUdfSEFDSyk6IERlbGV0ZWQgYSB2aXRhbCBgOzsnCgl0ZXJtaW5hdG9yIGZyb20gYSBjYXNlIHN0YXRlbWVudCBieSBtaXN0YWtlLgoKCSogTWFrZWZpbGUuYW0gKGx0bWFpbi5zaCk6ICBNYWtlIHRoaXMgZGVwZW5kIG9uIFRTREVQUyBhZ2FpbgoJc28gdGhhdCB0aGUgQ2hhbmdlbG9nIHRpbWVzdGFtcCBpcyB1c2VkIGZvciBsdG1haW4uc2ggYXQgYG1ha2UKCWRpc3QnIHRpbWUuCgoyMDAwLTA5LTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCglsaWJ0b29sLm00IG5vdyBjb250YWlucyBhIHZlcnNpb24gb2YgdGhlIGNvZGUgdGhhdCB1c2VkIHRvIHJ1bgoJZnJvbSBsdGNvbmZpZywgc28gdGhhdCBsdG1haW4uc2ggYW5kIHRoZW4gbGlidG9vbCBhcmUKCWdlbmVyYXRlZCBhdCBjb25maWd1cmUgdGltZS4KCgkqIE1ha2VmaWxlLmFtOiAgRG9uJ3QgZ2VuZXJhdGUgbHRtYWluLnNoIG9yIGx0Y29uZmlnIGFueW1vcmUuCgkqIGJvb3RzdHJhcDogbHRjb25maWcgaXMgbm8gbW9yZSEKCSogY29uZmlndXJlLmluOiBDYWxsIEFDX1BST0dfTElCVE9PTCBkaXJlY3RseS4KCShBQ19PVVRQVVQpOiBHZW5lcmF0ZSB0bWFpbi5zaC4KCSogbGlidG9vbC5tNDogRG9uJ3QgYnVpbGQgYW4gYXJndW1lbnQgbGlzdCBmb3IgbHRjb25maWcuCgkoX0xUX0FDX0xUQ09ORklHX0hBQ0spOiAgUmVmYWN0b3Jpbmcgb2YgdGhlIGZvcm1lciBjb250ZW50cyBvZgoJbHRjb25maWcuaW4gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG00IG1hY3JvcyBmcm9tIGF1dG9jb25mLgoJKiBsdG1haW4uaW46IERvbid0IGRvIGEgdmVyc2lvbiBjaGVjayBhZ2FpbnN0IGx0Y29uZmlnLgoJKiB0ZXN0cy9hc3NpZ24udGVzdDogUmVtb3ZlIHJlZmVyZW5jZSB0byBsdGNvbmZpZy4KCSogdGVzdHMvaGFyZGNvZGUudGVzdDogZGl0dG8uCgkqIHRlc3RzL3NoLnRlc3Q6IGRpdHRvLgoKMjAwMC0wOS0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBkZXBkZW1vL21haW4uYzogU3VwcG9ydCAtYWx0LgoJKiB0ZXN0cy9idWlsZC1yZWxpbmsyLnRlc3Q6IFRyeSBpdC4KCgkqIGx0Y29uZmlnLmluOiBSZW1vdmVkIGFsbCByZWZlcmVuY2VzIHRvIHdoYXQgdXNlZCB0byBiZQoJaGFyZGNvZGVfaW50b19saWJzPWFsbC4gIDIwMDAtMDktMDMncyBwYXRjaCB3YXMgd3JvbmcuCgkqIGx0bWFpbi5pbjogTGlrZXdpc2UuCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0LCB0ZXN0cy9idWlsZC1yZWxpbmsyLnRlc3Q6IEFkanVzdC4KCSogbWRlbW8vTWFrZWZpbGUuYW0gKGxpYl9MVExJQlJBUklFUyk6IE1vdmUgbGlic3ViLmxhIGJlZm9yZQoJbGliZm9vMi5sYSwgc28gdGhhdCB0aGV5J3JlIGluc3RhbGxlZCBpbiB0aGUgcmlnaHQgb3JkZXIuCgoyMDAwLTA5LTA0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHRlc3RzL2RyeXJ1bi50ZXN0OiBCdWlsZCBsaWJzdWIubGEgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGZpbGVzLAoJc2luY2UgaXQgaXMgbmVlZGVkIGJ5IGxpYmZvbzIubGEuCgoJKiBtZGVtby9NYWtlZmlsZS5hbTogTWFyayBvbmx5IGxpYmZvbzIgYXMgLW5vLXVuZGVmaW5lZC4KCUV4cGxpY2l0bHkgbGluayBpdCB3aXRoIGxpYnN1Yi5sYS4KCgkqIGx0Y29uZmlnLmluIChuZWVkX2xjKTogUHJlc2VydmUgYWxsb3dfdW5kZWZpbmVkX2ZsYWcuCgoJKiB0ZXN0cy8qLnRlc3QgKENPTkZJR19TSVRFKTogVWx0cml4J3MgL2Jpbi9zaCBmYWlscyBvbgoJYC4gL2Rldi9udWxsJy4gIFNldCBDT05GSUdfU0lURSB0byAvZGV2L251bGwvY29uZmlnL3NpdGUsIHRvIG1ha2UKCXN1cmUgd2UgcGljayBhIG5vbi1leGlzdGVudCBmaWxlLgoKCSogTWFrZWZpbGUuYW0gKGxpYnRvb2wsIGNsaWJ0b29sKTogUGFzcyBDT05GSUdfU0hFTEwgYWxvbmcgd2l0aAoJRUNITyBkb3duIHRvIGx0Y29uZmlnLgoKCSogbHRjb25maWcuaW4gKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyk6CglVc2UgJHt3bH0sIG5vdCAke3dsYXJjfS4KCgkqIGx0bWFpbi5pbiAoY29tcGlsZSwgbmVlZF9sb2NrKTogRG9uJ3QgY3JlYXRlIG5vciByZW1vdmUgbG9jawoJZmlsZXMgaW4gZHJ5IHJ1bnMuCgoJKiBsaWJsdGRsL2x0ZGwuYyAobG9hZF9kZXBsaWJzKTogRG9uJ3QgYXBwZW5kIHNobGliX2V4dDsgdXNlCglsdF9kbG9wZW5leHQoKSBpbnN0ZWFkLgoKCSogbHRtYWluLmluIChsaW5rIC1zdGF0aWMpOiBEb24ndCBhZGQgJGxpbmtfc3RhdGljX2ZsYWc7IG9ubHkKCS1hbGwtc3RhdGljIHNob3VsZCBkbyB0aGF0LgoJKiBtZGVtby9jb25maWd1cmUuaW46IFJldmVydCBwYXJ0IG9mIHRoZSBwcmV2aW91cyBkZWx0YS4KCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogRG9uJ3QgdXNlIC1zdGF0aWMgb24gQUlYNC4xLgoJKiBtZGVtby9NYWtlZmlsZS5hbTogTGlrZXdpc2UuCgoyMDAwLTA5LTAzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGx0Y29uZmlnLmluOiBHZXQgcmlkIG9mIGhhcmRjb2RlX2ludG9fbGlicz1hbGw7IHVzZQoJaGFyZGNvZGVfaW50b19saWJzPXllcyAmJiBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGghPXllcwoJaW5zdGVhZC4KCVtGcmVlQlNEIDMuWzAxXV0gKHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IFNldCB0byBuby4KCSogbHRtYWluLmluOiBMaWtld2lzZS4KCSogdGVzdHMvYnVpbGQtcmVsaW5rLnRlc3QsIHRlc3RzL2J1aWxkLXJlbGluazIudGVzdDogQWRqdXN0LgoKCSogbGlidG9vbC5tNDogRml4IHR5cG8gSSBpbnRyb2R1Y2VkIGluIHllc3RlcmRheSdzIHBhdGNoLgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsb3Blbik6IFNldCBkbG5hbWUgZnJvbSBsaWJyYXJ5X25hbWVzIGlmCglkbG5hbWUgaXMgZW1wdHkuCgoJKiBsdGRsLm00IChIQVZFX0xJQkRMKTogTG9vayBmb3IgZGxvcGVuIGluIC1sc3ZsZC4KCSogbHRjb25maWcuaW46IExpa2V3aXNlLgoKCSogdGVzdHMvbWRlbW8tZXhlYy50ZXN0OiBNb2RpZnkgZmFpbHVyZSBtZXNzYWdlLgoKCSogbHRtYWluLmluIChuZXdkbHByZWZpbGVzKTogVXNlIGRsbmFtZSBpZiBpdCdzIGF2YWlsYWJsZSBhbmQKCW9sZF9saWJyYXJ5IGlzbid0OyB1c2UgbGlua2xpYiBvbmx5IGlmIGRsbmFtZSBpcyBub3QgYXZhaWxhYmxlLgoKCSogbHRjb25maWcuaW4gKGVuYWJsZV9kbG9wZW4pOiBTZXQgdG8gbm8gd2hlbiBsdF9jdl9kbG9wZW4gaXMgbm8uCgoJKiBsaWJ0b29sLm00OiBEb24ndCBxdW90ZSBDT05GSUdfU0hFTEwgbm9yIE9SSUdJTkFMX0NPTkZJR19TSEVMTC4KCVF1b3RlICRAIHByb3Blcmx5IHNvIHRoYXQgdGhlIHNoZWxsIGV4cGFuZHMgaXQsIG5vdCBtNC4KCgkqIGxpYnRvb2wubTQ6IERvbid0IHF1b3RlIFNIRUxMIHdoZW4gYHJlLWV4ZWMnaW5nLCBzbyB0aGF0IFNIRUxMCgljYW4gYmUgYC9wYXRoL3RvL3NoZWxsIC14Jy4KCgkqIHRlc3RzL3F1b3RlLnRlc3Q6IE1vdmUgdGhlIG1hdGNoIHRlc3Qgb3V0IG9mIGNhc2Ugc3RhdGVtZW50cywgdG8KCXdvcmsgYXJvdW5kIGJ1ZyBpbiAvYmluL3NoIG9mIHNldmVyYWwgT1NzLgoKCSogbHRtYWluLmluICh2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayk6IEF0dGVtcHQgdG8gdW5zZXQgdGhlbQoJaW5zdGVhZCBvZiBzZXR0aW5nIHRoZW0gdG8gYW4gZW1wdHkgc3RyaW5nLgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsdGNvbmZpZy5pbiBbd2l0aF9nbnVfbGRdIChhcmNoaXZlX2NtZHMsIGFyY2hpdmVfZXhwc3ltX2NtZHMpCgk8c29sYXJpcyosIHN5c3Y1KiwgYmVvcyo+OiBVc2UgY29tcGlsZXJfZmxhZ3MgaW5zdGVhZCBvZiBsaW5rZXIKCWZsYWdzLgoJUmVwb3J0ZWQgYnkgQWxleCBIb3JuYnkgPGFsZXhAYW52aWwuY28udWs+CgoyMDAwLTA5LTAyICBNYWtvdG8gSXNoaXNvbmUgIDxpc2hpc29uZUBzcmEuY28uanA+CgoJKiBsaWJ0b29sLm00IChsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCwgZnJlZWJzZCk6IEZpeCB0eXBvLAoJYWRkIHN1cHBvcnQgZm9yIGNvbXBhY3QgZm9ybWF0IGxpYnJhcnkuCgoyMDAwLTA5LTAyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGx0ZGwubTQ6IE9vcHMsIEkgaGFkIGZvcmdvdHRlbiB0byBjb21taXQgdGhpcyBwYXJ0IG9mIFN5ZCBQb2xrJ3MKCXBhdGNoIGZyb20gMjAwMC0wNi0xNy4KCjIwMDAtMDktMDIgIFRvbSBLYWN2aW5za3kgIDx0amtAYW1zLm9yZz4sIFRpbSBNb29uZXkgPG1vb25leUBkb2diZXJ0LmNjLm5kc3UuTm9EYWsuZWR1PgoKCSogbGlidG9vbC5tNDogSWdub3JlIFRydTY0J3Mgbm0ncyBjb21wbGFpbnQuCgoyMDAwLTA5LTAyICBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoKCSogbHRjb25maWcuaW46IG9ubHkgbG9hZCAkY2FjaGVfZmlsZSBpZiBpdCdzIGEgcmVndWxhciBmaWxlCgoyMDAwLTA5LTAyICBBc3NhciBXZXN0ZXJsdW5kICA8YXNzYXJAc2ljcy5zZT4KCgkqIGx0Y29uZmlnLmluOiBBZGQgYmFjayByYW5saWIgY2FsbHMgZm9yIHN0YXRpYyBsaWJyYXJpZXMgaWYgdGhlcmUKCWlzIGEgcmFubGliLgoKMjAwMC0wOC0zMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJTW92ZSB0aGUgZWNobyBkZXRlY3Rpb24gY29kZSB0byBhIG1hY3JvIGluIGxpYnRvb2wubTQuICBUaGUgY29kZQoJYXQgdGhlIHRvcCBvZmx0Y29uZmlnLmluIGlzIHVnbHksIGJ1dCB3aWxsIGdvIGF3YXkgd2hlbiB0aGUgcmVzdAoJb2YgbHRjb25maWcgaXMgbWlncmF0ZWQuCgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCk6ICBQYXNzIHRoZSB2YWx1ZSBvZiAkRUNITyB0byBsdGNvbmZpZyBhcwoJYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCgkqIGxpYnRvb2wubTQgKF9MVF9BQ19QUk9HX0VDSE9fQkFDS1NMQVNIKTogUXVvdGUgdGhlIEVDSE8gdmFsdWUKCWNvcnJlY3RseSBzbyB0aGF0IGl0IGluc2VydHMgdGhlIGNvcnJlY3QgY29kZSBpbnRvIGNvbmZpZ3VyZS5pbgoJc3VpdGFibHkgcXVvdGVkIGZvciBNNCBleHBhbnNpb24uICBUaGlzIGNvZGUgbmVlZHMgdG8gYmUgbmVhcgoJdGhlIHRvcCBvZiBjb25maWd1cmUuaW4gYXMgaXQgY2FsbHMgaXRzZWxmIHJlY3Vyc2l2ZWx5LCBzbyBJCglhbSB1c2luZyBBQ19ESVZFUlNJT05fTk9USUNFIChvciBzaW1wbHkgTk9USUNFIG9uIENWUwoJQXV0b2NvbmYpLiAgVGhlIHZhbHVlIG9mIEVDSE8gaXMgYWxzbyBzdWJzdGl0dWVkIGludG8gdGhlCglNYWtlZmlsZSB0byBiZSB1c2VkIHdoZW4gTWFrZSBjYWxscyBsdGNvbmZpZyB0byBnZW5lcmF0ZQoJbGlidG9vbCwgc28gYW5vdGhlciBsYXllciBvZiBxdW90YXRpb24gaXMgcmVxdWlyZWQgZm9yIHRoZQoJTWFrZWZpbGUuCgkoQUNfTElCVE9PTF9TRVRVUCk6ICBVc2UgaXQuCgkqIGx0Y29uZmlnLmluOiBBY2NlcHQgYSB2YWx1ZSBmb3IgRUNITyBmcm9tIHRoZSBlbnZpcm9ubWVudCwgYW5kCgljYXJlZnVsbHkgc3Vic3RpdHVlIGZvciAkMCBpZiBpdCBpcyBwcmVzZW50IGluIHRoZSBFQ0hPIHZhbHVlLgoJQmVjYXVzZSBFQ0hPIHdhcyBxdW90ZWQgZm9yIE1ha2UsIHdoZW4gbHRjb25maWcgaXMgY2FsbGVkIGJ5Cgljb25maWd1cmUsIGl0IGlzIG92ZXJxdW90ZWQsIGFuZCBvbmUgbGF5ZXIgb2YgcXVvdGVzIG11c3QgYmUKCXN0cmlwcGVkLgoKMjAwMC0wOC0yNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAod2l0aF9nY2MpOiAgTWFrZSB0aGUgdmFsdWUgb2YgdGhpcyBvcHRpb24KCWF2YWlsYWJsZSB0byB0aGUgZ2VuZXJhdGVkIGxpYnRvb2wgc2NyaXB0LgoJKiBsdG1haW4uaW4gKGNvbXBpbGVfY29tbWFuZCwgZmluYWxpemVfY29tbWFuZCk6ICBUaGUgbmF0aXZlIEMKCWFuZCBDKysgY29tcGlsZXJzIG9uIElSSVggcmVxdWlyZSB0aGUgLUxBTkc6c3RkIGluIG9yZGVyIHRvIHRvCgljb21waWxlIGNvcnJlY3RseS4gICBUaGUgc2FtZSBvcHRpb25zIHNob3VsZCBfbm90XyBiZSBwYXNzZWQKCXRocm91Z2ggdG8gZ2NjIG9uIElSSVgsIG9yIGF0IGFsbCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzIGZvcgoJYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKGFtb25nIG90aGVycykuCglSZXBvcnRlZCBieSBCb2IgRnJpZXNlbmhhaG4gPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CglSZXBvcnRlZCBieSBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoyMDAwLTA4LTI2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChvbGRfcmVsb2FkX2ZsYWcpOiB0eXBvLgoKMjAwMC0wOC0wMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKHNodG9vbCk6IFVzZSBlY2hvfGdyZXAgaW5zdGVhZCBvZiBleHByLCBhcyBpbiB0aGUKCW9yaWdpbmFsIHBhdGNoLgoKMjAwMC0wOC0wMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsdGNvbmZpZy5pbiAobmVlZF9sYyk6IEZpeCB0ZXN0IG1lc3NhZ2UuCgoyMDAwLTA3LTI0ICBNb2NoYSAgPG5ldGJzZF9hbHBoYUB5YWhvby5jb20+CgoJKiBsdGNvbmZpZy5pbiAoTmV0QlNELCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IFVzZSBmaWxlX21hZ2ljLgoJKE5ldEJTRCwgZmlsZV9tYWdpY19jbWQsIGZpbGVfbWFnaWNfdGVzdF9maWxlKTogU2V0LgoKMjAwMC0wNy0yNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+LCBEYXZpZCBLYWVsYmxpbmcgIDxkcmtAb3JjaGlldHRhLmh1ZHNvbi5zZ2kuY29tPgoKCSogbHRtYWluLmluIChpcml4LCBtYWpvcik6IFByZXBlbmQgYSBgLicuCgkqIGx0Y29uZmlnLmluIChpcml4LCBzb25hbWVfc3BlYywgbGlicmFyeV9uYW1lc19zcGVjKTogQWRqdXN0LgoKMjAwMC0wNy0yNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+LCBSYWxmIFMuIEVuZ2Vsc2NoYWxsICA8cnNlQGVuZ2Vsc2NoYWxsLmNvbT4KCgkqIGx0bWFpbi5pbjogU3VwcG9ydCBHTlUgc2h0b29sJ3MgaW5zdGFsbC4KCjIwMDAtMDctMjQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGxpbmtvcHRzKTogRG9uJ3Qgc2V0IGZvciB0ZXN0LgoKMjAwMC0wNy0yNCAgTmljayBIdWRzb24gPHNrcmxsQG5ldGJzZC5vcmc+CgoJKiBsdGNvbmZpZy5pbiAobGlua29wdHMpOiBSZXBsYWNlIHdpdGggbGlua2VyX2ZsYWdzLgoKCSogbHRtYWluLmluIChJTEQpOiBGaXggYWRkaXRpb24gb2YgZGVwbGlicyBpbiByZWxpbmsgY2FzZS4KCjIwMDAtMDctMTggIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluOiBDaGVjayBpZiAtbGMgaXMgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBzaGFyZWQKCWxpYnJhcnkuIFNldCBidWlsZF9saWJ0b29sX25lZWRfbGMgdG8gaW5kaWNhdGUgaXQuCgkqIGx0bWFpbi5pbjogQWRkIC1sYyB3aGVuIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJ5IG9ubHkgaWYKCW5lY2Vzc2FyeS4KCjIwMDAtMDctMTAgIE1vIERlSm9uZyAgPG1kZWpvbmdAcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTk0pOiBGaXggbWFjcm8gc28gdGhhdCBpdAoJZmluZHMgYSBjcm9zcyBOTSBvbiB0aGUgUEFUSC4KCjIwMDAtMDctMTAgIEtlbiBCbG9jayA8YmxvY2tAemszLmRlYy5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuaDogQWxzbyBjaGVjayBmb3IgX19jcGx1c3BsdXMsIF9fU1REQ19fIGlzIG5vdAoJYnkgQ29tcGFxIEMrKyBjb21waWxlcgoKMjAwMC0wNy0xMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKHdsYXJjLCBuZXRic2QsIGFvdXQpOiBTZXQgdG8gZW1wdHkuCgkoaGFyZGNvZGVfZHluYW1pY19mbGFnX3NwZWMsIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyk6IFVzZSBpdC4KCgkqIGx0Y29uZmlnLmluIChkeW5hbWljX2xpbmtlciwgbGludXgsIHBvd2VycGMpOiBEbyBub3QgZGlzYWJsZQoJc2hhcmVkIGxpYnJhcmllcyBqdXN0IGJlY2F1c2Ugb2YgTWtMaW51eC4KCgkqIGxpYnRvb2wubTQgKGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kLCBmcmVlYnNkKTogRG8gbm90IGRlcGVuZAoJb24gJHZlcnNpb25fdHlwZTsgY2hlY2sgZm9yIEVMRiBzdXBwb3J0IGFzIGluIG90aGVyIEJTRHMuCgoyMDAwLTA2LTE3ICBTeWQgUG9sayAgPHNwb2xrQHJlZGhhdC5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NFVFVQKTogRG8gbm90IGdlbmVyYXRlIGEgbGlidG9vbCBiYXNlZAoJb24gdGFyZ2V0OyB1c2UgaG9zdCBpbnN0ZWFkLgoKMjAwMC0wNS0zMCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoT1JJR0lOQUxfQ09ORklHX1NIRUxMKTogUHJldmVudCBsb3NzYWdlIHdoZW4KCXRoZSBlY2hvIHByb2JpbmcgY29kZSBmYWxscyBpbnRvIHRoaXMgYnJhbmNoIHdpdGhvdXQgc2V0dGluZwoJdGhpcyB2YXJpYWJsZS4KCgkqIGx0Y29uZmlnLmluIChuZXRic2QqKTogYXJjaGl2ZV9jbWRzIGFuZCBhcmNoaXZlX2V4cHN5bV9jbWRzCgl3ZXJlIHJldmVyc2VkIHdpdGggcmVzcGVjdCB0byBkZWZpbml0aW9uIG9mIF9fRUxGX18uCglGcm9tIEtlaXN1a2UgSW5vdWUgPGtlaXN1a2VAY3NsLnNvbnkuY28uanA+CgoyMDAwLTA1LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKG5ldGJzZCopOiBVc2UgLUwgb3B0aW9uIHRvIGZpbGVfbWFnaWNfY21kIGFzIGZvcgoJZnJlZWJzZCAoYmVsb3cpLgoJKiBsaWJ0b29sLm00IChuZXRic2QgRUxGKTogc3VwcG9ydCBmaWxlX21hZ2ljLgoJRnJvbSBEYW4gV2luc2hpcCA8ZGFud0BoZWxpeGNvZGUuY29tPi4KCjIwMDAtMDUtMjkgIFN0ZXZlbiBNLiBTY2h1bHR6IDxzbXNAbW9lLjJic2QuY29tPgoKCSogbGlidG9vbC5tNCAoYnNkaTQqKTogQWRkIC1MIG9wdGlvbiB0byBic2RpNCdzIGZpbGVfbWFnaWNfY21kCgljb21tYW5kLiAgVW5kZXIgQlNEL09TIDQuMSBzZXZlcmFsIGxpYnJhcmllcyBhcmUgbm93IHN5bWxpbmtzCglyYXRoZXIgdGhhbiByZWd1bGFyIGZpbGVzLiAgQWRkaW5nIC1MIHRlbGxzIHRoZSBmaWxlIHByb2dyYW0KCXRvIGZvbGxvdyB0aGUgc3ltbGluay4KCjIwMDAtMDUtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAoaSo4Ni0qLWZyZWVic2QqKTogRm9yZ290IHRvIGNoYW5nZXF1b3RlKCwpLgoKCSogTkVXUzogVXBkYXRlZC4KCSogbGlidG9vbC5tNCAoaSo4Ni0qLWZyZWVic2QqKTogU3VwcG9ydCBhLm91dCBzaGFyZWQgbGlicy4KCUZyb20gPHN1enVraXNAZmlsZS5waHlzLnRvaG9rdS5hYy5qcD4KCjIwMDAtMDUtMjkgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJU3VwcG9ydCBBUj1td2xkIEFSX0ZMQUdTPScteG1sIC1vJyBmb3IgUFBDIEJlb3MuCgkqIGx0Y29uZmlnIChvbGRfQVJfRkxBR1MpOiBBZGQuCgkob2xkX2FyY2hpdmVfY21kcyk6IFVzZSBBUl9GTEFHUyByYXRoZXIgdGhhbiBoYXJkY29kaW5nICJjcnUiLgoJKGFyY2hpdmVfY21kcyk6IFVzZSBBUl9GTEFHUyByYXRoZXIgdGhhbiBoYXJkY29kaW5nICJjcnUiLgoJKEFSX0ZMQUdTKTogRGVmYXVsdCB0byAiY3J1IiBpZiBub3Qgc2V0LgoKMjAwMC0wNS0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoZWNobyk6IFRoZSBmb2xsb3dpbmcgY29kZSBhY3R1YWxseSBwcmludHMgdGhlCglkb3VibGUgcXVvdGVzIC0tIHNvIEkgcmVtb3ZlZCB0aGVtOgoJICAgIGVjaG89J3ByaW50ZiAiJXNcbiInIC9iaW4va3NoIC1jICckZWNobyBcXHQnCglGcm9tIFR1dWtrYSBUb2l2b25lbiA8dHV0b2l2b25AbWFpbC5zdHVkZW50Lm91bHUuZmk+CgoJKiBORVdTOiBVcGRhdGVkLgoKMjAwMC0wNS0yOSAgQmVybmhhcmQgUm9zZW5rcmFlbnplciA8YmVyb0ByZWRoYXQuZGU+CgoJKiBsaWJ0b29sLm00OiBhZGRpbmcgaWE2NCBhcyBzdXBwb3J0ZWQgbGludXggcGxhdGZvcm0KCjIwMDAtMDUtMjkgIE1pY2hhZWwgTWF0eiAgPG1hdHpAaWZoLmRlPgoKCSogbHRtYWluLmluOiBmaXggcXVvdGluZyBmb3IgJHZhcl92YWx1ZS4KCgkqIGx0Y29uZmlnLmluOiBjaGVjayBmb3IgZGxmY24uaDogaW5jbHVkZSByZXR1cm4gdmFsdWUKCXRvIG1ha2UgLVdhbGwgaW4gQ0ZMQUdTIHdvcmsuCgoyMDAwLTA1LTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIFJFQURNRS1hbHBoYTogbm90ZSBuZXcgbG9jYXRpb24gb2YgY29uZmlnLihndWVzc3xzdWIpLgoKMjAwMC0wNS0yNyAgQ2hhZCBDdW5uaW5naGFtICA8Y2N1bm5pbmdAbWF0aC5vaGlvLXN0YXRlLmVkdT4KCgkqIGx0Y29uZmlnLmluIChyaGFwc29keSopOiBOZXcgUG9ydC4KCSogbHRtYWluLmluIChyaGFwc29keSopOiBkaXR0by4KCjIwMDAtMDUtMjcgIENocmlzIExhdHRuZXIgIDxzYWJyZUBza3lsYWIub3JnPgoKCSogbHRjb25maWcuaW4gKCotc2VxdWVudC1zeXN2NCk6IE5ldyBQb3J0LgoKMjAwMC0wNS0xNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW46IGN5Z3dpbi0xLjEuMCBhbmQgaGlnaGVyIG5vIGxvbmdlciBncm9rIGJhY2tzbGFzaCBwYXRoCglzZXBhcmF0b3JzLgoKMjAwMC0wNS0xNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJMVERMX0NPTlZFTklFTkNFLCBBQ19MSUJMVERMX0lOU1RBTExBQkxFKToKCVBpY2sgTElCTFRMRCBmcm9tIHRvcF9idWlsZGRpciBhbmQgSU5DTFRETCBmcm9tIHRvcF9zcmNkaXIuCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogUmVtb3ZlIGNvbW1lbnRzIG9uCglBQ19MSUJMVExEX0NPTlZFTklFTkNFLgoKCSogbGlidG9vbC5tNCAoX0FDX1BST0dfTElCVE9PTCk6IFJlbmFtZWQgZnJvbS4uLgoJKEFDX1BST0dfTElCVE9PTCk6IEp1c3QgQUNfUkVRVUlSRShfQUNfUFJPR19MSUJUT09MKSwgdG8gYXZvaWQKCWVmZmVjdHMgb2YgbXVsdGlwbGUgcnVucy4KCjIwMDAtMDUtMTEgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiB1cGRhdGUKCSogZG9jL2xpYnRvb2wudGV4aSAobGlibHRkbCk6IHJlbmFtZSBsdF8oZmluZHxuZXh0fGFkZHxyZW1vdmUpX2RsbG9hZGVyCgkgIHRvIGx0X2RsbG9hZGVyXyoKCSogbGlibHRkbC9sdGRsLmM6IGRpdHRvCgkqIGxpYmx0ZGwvbHRkbC5oOiBkaXR0bywgYWRkIGRlY2xhcmF0aW9uIG9mIGx0X2RsbG9hZGVyXyhmaW5kfHJlbW92ZSkKCjIwMDAtMDUtMDYgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogbGlibHRkbC9sdGRsLmM6IFR5cG8uCgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NFVFVQKTogQ1ZTIGF1dG9jb25mIG5vIGxvbmdlciBzZXRzCgl0YXJnZXQgdG8gIk5PTkUiLCBidXQgdG8gYW4gZW1wdHkgc3RyaW5nLgoKMjAwMC0wNS0wNSAgUGF1bCBTb2tvbG92c2t5ICA8UGF1bC5Tb2tvbG92c2t5QHRlY2hub2xvZ2lzdC5jb20+CgoJKiBsdGRsLmM6IHN1cHBvcnQgbHRfZGxvcGVuKDApIGZvciB3aW4zMgoKMjAwMC0wNS0wMyAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGRvYy9saWJ0b29sLnRleGkgKGxpYmx0ZGwpOiBmaXggdHlwb3MsCgkgIElOQ0xUREwgc3RhcnRzIHdpdGggdG9wX3NyY2RpciwgcmVwbGFjZSBOVUxMIHdpdGggQGNvZGV7TlVMTH0KCgkqIGx0bWFpbi5pbiAoSUxEKTogc2VhcmNoIGluIG5ld2xpYl9zZWFyY2hfcGF0aCwgdG9vCgoJKiBsdG1haW4uaW4gKElMRCk6IGZpeCBidWdzIGluIGNvbnYgcGFzcywgZXhwYW5kIGNvbnZlbmllbmNlCgkgIGxpYnMgdG8gZGVwbGlicyBhbmQgbGluayB0aGVtIGxhdGVyIG9uCgoJKiBsdG1haW4uaW4gKElMRCk6IGRvbid0IGFsbG93IGNvbnZlbmllbmNlIGxpYnMgdG8gYmUKCSAgIC1kbG9wZW4vcHJlb3BlbidlZAoKCSogbHRtYWluLmluIChJTEQpOiBpdCdzIG5vdCByZXF1aXJlZCB0byBsaW5rIGFsbCBkZXBsaWJzCgkgIGluIGZhc3QtaW5zdGFsbCBtb2RlCgoJKiBsdG1haW4uaW4gKElMRCk6IGlmIGhhcmRjb2RlX2ludG9fbGlicz1hbGwsIG9ubHkgcmVsaW5rCgkgIGEgbGlicmFyeSBpZiBpdCBpcyBsaW5rZWQgYWdhaW5zdCB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcywKCSAgcmVuYW1lIGxpbmtfYWdhaW5zdF9saWJ0b29sX2xpYnMgdG8gdW5pbnN0X2RlcGxpYnMKCgkqIGx0bWFpbi5pbiAoSUxEKTogdGlkeSB1cCwgYWRkIHNvbWUgY29tbWVudHMKCjIwMDAtMDUtMDMgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGxpYnRvb2wubTQgKGhwdXgxMC4yMCopOiB1c2UgZmlsZV9tYWdpYyBmb3IKCWludGVyLWxpYnJhcnkgZGVwZW5kZW5jeSB0cmFja2luZy4KCjIwMDAtMDUtMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogQVVUSE9SUzogIFVwZGF0ZSBteSBlbWFpbCBhZGRyZXNzLgoJKiBjb21taXQ6IGRpdHRvLgoKMjAwMC0wNC0xMSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIE5FV1M6IHVwZGF0ZQoJKiBsaWJ0b29sLm00OiBhZGQgQUNfTElCVE9PTF9QSUNNT0RFCgkqIGx0Y29uZmlnLmluOiBtb3ZlIHBpY19tb2RlIGNoZWNrcyB0byBsdG1haW4uaW4KCSogbHRtYWluLmluOiBhZGQgLXByZWZlci1waWMgYW5kIC1wcmVmZXItbm9uLXBpYwoKMjAwMC0wMy0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKHRtcGRpcik6IERvIG5vdCBhY2NlcHQgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCBhbmQKCWZvcmNlIGl0cyBtb2RlIHRvIDcwMCwgZm9yIHNlY3VyaXR5IHJlYXNvbnMuCglSZXBvcnRlZCBieSBKb3NlcGggUy4gTXllcnMgPGpzbTI4QGNhbS5hYy51az4KCjIwMDAtMDMtMjcgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiByZWZvcm1hdHRpbmcKCgkqIGx0bWFpbi5pbiAoSUxEKTogYWRkIGV4dHJhIGNvbnZlbmllbmNlIGxpYnJhcnkgc2Nhbm5pbmcgcGFzcwoKCSogbHRtYWluLmluIChJTEQpOiBhY2NlcHQgLVIgZmxhZ3MgZm9yIGxpYnJhcmllcywgdG9vCgoJKiBsdG1haW4uaW4gKElMRCk6IGNvcnJlY2x0eSBtZXJnZSB0aGUgZGxwcmVvcGVuZWQgbGlicmFyaWVzCgkgIHdpdGggZGVwbGlicwoKCSogbHRtYWluLmluIChpbnN0YWxsIG1vZGUpOiByZW1vdmUgZGlyZWN0b3JpZXMgZnJvbSBmaWxlbmFtZXMKCSAgYmVmb3JlIHJlbGlua2luZyAocmVwb3J0ZWQgYnkgRWxyb25kIDxFbHJvbmRAV3VuZGVyLU5ldHQub3JnPikKCgkqIGRvYy9saWJ0b29sLnRleGkgKGxpYmx0ZGwpOiByZW5hbWUgTGlicmFyeSAtPiBMZXNzZXIsCgkgIGNsYXJpZnkgZXhjZXB0aW9uIGNsYXVzZQoJKiBsaWJsdGRsL2x0ZGwuYywgbGlibHRkbC5oIChMaWNlbnNlKTogZGl0dG8KCjIwMDAtMDMtMjEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rKTogU2V0IHRvIGBQQVRICgkkc2hsaWJwYXRoX3ZhciAkcnVucGF0aF92YXInLiAgSWYgd2l0aF9nY2MsIGFkZCBnY2MtcmVsYXRlZAoJZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgQWRkIGl0IHRvIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24uCgkqIGx0bWFpbi5pbiAocmVsaW5rX2NvbW1hbmQpOiBFeHBhbmQgdGhvc2UgdmFyaWFibGVzLgoKMjAwMC0wMy0xNCAgQ2hyaXN0b3BoZXIgQS4gS25pZ2h0ICA8Y2hyaXNrbkBjcnQuY29tPgoKCSogbHRjb25maWcuaW46IGFkZGVkIG1haW4oKSBkZWZpbml0aW9uIGluIGNvbXBpbGUKCWNoZWNrIGZvciBoZWFkZXIgYGRsZmNuLmgnIHRvIGZpeCBsaW5rIGVycm9ycwoJd2hlbiBidWlsdCB3aXRoIFN1biBXb3Jrc2hvcCBQcm8gQ0MgNC4yIChhbmQgcGVyaGFwcwoJb3RoZXJzKS4KCjIwMDAtMDItMDMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2ZpbmRfZGxoYW5kbGUpOiBEZWxldGVkLiAgVGhpcyB3YXMgQi5TLgoJZmFyIGNsZWFuZXIgdG8gdXNlIGx0X2RsZm9yZWFjaCBhbmQgbHRfZGxnZXRpbmZvLgoJKiBsaWJsdGRsL2x0ZGwuaDogIFByb3RvdHlwZSBkZWxldGVkLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBEb2N1bWVudGF0aW9uIGRlbGV0ZWQuCgkqIE5FV1M6IGFubm9uY2VtZW50IGRlbGV0ZWQuCgoyMDAwLTAyLTIzICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRtYWluLmluOiByZW1vdmUgZHVwbGljYXRlcyBmcm9tIGRlcGxpYnMsIGhhbmRsZQoJICBpbnRlcmRlcGVuZGVudCBsaWJyYXJpZXMgKGUuZy4gLWxhIC1sYiAtbGEpLAoJICB0aGlzIHJlcXVpcmVzIGFkZGluZyBkZXBsaWJzIGluIHJldmVyc2Ugb3JkZXIKCgkqIGx0bWFpbi5pbjogbGluayBkbHByZW9wZW5lZCBsaWJyYXJpZXMgYmVmb3JlIG90aGVyIGxpYnJhcmllcwoJICAocmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luKQoJKiBtZGVtby9NYWtlZmlsZS5hbTogYnVpbGQgYW5kIGxpbmsgbGlic3ViLmxhCgkqIG1kZW1vL3N1Yi5jOiBuZXcgZmlsZSB1c2VkIGJ5IGJvdGggZGxvcGVuZWQgbW9kdWxlcwoJKiBtZGVtby9mb28qOiB1c2Ugc3ViKCkgZGVmaW5lZCBpbiBsaWJzdWIKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IGJ1aWxkIGxpYnN1Yi5sYQoKCSogbWRlbW8vTWFrZWZpbGUuYW06IGFsd2F5cyBsaW5rIG1kZW1vLnN0YXRpYyB3aXRoIC1zdGF0aWMKCSogbWRlbW8vY29uZmlndXJlLmluOiBkaXR0bwoKCSogbHRtYWluLmluOiBmaXggZGxvcGVuL2RscHJlb3BlbmluZyBvZiBvYmplY3RzCgoJKiBsdG1haW4uaW4gKElMRCk6IGZpeCBtaXNwbGFjZWQgYGNvbnRpbnVlJyBpbiAtUiogYXJndW1lbnQgaGFuZGxlcgoKCSogbHRtYWluLmluOiBtZXJnZSBkdXBsaWNhdGVkIGNvZGUgb2YgY2xlYW4gYW5kIHVuaW5zdGFsbCBtb2RlCgoJKiBsaWJ0b29sLm00OiByZWNvZ25pemUgcG93ZXJwYypsaW51eCogKHJlcG9ydGVkIGJ5CgkgIERpcmsgQS4gTXVlbGxlciA8ZG11ZWxsQGdteC5uZXQ+KQoKMjAwMC0wMi0yMyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAob2xkX01BR0lDLCBvbGRfU1RSSVAsIG9sZF9yZWxvYWRfZmxhZywKCW9sZF9kZXBsaWJzX2NoZWNrX21ldGhvZCwgb2xkX2ZpbGVfbWFnaWNfY21kKTogIE5ldyB2YXJpYWJlcy4KCVRyZWF0IHRoZXNlIGFzIG9sZF9DQyBldGMuCgkoU1RSSVAsIE1BR0lDKTogQ3JlYXRlIGFuZCBzZXQgdGhlc2UgdmFyaWFibGVzIGluIHRoZSBnZW5lcmF0ZWQKCWxpYnRvb2wgc2NyaXB0LgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NpbkBnZW9jaXRpZXMuY29tPgoKCSogY29uZmlndXJlLmluOiBEdWUgdG8gYSBidWcgaW4gYXV0b2NvbmYtMi4xMyBpbXBsZW1lbnRhdGlvbiBvZgoJQUNfU1VCU1QsIGBBQ19TVUJTVChGSUxFKScgY2FuIG5ldmVyIHdvcmsuICBVc2UgTUFHSUMgYXMgdGhlCglob2xkZXIgb2YgdGhlIGNvbW1hbmQgdG8gcnVuIGluIGZpbGVfbWFnaWNfY21kIGluc3RlYWQuCgkqIGx0Y29uZmlnLmluOiBzL0ZJTEUvTUFHSUMvZy4KCSogbGlidG9vbC5tNCAoQUNfUFJPR19MSUJUT09MKTogc2V0IE1BR0lDIGluIHRoZSBlbnZpcm9ubWVudCB3aGVuCgljYWxsaW5nIGx0Y29uZmlnLgoJKEFDX1BBVEhfTUFHSUMpOiAgcmVuYW1lZCBmcm9tIEFDX1BBVEhfRklMRS4KCShBQ19QQVRIX1RPT0xfUFJFRklYKTogIHMvRklMRS9NQUdJQy9nLiAgQWxzbyBzZXQgZmlsZV9tYWdpY19jbWQKCXRvICcke01BR0lDfScgc28gdGhhdCBtYWtlIGNhbiBncm9rIGl0LgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCk6CgkoY2xpYnRvb2wpOiBkaXR0by4KCjIwMDAtMDItMjEgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2ZpbmRfZGxoYW5kbGUpOiBOZXcgZnVuY3Rpb24uCgkodHJ5YWxsX2Rsb3Blbik6IFVzZSBpdC4KCSogbGlibHRkbC9sdGRsLmg6ICBQcm90b3R5cGUgaXQuCgkqIGRvYy9saWJ0b29sLnRleGk6IERvY3VtZW50IGl0LgoJKiBORVdTOiB1cGRhdGVkLgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RsaW5pdCk6IHJlbW92ZWQgdW51c2VkIHZhcmlhYmxlLCBgbG9hZGVyJy4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9yZW1vdmVfZGxsb2FkZXIpOiB0eXBvLCBzLz0vPT0vZy4KCjIwMDAtMDItMDMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmggKGx0X2RsbG9hZGVyX2RhdGFfdCk6ICBOZXcgdHlwZSBmb3IgbG9hZGVyCglpbnN0YW5jZSBkYXRhLgoJKGx0X3VzZXJfZGxsb2FkZXIpOiBOZXcgbHRfZGxsb2FkZXJfZGF0YV90IGZpZWxkLgoJKGx0X21vZHVsZV9vcGVuX3QpOiBBZGQgbHRfZGxsb2FkZXJfZGF0YV90IHBhcmFtZXRlci4KCShsdF9tb2R1bGVfY2xvc2VfdCk6IEFkZCBsdF9kbGxvYWRlcl9kYXRhX3QgcGFyYW1ldGVyLgoJKGx0X2ZpbmRfc3ltX3QpOiBBZGQgbHRfZGxsb2FkZXJfZGF0YV90IHBhcmFtZXRlci4KCShsdF9kbGxvYWRlcl9leGl0X3QpOiBBZGQgbHRfZGxsb2FkZXJfZGF0YV90IHBhcmFtZXRlci4KCSogbGlibHRkbC9sdGRsLmM6ICBBIHNwcmlua2xpbmcgb2YgLypBUkdTVVNFRCovIG1hcmtlcnMgdG8KCXJlYXNzdXJlIGxpbnQgdGhhdCB0aGUgdW51c2VkIGFyZ3VtZW50cyBhcmUgaW50ZW50aW9uYWwuCgkobHRfZGxsb2FkZXJfdCk6IE5ldyBsdF9kbGxvYWRlcl9kYXRhX3QgZmllbGQuCgkobHRfZGxsb2FkZXJfZGF0YSk6IE5ldyBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGNvbnRlbnRzIG9mIHRoZQoJZGxsb2FkZXJfZGF0YSBmaWVsZC4KCShzeXNfZGxfb3Blbik6IFRha2UgYW4gYWRkaXRpb25hbCBsdF9kbGxvYWRlcl9kYXRhX3QgYXJndW1lbnQuCgkoc3lzX2RsX2Nsb3NlKTogRGl0dG8uCgkoc3lzX2RsX3N5bSk6IERpdHRvLgoJKHN5c19kbCk6IEluaXRpYWxpc2UgbHRfZGxsb2FkZXJfZGF0YV90IGZpZWxkLgoJKHN5c19zaGxfb3Blbiwgc3lzX3NobF9jbG9zZSwgc3lzX3NobF9zeW0sIHN5c19zaGwpOiBBcyBhYm92ZS4KCShzeXNfd2xsX29wZW4sIHN5c193bGxfY2xvc2UsIHN5c193bGxfc3ltLCBzeXNfd2xsKTogQXMgYWJvdmUuCgkoc3lzX2JlZGxfb3Blbiwgc3lzX2JlZGxfY2xvc2UsIHN5c19iZWRsX3N5bSwgc3lzX2JlZGwpOiBBcwoJYWJvdmUuCgkoc3lzX2RsZF9vcGVuLCBzeXNfZGxkX2Nsb3NlLCBzeXNfZGxkX3N5bSwgc3lzX2RsZCk6IEFzIGFib3ZlLgoJKHByZXN5bV9pbml0LCBwcmVzeW1fZXhpdCwgcHJlc3ltX29wZW4sIHByZXN5bV9jbG9zZSwgcHJlc3ltX3N5bSwKCXByZXN5bSk6IEFzIGFib3ZlLgoJKGx0X2RsaW5pdCk6IENhbGwgcHJlc3ltX2luaXQgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKGx0X2RsZXhpdCk6IENhbGwgZGxsb2FkZXJfZXhpdCBtZXRob2Qgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKHRyeWFsbF9kbG9wZW4pOiBDYWxsIG1vZHVsZV9vcGVuIG1ldGhvZCB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQuCgkobHRfZGxjbG9zZSk6IENhbGwgbW9kdWxlX2Nsb3NlIG1ldGhvZCB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQuCgkobHRfZGxzeW0pOiBDYWxsIGZpbmRfc3ltIG1ldGhvZCB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQuCgkobHRfYWRkX2RsbG9hZGVyKTogSW5pdGlhbGlzZSBkbGxvYWRlcl9kYXRhIGZpZWxkLgoJKGx0X3JlbW92ZV9kbGxvYWRlcik6IENhbGwgZGxsb2FkZXJfZXhpdCBtZXRob2Qgd2l0aCBhZGRpdGlvbmFsCglhcmd1bWVudC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChmaW5kX2ZpbGUpOiBQcmV2ZW50IGVhcmx5IHJlbGVhc2Ugb2YgbWVtb3J5CglpbiBmaWxlbmFtZS8qcGRpci4KCUZyb20gSm9uIExlaWNodGVyIDxqb25Ac3ltYXMuY29tPgoKCShzeXNfd2xsX2luaXQpOiBEZWxldGVkLiAgTm8gbG9uZ2VyIHJlcXVpcmVkLiAgQW5kIHRoaXMgdGltZSwKCXdpdGggZmVlbGluZyEKCShzeXNfd2xsX2V4aXQpOiBEaXR0by4KCjIwMDAtMDItMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogdXBkYXRlZC4KCSogZG9jL2xpYnRvb2wudGV4aSAoTGlibHRkbCBpbnRlcmZhY2UpOiBNb3ZlZCB1c2VyIGRlZmluZWQgbW9kdWxlCglsb2FkZXIgZG9jdW1lbnRhdGlvbiBmcm9tIGhlcmUuLi4KCShNb2R1bGUgbG9hZGVycyBmb3IgbGlibHRkbCkgLi4udG8gaGVyZSwgYW5kIHVwZGF0ZWQgdGhlIHRleHQgYW5kCglhZGRlZCBleGFtcGxlcy4KCSogbHRkbC5tNCAoQUNfQ0hFQ0tfRlVOQ1MpOiBjaGVjayBzdHJjbXAgZm9yIGx0X2ZpbmRfZGxsb2FkZXIuCgkqIGxpYmx0ZGwvbHRkbC5oOiBSZWZvcm1hdHRlZCBhbmQgY29tbWVudGVkIGZvciByZWFkYWJpbGl0eS4KCShzdHJ1Y3QgbHRfdXNlcl9kbGxvYWRlcik6IE5ldyBkYXRhIHR5cGUgZm9yIHBhc3NpbmcKCWluaXRpYWxpc2F0aW9uIHBvaW50ZXJzIHRvIGx0X2FkZF9kbGxvYWRlci4KCShMVERMX0VSUk9SX0lOVkFMSURfTE9BREVSKTogIE5ldyBlcnJvciBtZXNzYWdlIHdoZW4gbm9uIGxvYWRlcgoJaGFuZGxlcyBhcmUgcGFzc2VkIHRvIHRoZSB1c2VyIGxvYWRlciBBUEkuCgkoTFRETF9FUlJPUl9JTklUX0xPQURFUik6IE5ldyBlcnJvciB3aGVuIGxvYWRlciBpbml0aWFsaXNhdGlvbgoJZmFpbHMuCgkoTFRETF9FUlJPUl9SRU1PVkVfTE9BREVSKTogTmV3IGVycm9yIHdoZW4gbG9hZGVyIHJlbW92YWwgZmFpbHMuCgkobHRfbW9kdWxlX29wZW5fdCk6IHJlbmFtZWQgZnJvbSBsdF9saWJfb3Blbl90LgoJKGx0X21vZHVsZV9jbG9zZV90KTogcmVuYW1lZCBmcm9tIGx0X2xpYl9jbG9zZV90LgoJKGx0X2RsbG9hZGVyX2V4aXRfdCk6IHJlbmFtZWQgZnJvbSBsdF9kbGxvYWRlcl9leGl0X3QuCgkqIGxpYmx0ZGwvbHRkbC5jOiBSZW9yZGVyZWQgYnVpbHRpbiBsb2FkZXJzIHNvIHRoYXQgdGhlICJkbGQiCglsb2FkZXIgbm8gbG9uZ2VyIG9jY3VycyBiZWZvcmUgImRsb3BlbiIgb24gc29tZSBwbGF0Zm9ybXMgYW5kCglhZnRlciBpdCBvbiBvdGhlcnMuCgkobHRfZGxsb2FkZXJfdCk6IE1vdmVkIGhlcmUgZnJvbSBsdGRsLmgsIGFkZGVkIGEgZmllbGQsCgkibG9hZGVyX25hbWUiLCBmb3IgaWRlbnRpZnlpbmcgdGhlIGxvYWRlciwgYW5kIHJlbmFtZWQgZnJvbQoJbHRfZGx0eXBlX3QuICBSZW5hbWVkIHR5cGUgdmFyaWFibGVzIHRvIGxvYWRlciBJRkYgb2YgdHlwZQoJbHRfZGxsb2FkZXJfdC4KCShsdF9tb2R1bGVfdCk6IFJlbmFtZWQgZnJvbSBsdF9zeXNoYW5kbGUuIFJlbmFtZWQgaGFuZGxlIHZhcmlhYmxlcwoJdG8gbW9kdWxlIElGRiBvZiB0eXBlIGx0X21vZHVsZV90LgoJKExURExfVFlQRV9UT1ApOiBEZWxldGVkLiAgTm8gbG9uZ2VyIHJlcXVpcmVkLgoJKHN5c19kbCk6IEluaXRpYWxpc2VkIGFzIGEgc3RydWN0IGx0X3VzZXJfZGxsb2FkZXIuCgkoc3lzX2RsX2luaXQpOiBEZWxldGVkLiAgTm8gbG9uZ2VyIHJlcXVpcmVkLgoJKHN5c19kbF9leGl0KTogRGl0dG8uCgkoc3lzX3NobCk6IEluaXRpYWxpc2VkIGFzIGEgc3RydWN0IGx0X3VzZXJfZGxsb2FkZXIuCgkoc3lzX3NobF9pbml0KTogRGVsZXRlZC4gIE5vIGxvbmdlciByZXF1aXJlZC4KCShzeXNfc2hsX2V4aXQpOiBEaXR0by4KCShzeXNfd2xsKTogSW5pdGlhbGlzZWQgYXMgYSBzdHJ1Y3QgbHRfdXNlcl9kbGxvYWRlci4KCShzeXNfd2xsX2luaXQpOiBEZWxldGVkLiAgTm8gbG9uZ2VyIHJlcXVpcmVkLgoJKHN5c193bGxfZXhpdCk6IERpdHRvLgoJKHN5c19iZWRsKTogSW5pdGlhbGlzZWQgYXMgYSBzdHJ1Y3QgbHRfdXNlcl9kbGxvYWRlci4KCShzeXNfYmVkbF9pbml0KTogRGVsZXRlZC4gIE5vIGxvbmdlciByZXF1aXJlZC4KCShzeXNfYmVkbF9leGl0KTogRGl0dG8uCgkoc3lzX2RsZCk6IEluaXRpYWxpc2VkIGFzIGEgc3RydWN0IGx0X3VzZXJfZGxsb2FkZXIuCgkoc3lzX2RsZF9pbml0KTogRGVsZXRlZC4gIE5vIGxvbmdlciByZXF1aXJlZC4KCShzeXNfZGxkX2V4aXQpOiBEaXR0by4KCShzeXNfcHJlc3ltKTogSW5pdGlhbGlzZWQgYXMgYSBzdHJ1Y3QgbHRfdXNlcl9kbGxvYWRlci4KCShsdF9tb2RfaW5pdF90KTogTW92ZWQgdG8gaGVyZSBmcm9tIGx0ZGwuaC4KCShsdF9kbGluaXQpOiBBZGQgYnVpbHRpbiBsb2FkZXJzIHVzaW5nIHRoZSB1c2VyIGxvYWRlciBBUEkuCgkobHRfZGxleGl0KTogVW5yZWdpc3RlciBhbmQgZnJlZSBhbGwgbG9hZGVycy4KCShsdF9hZGRfZGxsb2FkZXIpOiBOZXcgZnVuY3Rpb24gdG8gYWRkIGEgbmV3IG1vZHVsZSBsb2FkZXIgYWZ0ZXIgdGhlCglsb2FkZXIgc3BlY2lmaWVkIGluIHRoZSBhcmd1bWVudC4KCShsdF9yZW1vdmVfZGxsb2FkZXIpOiBOZXcgZnVuY3Rpb24gdG8gcmVtb3ZlIGEgbW9kdWxlIGxvYWRlci4KCShsdF9uZXh0X2RsbG9hZGVyKTogTmV3IGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBtb2R1bGUgbG9hZGVycy4KCShsdF9kbGxvYWRlcl9uYW1lKTogQWNjZXNzb3IgZnVuY3Rpb24gZm9yIG5hbWUgb2YgZGxsb2FkZXIuCgkobHRfZmluZF9kbGxvYWRlcik6IE5ldyBmdW5jdGlvbiB0byBnZXQgYSByZWZlcmVuY2UgdG8gYSByZWdpc3RlcmVkCgltb2R1bGUgbG9hZGVyLgoJKHN0cmNtcCk6IHN0YXRpYyBpbXBsZW1lbnRhdGlvbiBpbmNhc2UgdGhlIGhvc3QgaGFzIG5vbmUuCgkobHRfZGxnZXR0eXBlcywgbHRfZGxzZXR0eXBlcyk6IFJlbW92ZWQuCgoyMDAwLTAyLTAyICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbGlibHRkbC9sdGRsLmM6IHJlcGxhY2UgTlVMTCB3aXRoIDAsIHJlbW92ZSB1bnVzZWQgc3lzdGVtCgkgIGFuZCBhcHBfcHJpdmF0ZSBwb2ludGVycyBmcm9tIGx0X2RsaGFuZGxlX3QKCSogbGlibHRkbC9sdGRsLmMgKHByZXN5bV9hZGRfbGlzdCk6IG5ldyBwcmVsb2FkZWQgc3ltYm9scwoJICBkb24ndCBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBlbmQKCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGdldGRhdGEsIGx0X2Rsc2V0ZGF0YSk6IHJlbW92ZWQKCSogbGlibHRkbC9sdGRsLmg6IGRpdHRvCgkqIGRvYy9saWJ0b29sLnRleGkgKGxpYmx0ZGwgaW50ZXJmYWNlKTogZGl0dG8KCjIwMDAtMDItMDEgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBsdG1haW4uaW46IHN1cHBvcnQgLWRsb3Blbi9kbHByZW9wZW4gZm9yIGxpYnJhcmllcwoJKiBORVdTOiB1cGRhdGVkCgkqIFRPRE86IHVwZGF0ZWQKCSogbHRtYWluLmluOiByZW5hbWUgZGxvcGVuIHRvIGRsb3Blbl9zdXBwb3J0CgkqIGx0Y29uZmlnLmluOiBkaXR0bwoJKiBkb2MvbGlidG9vbC50ZXhpOiBkaXR0bwoKCSogbHRtYWluLmluOiBjaGVjayB3aGV0aGVyIGxpYnJhcmllcyBhcmUgbW92ZWQgb3V0IG9mICRsaWJkaXIsCgkgIHJlcGxhY2UgLmEgYW5kIC5saWIgd2l0aCAuJGxpYmV4dCwgLm8gYW5kIC5vYmogd2l0aCAuJG9iamV4dAoKMjAwMC0wMS0zMSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRfZGxyZWFsbG9jKTogcmVtb3ZlZCBkZWNsYXJhdGlvbi4KCSogbGlibHRkbC9sdGRsLmMgKGx0X2RscmVhbGxvYyk6IHJlbW92ZWQgZGVmaW5pdGlvbi4KCShsdF9kbGFkZGVycm9yKTogSW5zdGVhZCBvZiBjYWxsaW5nIGx0X2RscmVhbGxvYywgdXNlIGx0X2RsbWFsbG9jLAoJYW5kIGx0X2RsZnJlZS4KCjIwMDAtMDEtMzAgIE9zc2FtYSBPdGhtYW4gIDxvc3NhbWFAZGViaWFuLm9yZz4KCgkqIGxpYnRvb2wubTQgKGx0X2N2X2NjX25lZWRzX2JlbGYpOiBTZXQgdGhlIHRlc3QgbGFuZ3VhZ2UgdG8gQwoJcHJpb3IgdG8gZXhlY3V0aW5nIHRoZSB0ZXN0IHRoYXQgY2hlY2tzIGlmIHRoZSBDIGNvbXBpbGVyIG5lZWRzCgkiLWJlbGYuIgoJUmVwb3J0ZWQgYnkgQ2hyaXMgQnV0bGVyIDxjaHJpc2JAc2FuZHkuZm9yY2U5LmNvLnVrPgoKMjAwMC0wMS0yOCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19ERVBMSUJTX0NIRUNLX01FVEhPRCk6ICBVc2UgY2hhbmdlcXVvdGUgdG8KCXByb3RlY3QgYFsnIGFuZCBgXScgaW4gZGVwbGlic19jaGVja19tZXRob2QuCgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRfZGxyZWFsbG9jKTogQWRkZWQgZGVjbGFyYXRpb24uCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbHJlYWxsb2MpOiBBZGRlZCBkZWZhdWx0IGRlZmluaXRpb24uCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxzZXRlcnJvcik6IENhdGNoIGVycm9yY29kZXMgYmVsb3cgMCBhcwoJaW52YWxpZC4KCSogbGlibHRkbC9sdGRsLmggKExURExfRVJST1IpOiBBZGRlZCBtaXNzaW5nICdfJyBpbiBLJlIKCWRlZmluaXRpb24uCgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRkbF9lcnJvcl90YWJsZSk6IEFkZGVkIG1pc3NpbmcgZXJyb3IgY29kZSwgYW5kCglmaXhlZCB0eXBvIGluIGFub3RoZXIgY29kZS4KCSogZG9jL2xpYnRvb2wudGV4aSAoTGlibHRkbCBpbnRlcmZhY2UpOiBBZGRlZCBtaXNzaW5nIEBlbmQKCWNsYXVzZS4KCjIwMDAtMDEtMjcgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBsdGNvbmZpZy5pbjogT29wcywgcmVwbGFjZSB0aGUgcmVtYWluaW5nICRvYmpkaXIncwoKCSogbHRtYWluLmluOiBtZXJnZSBsaWJyYXJ5IGxpbmtpbmcgY29kZSBvZiBwcm9ncmFtcyBhbmQgbGlicmFyaWVzLAoJICBzb21lIGNsZWFudXBzCgoyMDAwLTAxLTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGRvYy9saWJ0b29sLnRleGkgKExpYmx0ZGwgaW50ZXJmYWNlKTogRG9jdW1lbnQgbmV3IGVudHJ5Cglwb2ludHMuCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGFkZGVycm9yKTogTmV3IGZ1bmN0aW9uIHRvIGFkZCBhIHVzZXIKCWRlZmluZWQgZXJyb3IgbWVzc2FnZSB0byB0aGUgdGFibGVzIHVzZWQgYnkgbHRfZGxlcnJvcigpLgoJKGx0X2Rsc2V0ZXJyb3IpOiAgTmV3IGZ1bmN0aW9uIHRvIGFsbG93IHNldHRpbmcgb2YgbGFzdF9lcnJvciBieQoJdXNlciBtb2R1bGVzLgoJKGx0ZGxfZXJyb3Jfc3RyaW5ncyk6IE5ldyBwcmVwcm9jZXNzb3IgZ2VuZXJhdGVkIHRhYmxlIG9mIGludGVybmFsCgllcnJvciBkaWFnbm9zdGljIHN0cmluZ3MuCgkodXNlcl9lcnJvcl9zdHJpbmdzKTogTmV3IGludGVybmFsIGxpc3Qgb2YgcmVnaXN0ZXJlZCB1c2VyIGVycm9yCglkaWFnbm9zdGljIHN0cmluZ3MuCgkodGhyb3VnaG91dCEpOiBVc2UgZXJyb3IgbWVzc2FnZXMgZnJvbSBsdGRsX2Vycm9yX3N0cmluZ3MuCgkqIGxpYmx0ZGwvbHRkbC5oIChsdGRsX2Vycm9yX3RhYmxlKTogTmV3IG1hY3JvIHRvIHRhYnVsYXRlCglpbnRlcm5hbCBkaWFnbm9zdGljIGVycm9yIHN0cmluZ3MgYWxvbmdzaWRlIGVudW0ga2V5cy4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGRvYy9saWJ0b29sLnRleGkgKExpYmx0ZGwgaW50ZXJmYWNlKTogRG9jdW1lbnQgbmV3IGVudHJ5Cglwb2ludHMuCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbHR5cGVfdCk6ICBVc2UgbmV3IHR5cGUgZGVmaW5pdGlvbnMgZm9yCglleGlzdGluZyBmaWVsZHMuCgkobHRfZGxhZGR0eXBlKTogTmV3IGZ1bmN0aW9uIHRvIGFkZCBhIG5ldyBsdGRsIGR5bmFtaWMgbG9hZGVyCgl0eXBlIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Qgb2YgdmFsaWQgdHlwZXMuLgoJKGx0X2RsZ2V0dHlwZXMpOiBOZXcgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGx0ZGwKCWR5bmFtaWMgbG9hZGVyIHR5cGVzLgoJKGx0X2Rsc2V0dHlwZXMpOiBOZXcgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aGUgbGlzdCBvZiBsdGRsIGR5bmFtaWMKCWxvYWRlciB0eXBlcyBlbnRpcmVseSAtLSBlLmcuIHRvIHByZXBlbmQgYSBuZXcgdHlwZSB0byB0aGUKCWV4aXN0aW5nIGxpc3QuCgkoc3lzX2RsX29wZW4sIHN5c19kbF9jbG9zZSwgc3lzX2RsX3N5bSk6IFdvcmsgd2l0aCBsdF9zeXNoYW5kbGUuCgkoc3lzX3NobF9vcGVuLCBzeXNfc2hsX2Nsb3NlLCBzeXNfc2hsX3N5bSk6IGRpdHRvLgoJKHN5c19kbGRfb3Blbiwgc3lzX2RsZF9jbG9zZSwgc3lzX2RsZF9zeW0pOiBkaXR0by4KCShzeXNfd2xsX29wZW4sIHN5c193bGxfY2xvc2UsIHN5c193bGxfc3ltKTogZGl0dG8uCgkoc3lzX2JlZGxfb3Blbiwgc3lzX2JlZGxfY2xvc2UsIHN5c19iZWRsX3N5bSk6IGRpdHRvLgoJKHByZXN5bV9vcGVuLCBwcmVzeW1fY2xvc2UsIHByZXN5bV9zeW0pOiBkaXR0by4KCSh0cnlhbGxfZGxvcGVuKTogQ2FsbCBsdF9saWJfb3Blbl90IGZ1bmN0aW9ucyBsdF9zeXNoYW5kbGUKCWNvbXBhdGlibHkuCgkobHRfZGxjbG9zZSk6IENhbGwgbHRfbGliX2Nsb3NlX3QgZnVuY3Rpb25zIGx0X3N5c2hhbmRsZQoJY29tcGF0aWJseS4KCShsdF9kbHN5bSk6IENhbGwgbHRfZmluZF9zeW1fdCBmdW5jdGlvbnMgbHRfc3lzaGFuZGxlIGNvbXBhdGlibHkuCgkobHRfZGx0eXBlX3QpOiBtb3ZlZCB0eXBlIGRlY2xhcmF0aW9uIGZyb20gaGVyZS4uLgoJKiBsaWJsdGRsL2x0ZGwuaCAobHRfZGx0eXBlX3QpOiAuLi50byBoZXJlLgoJKGx0X3N5c2hhbmRsZSk6IG5ldyB0eXBlIGZvciBsb3cgbGV2ZWwgc3lzdGVtIGhhbmRsZXMgcGFzc2VkIGJ5Cglsb2FkZXIgZnVuY3Rpb25zCgkobHRfbW9kX2luaXRfdCk6ICBOZXcgdHlwZSBmb3IgZnVuY3Rpb25zIGltcGxlbWVudGluZyB0aGUKCWluaXRpYWxpc2F0aW9uIGZvciBhbiBsdGRsIGR5bmFtaWMgbG9hZGVyLgoJKGx0X21vZF9leGl0X3QpOiBUeXBlIG9mIGV4aXQgZnVuY3Rpb25zIGZvciB0aGUgc2FtZS4KCShsdF9saWJfb3Blbl90KTogVHlwZSBvZiBsb2FkZXIgZnVuY3Rpb25zIGZvciB0aGUgc2FtZS4KCShsdF9saWJfY2xvc2VfdCk6IFR5cGUgb2YgdW5sb2FkZXIgZnVuY3Rpb25zIGZvciB0aGUgc2FtZS4KCShsdF9maW5kX3N5bV90KTogVHlwZSBvZiBzeW1ib2wgcmVzb2x2ZXIgZnVuY3Rpb25zIGZvciB0aGUgc2FtZS4KCgkqIGxpYmx0ZGwvbHRkbC5jIChzeXNfZGxfaW5pdCwgc3lzX2RsX2V4aXQsIHN5c19kbF9vcGVuLAoJc3lzX2RsX2Nsb3NlLCBzeXNfZGxfc3ltKTogIFByZXByb2Nlc3MgdGhlc2UgYXdheSBvbiBjeWd3aW4gdG8KCWF2b2lkIHNwdXJpb3VzIGVycm9yIG1lc3NhZ2VzLgoKMjAwMC0wMS0yNCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCglmaXggc2V2ZXJlIGJ1Z3MgcmVwb3J0ZWQgYnkgRWxyb25kIDxFbHJvbmRAV3VuZGVyLU5ldHQub3JnPgoKCSogbHRjb25maWcuaW46IHJlcGxhY2UgJG9iamRpciB3aXRoICRvdXRwdXRfb2JqZGlyCgoJKiBsdG1haW4uaW46IGNoYW5nZSB0byB0aGUgYnVpbGRkaXIgYmVmb3JlIHJlbGlua2luZyBwcm9ncmFtcwoKCSogbHRtYWluLmluLCBsdGNvbmZpZy5pbiwgbGlidG9vbC5tNCwgbHRkbC5tNDoKCSAgcmVtb3ZlIHVubmVzc2FyeSBzcGFjZXMgZnJvbSBsaW5lIGVuZGluZ3MKCjIwMDAtMDEtMTkgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBsdG1haW4uaW46IHJld3JpdGUgb2YgdGhlIElMRCBjb2RlLCBtZXJnZSBsaW5raW5nIGNvZGUgZm9yCgkgIHByb2dyYW1zLCBsaWJyYXJpZXMgYW5kIG9iamVjdHMsIGFsbG93IGxpbmtpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcwoJICBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMvb2JqZWN0cyBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0CgkgIGJ1dCBwcmludCBhIHdhcm5pbmcsIGZpeCBzb21lIHR5cG9zCgoJKiBwYXJ0aWFsbHkgcmV2ZXJ0IG15IHByZXZpb3VzIGNoYW5nZSBhbmQKCSAgdXBkYXRlIG9ubHkgY29weXJpZ2h0IG5vdGljZXMgb2YgZmlsZXMgdGhhdCB3ZXJlIGFjdHVhbGx5IG1vZGlmaWVkCgoJKiBORVdTOiB1cGRhdGUKCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW06IHZlcnNpb24gbnVtYmVyIHdhcyB3cm9uZwoKCSogbGlibHRkbC9sdGRsLmMgKHRyeWFsbF9kbG9wZW4pOiByZXZlcnQgR2FyeSdzIGNoYW5nZQoJICBzaW5jZSBpdCBicmVha3MgZGxwcmVvcGVuaW5nCgkqIGx0ZGwubTQ6IGRpdHRvCgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3lzX3NlYXJjaF9wYXRoKTogc2VhcmNoIGluIHRoZSBzeXN0ZW0gZGVmYXVsdAoJICBsaWJyYXJ5IHNlYXJjaCBwYXRoLCB0b28KCSogbHRkbC5tNCAoQUNfTFRETF9TWVNTRUFSQ0hQQVRIKTogZXh0cmFjdCB0aGUgcGF0aAoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfbW9kdWxlKTogcmVtb3ZlIGJvZ3VzIGZpbGVfbm90X2ZvdW5kX2Vycm9yCgoJKiBsaWJsdGRsL2x0ZGwuYyAobG9hZF9kZXBsaWJzKTogaW1wbGVtZW50IGxvYWRpbmcgb2YgZGVwZW5kZW5jeQoJICBsaWJyYXJpZXMKCSogbGlibHRkbC9sdGRsLmMgKHVubG9hZF9kZXBsaWJzKTogaW1wbGVtZW50IHVubG9hZGluZyBvZiBkZXBlbmRlbmN5CgkgIGxpYnJhcmllcwoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxleGl0KTogY29ycmVjdGx5IGNsb3NlIGFsbCBtb2R1bGVzIGFuZAoJICB0aGVpciBkZXBlbmRlbmNpZXMKCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGZvcmVhY2gpOiBuZXcgZnVuY3Rpb24KCSogbGlibHRkbC9sdGRsLmg6IGRpdHRvCgkqIGRvYy9saWJ0b29sLnRleGkgKHVzaW5nIGxpYmx0ZGwpOiBkb2N1bWVudCBpdAoKCSogbGlidG9vbC5tNDogcmVmb3JtYXR0aW5nLCBvbmx5IGFkZCAtSSR0b3BzcmNfZGlyL2xpYmx0ZGwgdG8KCSAgSU5DTFRETAoKCSogbGlidG9vbGl6ZS5pbjogcmVmb3JtYXR0aW5nCgkqIGx0Y29uZmlnLmluOiByZWZvcm1hdHRpbmcKCSogbHRtYWluLmluOiByZWZvcm1hdHRpbmcKCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogQUNfU1VCU1QgSU5DTFRETAoJKiBtZGVtby9NYWtlZmlsZS5hbTogdXNlIElOQ0xUREwKCgkqIHRlc3RzL01ha2VmaWxlLmFtOiByZWV4cG9ydCBPQkpFWFQgYW5kIEVYRUVYVAoJKiB0ZXN0cy9kcnlydW4udGVzdDogdXNlIHRoZW0gZm9yIGJ1aWxkaW5nIG1haW4ub2JqIGFuZCBtZGVtby5leGUKCjIwMDAtMDEtMTcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKHRyeWFsbF9kbG9wZW4pOiBBYm9ydCB3aXRoCglmaWxlX25vdF9mb3VuZF9lcnJvciBiZWZvcmUgdHJ5aW5nIGFsbCBsaWJfb3BlbigpIG1ldGhvZHMKCWlmIHRoZSBmaWxlIHRvIGJlIGRsb3BlbmVkIGRvZXNuJ3QgZXhpc3QuCgkqIGx0ZGwubTQgKEFDX0hBVkVfSEVBREVSUyk6IGFkZCB1bmlzdGQuaC4KCjIwMDAtMDEtMTYgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfZmlsZSk6IG1lbW9yeSBlcnJvciBmaXhlZC4KCjIwMDAtMDEtMTQgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKFVzYWdlKTogTm93IGl0IG1hdGNoZXMgdGhlIGNvZGUhCglSZXBvcnRlZCBieSBKb24gTGVpY2h0ZXIgPGpvbkBzeW1hcy5jb20+CgoJKiBSRUFETUU6ICBTb21lIG5vdGVzIGFib3V0IGxpYnRvb2wgcmVsZWFzZSBudW1iZXJzLgoKCSogbWRlbW8vUkVBRE1FOiBFeHBsYWluIHRoZSBkZWxpYmVyYXRlIGluY29tcGxldGVuZXNzIG9mIHRoZQoJV2luZG93cyBwb3J0LgoJKiBtZGVtby9jb25maWd1cmUuaW46IFVzZSBBQ19MSUJUT09MX1dJTjMyX0RMTC4KCSogbWRlbW8vTWFrZWZpbGUuYW0gKExERkxBR1MpOiAgQWRkIC1uby11bmRlZmluZWQuCgoJKiBsaWJsdGRsL2x0ZGwuaCAoTFRETF9TVE1UX1NUQVJULCBMVERMX1NUTVRfRU5EKTogIE1hY3JvcyBmb3IKCXdyYXBwaW5nIG90aGVyIG1hY3JvcyB0byBtYWtlIGEgcG9ydGFibGUgY29tcG91bmQgc3RhdGVtZW50IGZyb20KCW11bHRpcGxlIEMgc3RhdGVtZW50cyBpbiB0aGUgZXhwYW5zaW9uLgoJKExURExfU0VUX1BSRUxPQURFRF9TWU1CT0xTKTogVXNlIHRoZSBhYm92ZSBtYWNyb3MgdG8gYWRkIGFuCglleHRlcm4gZGVjbGFyYXRpb24gZm9yIGx0X3ByZWxvYWRlZF9zeW1ib2xzLCB0byByZW1vdmUKCWRlcGVuZGVuY3kgb24gdW5kZWZpbmVkIHN5bWJvbCBmcm9tIGxpYmx0ZGwuZGxsIG9uIGN5Z3dpbiAoYW5kCglvdGhlciAtbm8tdW5kZWZpbmVkIGFyY2hpdGVjdHVyZXMpLgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfcHJlbG9hZGVkX3N5bWJvbHMpOiBObyBsb25nZXIgZGVmaW5lZCBoZXJlLgoKCSogbGlidG9vbCxtNCAoQUNfTElCVE9PTF9TRVRVUCk6ICBUaGUgcmVzdWx0IG9mIGx0X2N2X25lZWRfZGxsbWFpbgoJd2FzIHNldCB0byB0aGUgb3Bwb3NpdGUgb2Ygd2hhdCBpdCBzaG91bGQgYmUuCgkqIGNvbmZpZ3VyZS5pbiAoQUNfTElCVE9PTF9XSU4zMl9ETEwpOiAgQ2FsbCB0byB0aGlzIG1hY3JvIGlzCglyZXF1aXJlZCBmb3IgbGlidG9vbCBjb25maWd1cnkgdG8gdGVzdCBsdF9jdl9uZWVkX2RsbG1haW4gb24KCVdpbmRvd3MuCgoJKiBsdGNvbmZpZy5pbiAob3B0X2NyLCBtaW5ndyopOiByZXBsYWNlIHVuZXNjYXBlZCA/IHdpdGggY29ycmVjdGx5Cgllc2NhcGVkIGFuZCBwb3J0YWJsZSBcezAsMVx9IGluIHNlZCBleHByZXNzaW9uLgoJRnJvbSBKb24gTGVpY2h0ZXIgPGpvbkBzeW1hcy5jb20+CgoyMDAwLTAxLTEzICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQkxURExfQ09OVkVOSUVOQ0UpOiBBZGQgLUkke3RvcF9zcmNkaXJ9L2xpYmx0ZGwKCXRvIGRlZmF1bHQgSU5DTFRETCBmb3IgVlBBVEguCgkoQUNfTElCTFRETF9JTlNUQUxMQUJMRSk6IGRpdHRvLgoJUmVwb3J0ZWQgYnkgVG9tIFRyb21leSA8dHJvbWV5QGN5Z251cy5jb20+CgoyMDAwLTAxLTEyICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogdXBkYXRlIGFsbCBjb3B5cmlnaHQgbm90aWNlcyB0byAyMDAwCgoJKiBkb2MvbGlidG9vbC50ZXhpICh1c2luZyBsaWJsdGRsKTogZG9jdW1lbnQgbmV3IGx0X2RsaW5mbyBzdHJ1Y3QsCgkgIHJlcGxhY2UgTlVMTCB3aXRoIEBjb2Rle05VTEx9LCBkb2N1bWVudCBsdF9kbHNldGRhdGEoKSwKCSAgbHRfZGxnZXRkYXRhKCkgYW5kIGx0X2RsZ2V0aW5mbygpCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW06IGluY3JlbWVudCBpbnRlcmZhY2UgdmVyc2lvbiBudW1iZXIKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHNldCB2ZXJzaW9uIG51bWJlciB0byAxLjEKCSogbGlibHRkbC9sdGRsLmM6IG1ha2Ugc29tZSB2YXJpYWJsZXMgcHVibGljIGJ5IG1vdmluZyB0aGVtCgkgIHRvIHRoZSBpbmZvIHN0cnVjdCwgYWRkIHN1cHBvcnQgZm9yIGFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEKCSAgd2l0aGluIG1vZHVsZSBoYW5kbGVzLCBuZXcgbHRfZGxzZXRkYXRhKCksIGx0X2RsZ2V0ZGF0YSgpIGFuZAoJICBsdF9kbGdldGluZm8oKSBmdW5jdGlvbnMsCgkgIGZpeCBtZW1vcnkgbGVha3MsIG1pbm9yIGNsZWFudXBzCgkqIGxpYmx0ZGwvbHRkbC5oOiBkaXR0bwoJKiBtZGVtby9tYWluLmM6IGRlbW9uc3RyYXRlIHVzZSBvZiBsdF9kbGdldGluZm8sCgkgIGltcHJvdmVkIGhhbmRsaW5nIG9mIGVycm9ycwoKCSogbHRjb25maWcuaW46IHNldCBoYXJkY29kZV9pbnRvX2xpYnMgPSB5ZXMgZm9yIEdOVS9IdXJkLCBMaW51eAoJICBhbmQgU29sYXJpcywgb25seSBoYXJkY29kZSAqYWxsKiBydW4tcGF0aHMgaWYgaGFyZGNvZGVfaW50b19saWJzCgkgIGlzIHNldCB0byAnYWxsJywgb3RoZXJ3aXNlIGhhcmRjb2RlIG9ubHkgdXNlci1zcGVjaWZpZWQgcnBhdGhzCgkgIGludG8gbGlicmFyaWVzCgkqIGx0bWFpbi5pbjogbWlub3IgY2xlYW51cHMsIHdlIGRvbid0IG5lZWQgdG8gYWRkIHVzZXItc3BlY2lmaWVkCgkgIHJwYXRocyB0byBjb21waWxlX3JwYXRoLCBmaW5hbGl6ZV9ycGF0aCBpcyBzdWZmaWNpZW50CgoJKiBsdGNvbmZpZy5pbjogdHJhbnNmb3JtIGxpbnV4KiAtPiAqbGludXgtZ251KiBfYWZ0ZXJfIGhvc3Rfb3MgaGFzCgkgIGJlZW4gc2V0ISAocmVwb3J0ZWQgYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4pCgoJKiBjb25maWd1cmUuaW46IEFDX1NVQlNUIHJlbG9hZF9mbGFnLCBkZXBsaWJzX2NoZWNrX21ldGhvZAoJICBhbmQgZmlsZV9tYWdpY19jbWQKCgkqIFJFQURNRTogdXNlICdsaWJ0b29sIC0tdmVyc2lvbicgaW5zdGVhZCBvZiAnbHRjb25maWcgLS12ZXJzaW9uJwoJICAoc3VnZ2VzdGVkIGJ5IEZyYW5jaW9zIFBpbmFyZCA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+CgoyMDAwLTAxLTEwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5oIChMVERMX0RJUlNFUF9DSEFSKTogTGVhdmUgdW5kZWZpbmVkIHdoZW4KCW5vdCBjb21waWxpbmcgZm9yIGEgV2luZG93cyB0YXJnZXQuCgkqIGxpYmx0ZGwvbHRkbC5jIChjYW5vbmljYWxpemVfcGF0aCk6IE5ldyBmdW5jdGlvbiB0bwoJZW5zdXJlIGludGVybmFsIHBhdGhzIHVzZSAnLycgZGlyZWN0b3J5IHNlcGFyYXRvcnMuCgkoZmluZF9maWxlKTogdXNlIGNhbm9uaWNhbGl6ZV9wYXRoLiAgTWVtb3J5IG1hbmFnZW1lbnQKCWNoYW5nZWQgdG8gY29wZS4KCShsdF9kbG9wZW4pOiBkaXR0by4KCShmcmVlX3ZhcnMpOiBSZW1vdmVkIGBkaXInIGFuZCBgbmFtZScsIHdoaWNoIGFyZSBub3cgaGFuZGxlZAoJaW50ZXJuYWxseS4KCgkqIGxpYmx0ZGwvbHRkbC5oIChMVERMX0RJUlNFUF9DSEFSKTogRGVmaW5lIHRvICcvJyBvciAnXFwnLAoJYXMgc3VpdGFibGUgZm9yIHRoZSB0YXJnZXQgaG9zdC4KCShMVERMX1BBVEhTRVBfQ0hBUik6IFNpbWlsYXJseSB3aXRoICc6JyBvciAnOycuCgkqIGxpYmx0ZGwvbHRkbC5jOiBVc2UgTFRETF9ESVJTRVBfQ0hBUiBhbmQgTFRETF9QQVRIU0VQX0NIQVIKCWluc3RlYWQgb2YgaGFyZGNvZGluZyB0aHJvdWdob3V0LgoJUmVwb3J0ZWQgYnkgSm9uIExlaWNodGVyIDxqb25Ac3ltYXMuY29tPgoKMTk5OS0xMi0xOCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW46IE9vcHMsIGBsYXJnYXJnJyAtPiBgbGFzdGFyZycuCgoJKiBsdG1haW4uaW4gKC1XYywgLVhjb21waWxlcik6IEltcGxlbWVudGVkIGluIGNvbXBpbGUgbW9kZS4KCgkqIGx0bWFpbi5pbiAoLVhjb21waWxlciwgLVhsaW5rZXIpOiBBZGQgdG8gY29tcGlsZV9jb21tYW5kIGFuZAoJZmluYWxpemVfY29tbWFuZC4KCSgtV2MsIC1XbCk6IExpa2V3aXNlLgoKCSogdGVzdHMvcXVvdGUudGVzdDogQWRqdXN0IHF1b3Rpbmcgc3R5bGUgb2YgLVdsLgoKCSogbHRtYWluLmluOiBPb3BzLCBgZWNobycgLT4gYCRlY2hvJy4KCgkqIGx0bWFpbi5pbiAoLVdsLCAtV2MpOiBNYWtlIGNvbW1hcyBhcmd1bWVudCBzZXBhcmF0b3JzLCBqdXN0IGxpa2UKCWluIGdjYy4KCgkqIGx0bWFpbi5pbiAobGlidG9vbF9hcmdzKTogR2V0IGFsbCBhcmd1bWVudHMgcHJvcGVybHkgZW5jbG9zZWQgaW4KCXF1b3RlcyBhbmQgYmFja3NsYXNoLXByb3RlY3RlZCB3aGVuIG5lZWRlZC4KCjE5OTktMTItMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRkbC5tNDogUmVuYW1lZCBmcm9tLi4uCgkqIGxpYmx0ZGwvbHRkbC5tNDogdGhhdCBubyBsb25nZXIgZXhpc3RzLgoJKiBjb25maWd1cmUuaW4gKEFDSU5DTFVERV9NNF9MSVNUKTogUmVtb3ZlZCBsaWJsdGRsL2FjaW5jbHVkZS5tNC4KCSogTWFrZWZpbGUuYW0gKGFjbG9jYWxfbWFjcm9zKTogQWRkZWQgbHRkbC5tNC4KCShsaWJsdGRsL2FjaW5jbHVkZS5tNCk6IENvbmNhdGVuYXRlIGxpYnRvb2wubTQgYW5kIGx0ZGwubTQuCgkqIGJvb3RzdHJhcDogTGlrZXdpc2UuCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKEFDTE9DQUwpOiBSZW1vdmUgdGhlIGRlZmluaXRpb24uICBSZWx5aW5nCgl1cG9uIC1JIG1heSBsZWFkIHRvIGR1cGxpY2F0ZXMuCgkqIGRvYy9saWJ0b29sLnRleGk6IFN1Z2dlc3QgYXBwZW5kaW5nIGx0ZGwubTQgdG8gYWNpbmNsdWRlLm00LgoJKiBsaWJ0b29saXplLmluOiBDaGVjayBBQ19MSUJfTFRETCB2ZXJzaW9uIG51bWJlciBpbiBhY2xvY2FsLm00LgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKHdpdGhfYXV4ZGlyKTogRG8gbm90IHVzZSBpdCBhcyB0aGUKCWFyZ3VtZW50IG9mIEFDX0NPTkZJR19BVVhfRElSLCBhdXRvbWFrZSByZXF1aXJlcyBhIGxpdGVyYWwgaGVyZS4KCVVzZSBBQ19DT05GSUdfQVVYX0RJUlMvRElSX0RFRkFVTFQgaW5zdGVhZC4KCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKEFDTE9DQUwpOiBEZWZpbmUgd2l0aCBgLUkgLicsIGFzIGluCglib290c3RyYXAuCgoxOTk5LTEyLTE1ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHBhdGggdG8gYXV4aWxpYXJ5IGZpbGVzIGNhbiBiZSBzcGVjaWZpZWQKCSAgdXNpbmcgLS13aXRoLWF1eGRpciAoaWRlYSBieSBIb3dhcmQgQ2h1IDxoeWNAaGlnaGxhbmRzdW4uY29tPikKCgkqIGx0bWFpbi5pbjogZG9uJ3QgcmVtb3ZlIG11bHRpcGxlIG9jY3VyZW5jZXMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKCSAgb2YgYSBsaWJyYXJ5LCBvdGhlcndpc2UgbWFueSBkZXBlbmRlbmNpZXMgd291bGQgZ2V0IGxvc3QKCgkqIGJvb3RzdHJhcDogdXNlICJhY2xvY2FsIC1JIC4iIGluc3RlYWQgb2YgYWRkaW5nIHRoZSBjb250ZW50cwoJICBvZiBsdGRsLm00IHRvIGFjaW5jbHVkZS5tNAoKMTk5OS0xMi0xMyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiB1cGRhdGVkLgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBVc2UgLW5vLXVuZGVmaW5lZCBmb3IgZGxsIGNvbXBsaWFuY2UuCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBVc2UgQUNfTElCVE9PTF9XSU4zMl9ETEwgZm9yIGRsbAoJY29tcGxpYW5jZS4KCSogbGlibHRkbC9sdGRsLmM6IERlZmluZSBhbmQgdXNlIExURExfR0xPQkFMX0RBVEEgdG8gY29ycmVjdGx5CglleHBvcnQgZ2xvYmFsIGRhdGEgc3ltYm9scyBmcm9tIGxpYnRsZGwuZGxsLgoJKiBsaWJsdGRsL2x0ZGwuaDogRGVmaW5lIGFuZCB1c2UgTFRETF9TQ09QRSB0byBkZWNsYXJlIGRhdGEKCXN5bWJvbHMgYXMgZGxsZXhwb3J0LCBkbGxpbXBvcnQgb3IgcGxhaW4gb3JuYXJ5IGV4dGVybiBkZXBlbmRpbmcKCWluIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IGlzIHVzZWQuCgoJKiBkb2MvbGlidG9vbC50ZXhpIChEaXN0cmlidXRpbmcgbGlibHRkbCk6IGRvY3VtZW50IHVzZSBvZgoJbHRkbC5tNC4KCSogbGlibHRkbC9jb25maWd1cmUuaW46IFJlbW92ZWQgaGVhZGVyIGNoZWNrcywgYXMgdGhleSBhcmUKICAgICAgICBhdXRvbWF0aWNhbGx5IHBlcmZvcm1lZCBieSBBQ19MSUJfTFRETC4KCSogbGlibHRkbC9sdGRsLm00OiBBZGRlZCBoZWFkZXIgY2hlY2tzIGZyb20gY29uZmlndXJlLmluLCBzbyB0aGF0CglBQ19MSUJfTFRETCBpcyBzdWZmaWNpZW50IHRvIGNvbXBpbGUgbHRkbC5jLgoJUmVwb3J0ZWQgYnkgU3RlcGhhbiBLdWxvdyA8Y29vbG9Aa2RlLm9yZz4uCgoJKiBsdGNvbmZpZy5pbiAobHRkbGxfb2JqKTogZml4ZWQgdHlwbzogb2JqZGlyIC0+ICRvYmpkaXIKCjE5OTktMTItMTIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiosIG1pbmd3KiwgZXhwb3J0X3N5bWJvbHNfY21kcyk6IGtlZXAgYW55CglEQVRBIHRhZ3MgYXNzb2NpYXRlZCB3aXRoIHN5bWJvbHMgYnkgcmVjZW50IGRsbHRvb2wuCgkoY3lnd2luKiwgbWluZ3cqLCBhcmNoaXZlX2V4cHN5bV9jbWRzKTogSG9ub3IgYW55IERBVEEgdGFncwoJZm91bmQgaW4gdGhlIHN5bWJvbCBsaXN0LgoJUmVwb3J0ZWQgYnkgSm9uIExlaWNodGVyIDxqb25Ac3ltYXMuY29tPi4KCjE5OTktMTItMTAgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCUZyb20gU3RlcGhhbiBLdWxvdyA8Y29vbG9Aa2RlLm9yZz4KCSogbGlibHRkbC9sdGRsLm00OiAgQWRkIGFyZyAzIHRvIEFDX0RFRklORSdzIHRvIHNhdmUgdGhlIHVzZXIKCWZyb20gaGF2aW5nIHRvIGhhY2sgYWNjb25maWcuaC4KCjE5OTktMTItMDYgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogVXBkYXRlZC4KCSogVE9ETzogTm90ZSBzb21lIGNsZWFudXBzIHRoYXQgYXJlIG5vdyBuZWVkZWQuCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBVc2UgdGhlIG5ldyBtYWNyb2lzZWQgdGVzdHMuCgkqIGxpYmx0ZGwvbHRkbC5tNDogTmV3IGZpbGUsIG1hY3JvaXNlZCB0ZXN0cyBmb3JtZXJseSBpbgoJbGlibHRkbC9jb25maWd1cmUuaW4uCglSZXBvcnRlZCBieSBTdGVwaGFuIEt1bG93IDxjb29sb0BrZGUub3JnPi4KCglGcm9tIFRpbSBNb29uZXkgIDxtb29uZXlAZG9nYmVydC5jYy5uZHN1Lk5vRGFrLmVkdT4KCSogbHRjb25maWcuaW46ICBzcGxpdCBvZmYgdGhlIG9zZjMgc2VjdGlvbiwgc28gdGhhdCB0aGUgb3NmNCBhbmQKCW9zZjUgc2VjdGlvbnMgY2FuIGFkZCBgLW1zeW0nIHRvIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGxpbmtlcgoJZm9yIHNoYXJlZCBsaWJzLgoKMTk5OS0xMi0wMyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoYWNfY29tcGlsZSk6IFVzZSAkYWNfZXh0IGluc3RlYWQgb2YgLmMuCgkoYWNfbGluayk6IExpa2V3aXNlLgoJKGRsZmNuLmgsIGFjX3RyeSk6IERvIG5vdCBhZGQgZmlsZW5hbWUsIGl0IGlzIGFscmVhZHkgaW4KCWFjX2NvbXBpbGUuCglSZXBvcnRlZCBieSBTdGVwaGFuZSBDb252ZXJzeSA8U3RlcGhhbmUuQ29udmVyc3lAbHJpLmZyPgoKCSogbHRjb25maWcuaW4gKGxpbnV4LWdudSopOiBEaXNhYmxlIGhhcmRjb2RlX2ludG9fbGlicyB1bnRpbCBpdAoJd29ya3MgdG9nZXRoZXIgd2l0aCBmYXN0X2luc3RhbGwuCgoJKiBsaWJ0b29sLm00OiBVc2UgaG9zdCB3aGVuIC0tdGFyZ2V0IGlzIG5vdCBzcGVjaWZpZWQuCgoJKiBjb25maWd1cmUuaW46IEFDX1NVQlNUIHZhcmlhYmxlcyB0aGF0IGFyZSB1c2VkIGJ5IGx0Y29uZmlnIHRvCglidWlsZCBsaWJ0b29sLgoKCSogbHRjb25maWcuaW4gKGlyaXg2Kik6IERvIG5vdCBvdmVycmlkZSBkZXBsaWJzX2NoZWNrX21ldGhvZAoJaGVyZS4KCgkqIGxpYnRvb2wubTQ6IERvIG5vdCBBQ19TVUJTVCBhbnl0aGluZyBvdGhlciB0aGFuIExJQlRPT0wuCgoxOTk5LTExLTIwICBNaWNoYWVsIEZvcnN0ZXIgIDxlbWFpbEBtaWNoYWVsLWZvcnN0ZXIuZGU+CgoJKiBsdGNvbmZpZy5pbiAobGludXgtZ251Kik6IFNldCBoYXJkY29kZV9pbnRvX2xpYnM9eWVzLgoKMTk5OS0xMS0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbjogIEJlIGZyaWVuZGxpZXIgdG8gQysrIGNvbXBpbGVycyB3aGVuIHRlc3RpbmcKCWZvciBkbG9wZW4gc3VwcG9ydC4KCVJlcG9ydGVkIGJ5IFN0ZXBoYW4gS3Vsb3cgPGNvb2xvQGl0bS5tdS1sdWViZWNrLmRlPgoKMTk5OS0xMS0yNiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00OiAgYmV0dGVyIHVzZSBvZiAkdGFyZ2V0IGluc3RlYWQgb2YgJGhvc3QgdG8gc3VwcG9ydAoJY3Jvc3MgY29tcGlsYXRpb24uCglSZXBvcnRlZCBieSBTYW0gTGF0aW5nYSA8c2xvdWtlbkBkZXZvbHV0aW9uLmNvbT4KCjE5OTktMTEtMTYgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBjb25maWd1cmUuaW46IGdlbmVyYXRlIGx0Y29uZmlnIGFuZCBsdG1haW4uc2ggYmVmb3JlIGNvbmZpZ3VyaW5nCgkgIGxpYmx0ZGwKCjE5OTktMTEtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogdGVzdHMvc2gudGVzdDogTmV3IHRlc3QgdG8gZGV0ZWN0IHVzZXMgb2YgcXVvdGVzIHdpdGhpbgoJYmFja3RpY2tzIHdpdGhpbiBxdW90ZXMuCgkqIGx0Y29uZmlnLmluLCBsdG1haW4uaW46IEZpeCBkZXRlY3RlZCBlcnJvcnMuICBNYXJrIGZhbHNlCglwb3NpdGl2ZXMgd2l0aCBhIGNvbW1lbnQgdGhhdCBkaXNhYmxlcyB0aGUgZGV0ZWN0b3IuCglSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlIDxha2ltQGVwaXRhLmZyPgoKCSogY29uZmlndXJlLmluOiBNb3ZlIGx0Y29uZmlnIGFuZCBsdG1haW4uc2ggZ2VuZXJhdGlvbiBiYWNrLi4uCgkqIE1ha2VmaWxlLmFtOiBoZXJlLgoKMTk5OS0xMS0wMiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIE5FV1M6IHVwZGF0ZWQKCSogVEhBTktTOiBhZGRlZCBPbGx5IEJldHRzIGFuZCBQYXZlbCBSb3NraW4KCSogZG9jL2xpYnRvb2wudGV4aTogZml4IHR5cG8KCgkqIGZpeCBtYWpvciBidWdzIHdoaWNoIHJlbmRlcmVkIGxpYnRvb2wgdmlydHVhbGx5CgkgIHVudXNhYmxlIChpLmUuIG5vdCBwb3J0YWJsZSk6CgkqIGx0Y29uZmlnLmluOiBkb24ndCBoYXJkY29kZSBzeXN0ZW0gZGVwZW5kZW50IHZhcmlhYmxlcyBpbiBsdGNvbmZpZyEhCgkgIGJ1dCBzZXQgc2FuZSBkZWZhdWx0cwoJKiBNYWtlZmlsZS5hbTogcGFzcyB2YXJpYWJsZXMgZnJvbSBBQ19MSUJUT09MX1NFVFVQIHRvIGx0Y29uZmlnCgkqIGxpYnRvb2wubTQ6IGRpdHRvLCBmaXggdHlwbyBpbiBBQ19QUk9HX0xEX1JFTE9BRF9GTEFHCgoJKiBsdGNvbmZpZy5pbjogdXNlIG9sZF9kZXBsaWJzIGZvciBhcmNoaXZlcywgdG9vCgkgIHJlbW92ZSBzZWNvbmQgb2NjdXJlbmNlIG9mIHN5c3Y1CgkqIGx0bWFpbi5pbjogZml4IHR5cG8sIGZpeCB0aGUgc2Vjb25kIG9jY3VyZW5jZSBvZiAtRFBJQywgdG9vCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBpbmNyZW1lbnQgdmVyc2lvbiBudW1iZXIsIGZpeCB0eXBvCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbHN5bSk6IGRvbid0IHJlcG9ydCBhbiBlcnJvciBpZiB0aGUKCSAgbGlibHRkbC1zdHlsZSBzeW1ib2wgbmFtZSB3YXNuJ3QgZm91bmQKCjE5OTktMTEtMDIgIFdvbGZnYW5nIFJhcHAgPHVscmlzQGJuLXVsbS5kZT4KCgkqIGx0Y29uZmlnLmluOiBhZGQgc3VwcG9ydCBmb3IgVW5peHdhcmUgKHN5c3Y0LjJ1dzIqKQoKMTk5OS0xMC0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW46ICBEYW1uaXQhICBDeWd3aW4gY3ZzIGNvbW1pdHRlZCBhbGwgdGhlCglkb3MgbGluZSBlbmRpbmdzLgoKMTk5OS0xMC0yOCAgU3RlcGhhbmUgQ29udmVyc3kgIDxTdGVwaGFuZS5Db252ZXJzeUBscmkuZnI+CgoJKiBsdG1haW4uaW4gKC1EUElDKTogIGNoYW5nZWQgdGhlIG9yZGVyIG9mIHBpYyBmbGFncyBhIGxpdHRsZSB0bwoJcHJldmVudCB1cHNldHRpbmcgdGhlIHNnaSBjKysgY29tcGlsZXIuCgoxOTk5LTEwLTI4ICBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsdGNvbmZpZy5pbiAob3B0X2NyKTogIEhhbmRsZSBjcmxmIHNlcXVlbmNlcyBvdXRwdXQgYnkgdGhlCgltaW5ndyB0b29sY2hhaW4uCgoJKiBsaWJ0b29sLm00OiAgVGhpcmQgdGltZSBsdWNreSwgd2l0aCBUb3IncyBwYXRjaC4KCjE5OTktMTAtMTkgIFRvciBMaWxscXZpc3QgIDx0bWxAaWtpLmZpPgoKCSogbGlidG9vbC5tNDogIHRoZXNlIHdhcyBhIG1pc3NpbmcgYConIGluIHRoZSAtbW5vLWN5Z3dpbgoJbWF0Y2guCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIGx0ZGxsX29iaik6IGZpeGVkIGEgcXVvdGluZyBlcnJvci4KCShleHBvcnRfc3ltYm9sc19jbWRzKTogYWRkZWQgbWlzc2luZyBjb3NtZXRpYyBuZXdsaW5lLgoKMTk5OS0xMC0xOCAgVG9yIExpbGxxdmlzdCAgPHRtbEBpa2kuZmk+CgoJKiBsaWJ0b29sLm00OiB0ZXN0IGNvbW1hbmQgdXNlZCA9PSB3aGljaCBzaG91bGQgYmUgPS4KCVN1cHBvcnQgLW1uby1jeWd3aW4gZmxhZyBmb3IgYnVpbGRpbmcgbWluZ3czMiBkbGxzLgoJKiBsdGNvbmZpZy5pbiAoZmlsZV9tYWdpY19jbWQpOiBhZGQgbWlzc2luZyBxdW90ZXMuCgkoZGVwbGlic19jaGVja19tZXRob2QpOiBhbmQgaGVyZS4KCjE5OTktMTAtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsb3Blbik6IERvIG5vdCBzZWFyY2ggcGF0aHMgd2hlbiB0aGUKCXNwZWNpZmllZCBsaWJyYXJ5IGlzIG5vdCBqdXN0IGEgYmFzZW5hbWUuCgoxOTk5LTEwLTEwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX1BBVEhfRklMRSk6IG5ldyBtYWNybyByZXBsYWNlcwoJQUNfUEFUSF9UT09MX0dSRVBfT1VUUFVULgoJKEFDX1BBVEhfVE9PTF9QUkVGSVgpOiBuZXcgbWFjcm8gcmVwbGFjZXMKCUFDX1BBVEhfUFJPR19HUkVQX09VVFBVVC4KCShBQ19MRF9SRUxPQURfRkxBRyk6ICBtaWdyYXRlZCBmcm9tIGx0Y29uZmlnLmluLgoJKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogZGl0dG8uCgkqIGx0Y29uZmlnLmluIChyZWxvYWRfZmxhZyk6IG1vdmVkIHRvIGxpYnRvb2wubTQuCgkoZGVwbGJzX2NoZWNrX21ldGhvZCk6IGRpdHRvLgoKMTk5OS0xMC0wNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChBQ19QQVRIX1BST0dfVkVSU0lPTl9HUkVQKTogcmVtb3ZlZCBpbiBmYXZvdXIgb2YgdGhlCgltb3JlIGdlbmVyYWwgQUNfUEFUSF9QUk9HX0dSRVBfT1VUUFVULgoJKEFDX1BBVEhfVE9PTF9WRVJTSU9OX0dSRVApOiByZW1vdmVkIGluIGZhdm91ciBvZiB0aGUgbW9yZSBnZW5lcmFsCglBQ19QQVRIX1RPT0xfR1JFUF9PVVRQVVQuCgkoQUNfUFJPR19MSUJUT09MKTogIFNlYXJjaCBmb3IgYSB3b3JraW5nIGZpbmQgcHJvZ3JhbSBpbiB0aGUKCXVzZXIncyBQQVRIIHVzaW5nIHRoZSBuZXcgbWFjcm9zLgoKMTk5OS0xMC0wNiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiB1cGR0YWVkLgogICAgICAgICogbHRjb25maWcuaW46IEFjY2VwdCBvc2Y1LgogICAgICAgIFJlcG9ydGVkIGJ5IFNhc2NoYSBTY2h1bWFubiA8c2FzY2hhQHNjaHVtYW5uLmN4PgoKMTk5OS0xMC0wNCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW4gKC1uby1pbnN0YWxsKTogIFRoaXMgZG9lc24ndCB3b3JrIG9uIHdpbjMyIHNpbmNlCgl0aGUgc2VhcmNoIHBhdGggZm9yIGxpYnJhcmllcyBpcyBub3QgZW5jb2RlZCBpbiB0aGUgYmluYXJ5LAoJYW5kIGRsbHMgbm90IGluICRQQVRIIHdvbid0IGJlIGZvdW5kLiAgRmFsbCBiYWNrIHRvIC1uby1mYXN0LWluc3RhbGwKCWluc3RlYWQuCgoJKiBsdG1haW4uaW4gKC1uby1mYXN0LWluc3RhbGwpOiAgV3JhcHBlciBzY3JpcHQgdXNlZCB0byBhZGQgdGhlCglleGVleHQgb24gYWdhaW4gd2hlbiBuYW1pbmcgdGhlIHdyYXBwZWQgZXhlY3V0YWJsZS4KCjE5OTktMTAtMDMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW46ICBTZXQgJEZJTEUgdG8gQEZJTEVAIGZvciBzdWJzdGl0dXRpb24gd2l0aAoJdGhlIHZhbHVlIGZvdW5kIGluIGxpYnRvb2wubTQgYXQgY29uZmlndXJlIHRpbWUuCgkqIGxpYnRvb2wubTQgKEFDX1BBVEhfVE9PTF9HUkVQX1ZFUlNJT04pOiAgTmV3IG1hY3JvLCBjb21iaW5lcwoJQUNfUEFUSF9QUk9HIGFuZCBBQ19DSEVDS19UT09MIHdpdGggYSB0ZXN0IHdoaWNoIGdyZXBzIHRoZQoJb3V0cHV0IG9mICRhY19kaXIvJHthY19wcmVmaXh9PHRvb2w+IC0tdmVyc2lvbiBmb3IgYQoJZ2l2ZW4gcmVnZXguCgkoQUNfUEFUSF9QUk9HX0dSRVBfVkVSU0lPTik6ICBOZXcgbWFjcm8gdXNlZCBieSB0aGUgYWJvdmUuCgkoQUNfTElCVE9PTF9TRVRVUCk6IFVzZSB0aGUgbmV3IG1hY3JvcyB0byBzZWFyY2ggdGhlIFBBVEgKCVtzdGFydGluZyBhdCAvdXNyL2Jpbl0gZm9yIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGFjY2VwdHMKCS0tdmVyc2lvbiBhbmQgaGFzICJmaWxlIiBpbiBpdHMgLS12ZXJzaW9uIG91dHB1dC4KCjE5OTktMTAtMDMgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiBuZXcgLW5vLWluc3RhbGwgZmxhZwoJKiBjb25maWd1cmUuaW46IGZpeCB0eXBvCgkqIGRvYy9saWJ0b29sLnRleGkoTGluayBtb2RlKTogZG9jdW1lbnQgLW5vLWluc3RhbGwgZmxhZywKCSAgY29ycmVjdCAtbm8tZmFzdC1pbnN0YWxsIGRvY3MKCSogbGlidG9vbC5tNDogY2hlY2sgZm9yICJmaWxlIiBjb21tYW5kCgkqIGx0Y29uZmlnLmluOiBkb24ndCBoYXJkY29kZSAvdXNyL2Jpbi9maWxlLCByZW1vdmUgc2Vjb25kCgkgIGRlZmluaXRpb24gb2Ygc3lzdjUsIHJlcGxhY2UgbGlua29wdHMgLT4gbGlua2VyX2ZsYWdzCgkqIGx0bWFpbi5pbjogYWRkIG5ldyAtbm8taW5zdGFsbCBmbGFnLCBwcmludCBoZWxwIGZvciAtbm8taW5zdGFsbAoJICBhbmQgLW5vLWZhc3QtaW5zdGFsbCBmbGFncwoKMTk5OS0xMC0wMyAgT2xseSBCZXR0cyA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsdG1haW4uaW46IGFsd2F5cyBjcmVhdGUgb3V0cHV0X29iamRpcgoKMTk5OS0xMC0wMyAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBkb24ndCBwcmVzZXJ2ZSBmaWxlIGF0dHJpYnV0ZXMgd2hlbgoJICBpbnN0YWxsaW5nIHRoZSBsaWJsdGRsIHNvdXJjZXMKCjE5OTktMTAtMDEgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogY29uZmlndXJlLmluIChBQ19PVVRQVVRfQ09NTUFORFMpOiBnZW5lcmF0ZSBsdG1haW4uc2gKCSogTWFrZWZpbGUuYW0gKGx0bWFpbi5zaCBsdGNvbmZpZyk6IHJlbW92ZWQuICBBdXRvbWFrZSBpbnNlcnRzIHRoZQoJcnVsZXMgdG8gYXV0b21hdGljYWxseSBjYWxsIGNvbmZpZy5zdGF0dXMuCgoJKiBsaWJ0b29sLm00OiBiZSBzdXJlIHRvIEFDX1NVQlNUIHZhbHVlcyBubyBsb25nZXIgdGVzdGVkIGluCglsdGNvbmZpZy5pbi4KCSogbHRjb25maWcuaW46IHJlcGxhY2VkIHNldmVyYWwgb2YgdGhlIHNpbXBsZSBmZWF0dXJlIHRlc3RzIHdpdGgKCXN1YnN0aXR1dGlvbnMgZnJvbSBjb25maWcuc3RhdHVzLgoJKiBNYWtlZmlsZS5hbSAobHRjb25maWcpOiBnZW5lcmF0ZSBsdGNvbmZpZyB3aXRoIGNvbmZpZy5zdGF0dXMuCgkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUKTogZ2VuZXJhdGUgbHRjb25maWcgd2l0aCBjb25maWcuc3RhdHVzLgoKMTk5OS0wOS0zMCAgRG9uYWxkIEFuZGVyc29uICA8ZGRhQHdvcmxkLnN0ZC5jb20+CgoJKiBsdGNvbmZpZy5pbiAoc2NvMy4ydjUpOiB1c2UgcGFzc19hbGwgZGVwbGlic19jaGVja19tZXRob2QKCWZvciBTQ08zLjIuCgoxOTk5LTA5LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluICh3aG9sZS1hcmNoaXZlLWZsYWctc3BlYyk6ICBJIGhhZCBiZWVuCgl3b25kZXJpbmcgd2h5IG15IGZpbGUgc3lzdGVtIHdhcyBmaWxsaW5nIHVwIHdpdGggZW1wdHkKCWZpbGVzIG5hbWVkIGA3MScuLi4gc2VlbXMgSSBmb3Jnb3QgdG8gaG9sZCBpbiB0aGUKCXNoaWZ0IGtleSB3aGVuIHJlZGlyZWN0aW5nIHN0ZGVyciwgMj4mMS4gIERvaCEKCjE5OTktMDktMjkgIFZhZGltICA8dmFkaW1Ab2xseS5ydT4KCgkqIGx0Y29uZmlnLmluIChzeXN2KTogIE1vcmUgVVc3IHN1cHBvcnQuCgoxOTk5LTA5LTI4ICBBbGJlcnQgQ2hlbmcgIDxhY2hlbmdAbmNzYS51aXVjLmVkdT4KCgkqIGx0bWFpbi5pbiAoc2hsaWJwYXRoX3Zhcik6IGVuc3VyZSB0aGUgdmFyaWFibGUgaXMgbm9uLWVtcHR5IGJlZm9yZQoJZXhwb3J0aW5nIGl0LgoKMTk5OS0wOS0yNyAgTWFuZnJlZCBXZWljaGVsICA8d2VpY2hlbEBnbG9iYWwubmFjYW1hci5kZT4KCgkqIGx0Y29uZmlnLmluIChzeXN2NSk6IEFkZGVkIHN1cHBvcnQgcmVxdWlyZWQgZm9yIHNoYXJlZAoJbGlicmFyeSBsaW5raW5nIG9uIFNDTyBVVzcuCgoxOTk5LTA5LTIyICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluICh3aG9sZS1hcmNoaXZlLWZsYWctc3BlYyk6IHRlc3Qgd2hldGhlciB0aGUKCXZlcnNpb24gb2YgR05VIGxkIGJlaW5nIHVzZWQgdW5kZXJzdGFuZHMgLS13aG9sZS1hcmNoaXZlCgliZWZvcmUgdXNpbmcgaXQuCgoxOTk5LTA5LTE5ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRtYWluLmluOiBkb24ndCBpZ25vcmUgY29udmVuaWVuY2UgbGlicmFyaWVzIGZvciBvYmplY3RzL2FyY2hpdmVzCgkgICh0ZW1wb3JhcnkgaGFjaykKCjE5OTktMDktMTQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKENEUEFUSCk6IFNldCB0byBgOicgaW5zdGVhZCBvZiBlbXB0eS4KCSogbHRtYWluLmluIChDRFBBVEgpOiBMaWtld2lzZS4KCVJlcG9ydGVkIGJ5IEdyZWcgTWNHYXJ5IDxna21AZW5nLmFzY2VuZC5jb20+CgoxOTk5LTA4LTI0ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChsdGRsbC5jLCBpbXBnZW4uYyk6IFByZXZlbnQgdGhlIHNoZWxsIGZyb20KCWV4cGFuZGluZyB2YXJpYWJsZXMgJiBiYWNrc2xhc2ggZXNjYXBlcyB3aGVuIHdyaXRpbmcgdGhlc2UKCWZpbGVzIHRvIHRoZSBsaWJ0b29sIHNjcmlwdC4KCjE5OTktMDgtMjQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiBtZW50aW9uIGZpeGVzCgkqIGRvYy9QTEFURk9STVM6IEdOVS9IdXJkIHVwZGF0ZQoJKiBkZXBkZW1vOiBtYWtlIHVzZSBvZiB2YXJpYWJsZXMKCSogbHRjb25maWcuaW46IHVzZSBDQyAtRSB3aGVuIGNoZWNraW5nIGZvciBFTEYgc3VwcG9ydAoJICBvbiBOZXRCU0QgKHJlcG9ydGVkIGJ5IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4pLAoJICByZXBsYWNlIGFsbCBvY2N1cmVuY2VzIG9mICdsaW5rb3B0cycgd2l0aCAnbGlua2VyX2ZsYWdzJwoJKiBsdG1haW4uaW46IG1vdmUgbHRkbGwuYyBhbmQgaW1wZ2VuLmMgdG8gbHRjb25maWcuaW4gYW5kCgkgIG9ubHkgYWRkIHRoZW0gdG8gdGhlIGxpYnRvb2wgc2NyaXB0IGlmIGl0J3MgbmVjZXNzYXJ5CgoxOTk5LTA4LTI0ICBCb3lkIEdlcmJlciAgPGdlcmJlcmJAemVuZXouY29tPgoKCSogbHRjb25maWcuaW46IGFkZCBzdXBwb3J0IGZvciBVbml4V2FyZSA3LlguWAoJKiBkb2MvUExBVEZPUk1TOiBhZGQgbmV3IHBsYXRmb3JtcwoKMTk5OS0wOC0yNCAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCB1c2Ugb2Ygbm9pbnN0X0xUTElCUkFSSUVTIGZvcgoJICBjb252ZW5pZW5jZSBsaWJyYXJpZXMKCgkqIGx0Y29uZmlnLmluOiBjaGVjayBmb3IgZnJlZWJzZGVsZjMsIG5vdCBqdXN0IGZyZWVic2QzLgoJU2V0IGhhcmRjb2RlX2ludG9fbGlicz15ZXMgZm9yIEZyZWVCU0QgMy4wIGFuZCAzLjEKCgkqIGx0bWFpbi5pbjogZW5hYmxlIHdvcmthcm91bmQgZm9yIGZyZWVic2RlbGYzLjAKCjE5OTktMDgtMjQgIEJlcnQgRHJpZWh1aXMgIDxiZXJ0X2RyaWVodWlzQG5sLmNvbXB1d2FyZS5jb20+CgoJKiBsdGNvbmZpZy5pbjogZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIGlzIC1yZHluYW1pYyBvbiBCU0QvT1MKCjE5OTktMDgtMDcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9DT1BZSU5HLkxJQjogVXBkYXRlIHRvIHZlcnNpb24gMi4xLgoJKiBsaWJsdGRsL2x0ZGwuaCwgbGlibHRkbC9sdGRsLmM6IFVwZGF0ZSBGU0YgYWRkcmVzcy4KCjE5OTktMDgtMDMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlidG9vbC5tNCAobWluZ3cqLCBBQ19QUk9HX0xEKTogdXNlIHRyIGZvciBjYXJyaWFnZSByZXR1cm4KCXN0cmlwcGluZy4KCSogbHRjb25maWcuaW46IGRpdHRvLgoJRnJvbSBPbGx5IEJldHRzIDxvbGx5QG11c2NhdC5jby51az4KCjE5OTktMDgtMDIgIE9sbHkgQmV0dHMgIDxvbGx5QG11c2NhdC5jby51az4KCgkqIGRvYy9saWJ0b29sLnRleGkgKENvbXBpbGUgbW9kZSk6IHR5cG8gY29ycmVjdGlvbi4KCShMaW5rIG1vZGUpOiBhbmQgYW5vdGhlci4KCShSZWxlYXNlIG51bWJlcnMpOiAgYW5kIGFub3RoZXIuCgkoRGlzdHJpYnV0aW5nIGxpYmx0ZGwpOiBhbmQgYW5vdGhlci4KCShUZXN0IGRlc2NyaXB0aW9ucyk6IGFuZCBhbm90aGVyLgoJKGxpYnRvb2wgc2NyaXB0IGNvbnRlbnRzKTogYW5kIG9uZSBtb3JlLgoKCSogbGlidG9vbC5tNCAoQUNfUFJPR19MRCk6IHN0cmlwIGNhcnJpYWdlIHJldHVybnMgZnJvbSB0aGUKCW91dHB1dCBvZiBnY2MgLXByaW50LXByb2ctbmFtZT1sZC4KCSogbHRjb25maWcuaW46IGRpdHRvLgoKMTk5OS0wNy0zMCAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsdG1haW4uaW46IEVuc3VyZSB0aGF0IGdjYyBvbiBIUHNVWCB1c2VzIC1mUElDLCBvciBlbHNlCglpbml0aWFsaXNlZCBzdHJ1Y3R1cmVzIGFyZSBzb21ldGltZXMgZW1pdHRlZCBpbiB0aGUgY29kZSBzZWN0aW9uLgoKMTk5OS0wNy0zMCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBsdGNvbmZpZy5pbjogIFJlYWQgbGluZSBhdCBhIHRpbWUgdG8gYXZvaWQgdG9rZW5pc2F0aW9uIGJ5CglzaGVsbC4KCjE5OTktMDctMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluOiBGaXggY3JlYXRpb24gb2YgcmVsYXRpdmUgbGlua3MgdG8gb2JqZWN0IGZpbGVzIGluCglzdWItZGlycy4KCjE5OTktMDctMjkgIE9sbHkgQmV0dHMgIDxvbGx5QG11c2NhdC5jby51az4KCgkqIGx0Y29uZmlnLmluKGN5Z3dpbiBtaW5ndzMyLCBhcmNoaXZlX2V4cHN5bV9jbWRzKTogT25seSBjb21waWxlCglhbmQgbGluayBsdGRsbC5jIGlmIHRoZSBsaWJ0b29sLm00IG1hY3JvcyBkaXNjb3ZlcmVkIHRoYXQgaXQgaXMKCXJlcXVpcmVkLgoKMTk5OS0wNy0yNiAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogbGlidG9vbC5tNChjeWd3aW4gbWluZ3czMiwgQUNfTElCVE9PTF9TRVRVUCk6IE9vcHMuICBGaXggc29tZQoJdHlwb3MgbWFkZSBieSBFdmlsIEdhcnkgd2hpbGUgKG1pcylhcHBseWluZyBteSBwYXRjaCA6LSkuCgoJKiBsaWJ0b29sLm00KGN5Z3dpbiBtaW5ndzMyLCBBQ19MSUJUT09MX1NFVFVQKTogIE9uIHNlY29uZAoJdGhvdWdodHMsIG9ubHkgcHJvYmUgZm9yIC1tZGxsIHZzIC1kbGwgb24gbWluZ3csIGFuZCByZXZlcnQgdG8KCXRoZSBvbGQgYC1XbCwtLWRsbCAtbm9zdGFydGZpbGVzJyBvbiBjeWd3aW4uCgoxOTk5LTA3LTI0ICBFcmV6IFphZG9rICA8ZXprQGNzLmNvbHVtYmlhLmVkdT4KCgkqIGRvYy9QTEFURk9STVMgKGkqODYtKm9wZW5ic2QyLjUpOiAgTmV3IHBsYXRmb3JtLgoJU2xpZ2h0IHJlb3JkZXJpbmcgb2Ygb3RoZXIgYnNkIGVudHJpZXMuCgoxOTk5LTA3LTI0ICBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBORVdTOiBOb3RlIG5ldyB1c2VyIHZpc2libGUgY2hhbmdlcy4KCSogbGlidG9vbC5tNCAobWluZ3czMiwgQUNfTElCVE9PTF9TRVRVUCk6IHByb2JlIGZvciAtbWRsbCB2cyAtZGxsCgl1bmRlciBjeWd3aW4vbWluZ3cuCglwcm9iZSB3aGV0aGVyIHRoZSBjeWd3aW4vbWluZ3cgbGlicmFyeSBzdXBwbGllcyBhIHN0dWIgRGxsTWFpbgoJKGJ1dCB0aGlzIGluZm9ybWF0aW9uIGlzbid0IHlldCB1c2VkKS4KCSogbHRjb25maWcuaW4gKG1pbmd3MzIsIGV4dHJhY3RfZXhwc3ltc19jbWRzKTogaWYgSE9TVF9DQyBpcyBzZXQsCgl1c2UgdGhhdCB0byBidWlsZCBpbXBnZW4gc28gd2UgY2FuIHVzZSBpdCB3aGVuIGNyb3NzLWNvbXBpbGluZy4KCXVzZSBjb3JyZWN0IGVudHJ5IHBvaW50cyBmb3IgbWluZ3cgc28gc3RhdGljIEMrKyBjb25zdHJ1Y3RvcnMgZ2V0CgljYWxsZWQgZm9yIGNvZGUgaW4gdGhlIERMTC4KCSogbHRtYWluLmluIChpbXBnZW4uYyk6IGRlZmluZSBPX0JJTkFSWSB0byAwIGlmIGl0IGlzIG5vdCBpbiB0aGUKCXN5c3RlbSBoZWFkZXJzLgoKMTk5OS0wNy0yNCAgQmVydCBEcmllaHVpcyA8YmVydF9kcmllaHVpc0Bjb21wdXdhcmUuY29tPgoKCSogbHRjb25maWcuaW46ICBVcGRhdGVkIGJzZGk0IHNvbmFtZSBzcGVjcyB0byBiZSBtb3JlIGxpa2UKCWxpbnV4IGFzIGRpc2N1c3NlZCBvbiB0aGUgYnNkaSBtYWlsaW5nIGxpc3QuCgoxOTk5LTA3LTIwICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfUFJPR19SQU5MSUIpOiAgTm8gbG9uZ2VyIHJlcXVpcmVkIGFzIHdlIG5vdyB1c2UKCUFDX0NIRUNLX1RPT0wgaW4gQUNfTElCVE9PTF9TRVRVUC4KCSogbGlidG9vbC5tNCAoQUNfUFJPR19MSUJUT09MKTogIFBhc3MgdGhlICRidWlsZCB2YXJpYWJsZSB0bwoJbHRjb25maWcuCgkoQUNfUFJPR19SQU5MSUIpOiByZXBsYWNlZCB3aXRoIEFDX0NIRUNLX1RPT0wuCgkqIGx0Y29uZmlnLmluIChidWlsZCk6IG5ldyB2YXJpYWJsZSB0byBob2xkIHRoZSBidWlsZCB0cmlwbGV0Cgl3aGljaCBpcyBub3cgY2hlY2tlZCBmb3IgdW5sZXNzIC0tbm8tdmVyaWZ5IGlzIHNwZWNpZmllZC4KCSgtLWJ1aWxkKTogbmV3IGFyZ3VtZW50IHRvIHNldCB0aGUgYnVpbGQgdHJpcGxldC4KCShyYW5saWIpOiBQcmVmZXIgJHtob3N0X2FsaWFzfS1yYW5saWJbLmV4ZV0gaWYgJGJ1aWxkIGlzIGRpZmZlcmVudAoJdG8gJGhvc3QuCgkqIGRvYy9saWJ0b29sLnRleGkgKEludm9raW5nIGx0Y29uZmlnKTogRG9jdW1lbnQgLS1idWlsZCBvcHRpb24uCgkqIE5FV1M6IE5vdGUgLS1idWlsZCBvcHRpb24uCgoxOTk5LTA3LTE5ICBFcmV6IFphZG9rICA8ZXprQGNzLmNvbHVtYmlhLmVkdT4KCgkqIGRvYy9QTEFURk9STVM6IFVwZGF0ZWQgbW9zdGx5ICpic2QgcGxhdGZvcm1zLgoKMTk5OS0wNy0xOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChQb3J0aW5nIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzKTogVHlwb3MKCVJlcG9ydGVkIGJ5IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAaHVuZ3J5LmNvbT4KCjE5OTktMDctMTcgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTLCBUT0RPOiB1cGRhdGVkIChwaWMgZmxhZ3MpCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTElCVE9PTCk6IGFkZGVkIC0td2l0aC1waWMgZmxhZwoJKiBsdGNvbmZpZy5pbjogbmV3IHBpY19tb2RlIHZhcmlhYmxlIGFuZCAtLXByZWZlclstbm9uXS1waWMgZmxhZ3MsCgkgIGZpeGVkIHRoZSBzdHJpcCBjaGVjayAocmVwb3J0ZWQgYnkgS2VpdGggQm9zdGljIDxib3N0aWNAYm9zdGljLmNvbT4pCgkqIGx0bWFpbi5pbiAoY29tcGlsZSBtb2RlKTogYnVpbGQgb25seSBQSUMvbm9uLVBJQyBjb2RlIGRlcGVuZGluZwoJICBvbiBwaWNfbW9kZQoJKiBsaWJsdGRsL1JFQURNRTogZG9jdW1lbnQgdGhlIHN1cHBvcnRlZCBkbG9wZW4gaW50ZXJmYWNlcwoJKiBkb2MvbGlidG9vbC50ZXhpICh0ZXN0cyk6IGRvY3VtZW50ZWQgbmV3IHRlc3RzCgkqIHRlc3RzL01ha2VmaWxlLmFtOiBhZGRlZCBuZXcgdGVzdHMKCSogdGVzdHMvZGVtby1waWMudGVzdDogbmV3IHRlc3QgdG8gdGVzdCAtLXdpdGgtcGljCgkqIHRlc3RzL2RlbW8tbm9waWMudGVzdDogbmV3IHRlc3QgdG8gdGVzdCAtLXdpdGhvdXQtcGljCgkqIHRlc3RzL2J1aWxkLXJlbGluazIudGVzdDogdmFyaWFudCBvZiBidWlsZC1yZWxpbmsudGVzdCB0aGF0CgkgIHVzZXMgZGVwZGVtbwoKMTk5OS0wNy0wOSAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogZG9jL2xpYnRvb2wudGV4aSAoQysrIExpYnJhcmllcyk6ICBmaXhlZCBhIHR5cG8uCgoxOTk5LTA3LTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIFJFQURNRS1hbHBoYTogIGltcHJvdmVkIHRoZSByZWxlYXNlIGluc3RydWN0aW9ucyB0byBtZW50aW9uCglhY3R1YWwgbGlzdCBhZGRyZXNzZXMgZm9yIGFubm91bmNlbWVudHMsIGFuZCB1cmxzIGZvciB1cGxvYWQKCWxvY2F0aW9ucy4KCjE5OTktMDctMDMgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBkb2MvUExBVEZPUk1TOiAxLjNiIHBhc3NlcyBhbGwgdGVzdHMgb24gY3lnd2luCgoxOTk5LTA3LTAzICBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogbHRjb25maWcuaW46IGZpbmlzaF9jbWRzIGZvciBGcmVlQlNEIHJlbW92ZWQKCSogZGVwZGVtby9sMy9NYWtlZmlsZS5hbTogaW5zdGFsbCBsaWJsMy5sYSBpbnRvIGFuIGV4dHJhIGRpcmVjdG9yeQoKMTk5OS0wNy0wMiAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBjb25maWd1cmUuaW46IGJ1bXBlZCB2ZXJzaW9uIHRvIDEuM2MuCgoJR05VIGxpYnRvb2wgMS4zYiB3YXMgcmVsZWFzZWQuCgoJKiBORVdTOiBpbnNlcnRlZCB0b2RheXMgZGF0ZS4KCjE5OTktMDctMDIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZG9jL1BMQVRGT1JNUzogVGVzdGVkIG9uIGFzIG1hbnkgcGxhdGZvcm1zIGFzIHBvc3NpYmxlIGZvciBtZS4KCjE5OTktMDctMDEgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiB1cGRhdGVkCgkqIGRvYy9QTEFURk9STVM6IHVwZGF0ZWQKCSogY2hhbmdlZCBteSBlbWFpbCBhZGRyZXNzCgoxOTk5LTA2LTMwICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogZGVtby9mb28uaDogdXNlIExUX1BBUkFNUyBpbnN0ZWFkIG9mIExURExfUEFSQU1TICh0aGlzIGlzIG5vdCBsaWJsdGRsKQoJKiB0ZXN0cy9idWlsZC1yZWxpbmsudGVzdDogYWxzbyBjaGVjayBmb3IgaGFyZGNvZGVfaW50b19saWJzID0geWVzLAoJICBpZiBzZXQsIHdlIG5lZWQgdG8gcmVsaW5rIGF0IGluc3RhbGwtdGltZQoKMTk5OS0wNi0yOSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIE5FV1M6IG1lbnRpb24gLW5vLWZhc3QtaW5zdGFsbCwgcmVuYW1lIGR1bW15IHRvIGZvcmNlCgkqIGRvYy9QTEFURk9STVM6IDEuM2IgcGFzc2VzIGFsbCB0ZXN0cyBvbiBHTlUvTGludXgsCgkgIEZyZWVCU0QgKDIuMi42IGFuZCAzLjEpCgkqIGRvYy9saWJ0b29sLnRleGk6IGl0J3MgcG9zc2libGUgdG8gbGluayBsaWJ0b29sIGxpYnJhcmllcwoJICB1c2luZyAtTCBhbmQgLWwsIGJldHRlciBkb2N1bWVudGF0aW9uIG9mIHVuaW5zdGFsbCBhbmQgY2xlYW4gbW9kZSwKCSAgcmVuYW1lIGR1bW15IHRvIGZvcmNlLCBkb2N1bWVudGVkIC1uby1mYXN0LWluc3RhbGwsCgkgIEFDX0xJQkxURExfKiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgQUNfUFJPR19MSUJUT09MLAoJICBkb2N1bWVudGVkIGhhcmRjb2RlX2ludG9fbGlicyBhbmQgc3RyaXBsaWIvb2xkX3N0cmlwbGliLAoJKiBsdGNvbmZpZy5pbjogc2VhcmNoIGZvciBzdHJpcCBwcm9ncmFtLCBhZGRlZCBoYXJkY29kZV9pbnRvX2xpYnMKCSAgYW5kIHN0cmlwbGliL29sZF9zdHJpcGxpYiB2YXJpYWJsZXMsIHNldCBzdHJpcCBjb21tYW5kcyBmb3IgR05VIHN0cmlwLAoJICBvbiBGcmVlQlNEID49IDMuMiBzZXQgaGFyZGNvZGVfaW50b19saWJzIHRvIHllcywKCSAgZmFzdC1pbnN0YWxsIG1vZGUgZG9lc24ndCB3b3JrIGlmIGhhcmRjb2RlX2ludG9fbGlicyA9IHllcwoJKiBsdG1haW4uaW46IHJlaW1wbGVtZW50ZWQgaGFyZGNvZGluZyBpbnRvIGxpYnJhcmllczoKCSAgbmV3IHJlbGluayBtb2RlLCBwcmVzZXJ2ZSBhbGwgbGlidG9vbCBhcmdzLCByZWxpbmsgbGlicmFyaWVzCgkgIHdoZW4gaW5zdGFsbGluZyBpZiBuZWNlc3NhcnkKCSAgYWRkZWQgLW5vLWZhc3QtaW5zdGFsbCBmbGFnLCByZW1vdmVkIHVubmVjZXNzYXJ5IGBkbG5hbWUnCgkgIGluaXRpYWxpemF0aW9uLCB1c2Ugc3RyaXBsaWIvb2xkX3N0cmlwbGliIGZvciBzdHJpcHBpbmcgbGlicmFyaWVzLAoJICBkbG5hbWUgaXMgYWx3YXlzIHNvbmFtZSBvciBpbiBsaWJyYXJ5X25hbWVzIHNvIHdlIGRvbid0IG5lZWQKCSAgdG8gaGFuZGxlIGRpZmZlcmVudCBmaWxlIG5hbWVzCgoxOTk5LTA2LTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChmcmVlYnNkKiwgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoKTogU2V0IHRvIHllcwoJdXAgdG8gcmVsZWFzZSAzLjEsIGFuZCB0byBubyBmcm9tIDMuMiBvbi4KCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoxOTk5LTA2LTI5ICBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPiwgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoZnJlZWJzZCosIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IFNldCB0bwoJeWVzOyB0ZXN0ZWQgb24gMy4xLUVMRiBieSBQYXZlbCBhbmQgb24gMi4yLjYgYnkgQWxleGFuZHJlLgoKMTk5OS0wNi0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAobGludXgtZ251KiwgZGVwbGlic19jaGVja19tZXRob2QpOiBVc2UgcGFzc19hbGwgb24KCWFscGhhLCB4ODYgYW5kIHNwYXJjIGFyY2hpdGVjdHVyZXMgYnkgbm93LCByZXZlcnRpbmcgdG8gZmlsZV9tYWdpYwoJYXQgbGVhc3Qgb24gQVJNLCB3aGVyZSBpdCBicmVha3MuCgoxOTk5LTA2LTIzICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogdXBkYXRlZAoJKiBSRUFETUU6IGFkZGVkIEdOVSBIdXJkIHRvIHRoZSBzdXBwb3J0ZWQgcGxhdGZvcm1zCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IGAtZGxwcmVvcGVuIGR1bW15JwoJICBpbnN0ZWFkIG9mIGAtZGxvcGVuIGR1bW15JwoJKiBsaWJsdGRsL2x0ZGwuYyAoc3RyY2hyKTogZml4ZWQgdHlwbyAobWlzc2luZyBzdGFyKQoKMTk5OS0wNi0yMyAgU3RlcGhhbiBLdWxvdyA8Y29vbG9AaXRtLm11LWx1ZWJlY2suZGU+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3RycmNocik6IGZpeGVkIHR5cG8gKG1pc3Npbmcgc3RhcikKCSogbGlibHRkbC9sdGRsLmMgKHRyaW0pOiB1c2UgYGNvbnN0JyB0byBzaWxlbmNlIC1Xd3JpdGUtc3RyaW5ncwoKMTk5OS0wNi0yMyAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogbHRtYWluLmluIChsdGRsbC5jKTogU3VwcG9ydCBmb3IgY3Jvc3Njb21waWxpbmcgZnJvbSBsaW51eCB0bwoJbWluZ3czMi4KCjE5OTktMDYtMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiwgZXhwb3J0X3N5bWJvbHNfY21kcyk6IElmIHRoZXJlIGlzIGFscmVhZHkKCWFuIGV4dHJhY3RlZCBhbmQgY29tcGlsZWQgbHRkbGwuYywgdGhlbiBkb24ndCBkZWxldGUsIHJlZXh0cmFjdAoJYW5kIHJlY29tcGlsZS4KCShjeWd3aW4sIGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBNYWtlIHN1cmUgdGhlIGx0ZGxsIHNvdXJjZSBoYXMgYmVlbgoJZXh0cmFjdGVkIGFuZCBjb21waWxlZCBiZWZvcmUgcmVmZXJlbmNpbmcgdGhlIG9iamVjdCwgc2luY2UgdGhlcmUKCWFyZSBwYXRocyB0aHJvdWdoIHRoZSBjb2RlIHdoaWNoIHJ1biBhcmNoaXZlX2V4cHN5bV9jbWRzIHdpdGhvdXQKCXJ1bm5pbmcgZXhwb3J0X3N5bWJvbHNfY21kcy4KCjE5OTktMDYtMjAgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRjb25maWcuaW46ICBtb3ZlZCB0aGUgdGVzdCBmb3IgTk0gYWZ0ZXIgdGhlIHRlc3QgZm9yCglub19idWlsdGluX2ZsYWcuCgoxOTk5LTA2LTIwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluOiBVc2Ugc2VkICckcScgaW5zdGVhZCBvZiBzZWQgIiIgZm9yIGNvcHlpbmcgbHRtYWluLAoJanVzdCBpbiBjYXNlIHNvbWUgc2VkIGRvZXMgbm90IHN1cHBvcnQgYW4gZW1wdHkgY29tbWFuZC4KCgkqIGx0Y29uZmlnLmluIChsaW5rX3N0YXRpY19mbGFnLCBhY19jdl9wcm9nX2NjX3N0YXRpYyk6IFVzZSB0aGUKCWxhdHRlciBpbiB0aGUgdGVzdC4KCjE5OTktMDYtMTggIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBsdGNvbmZpZy5pbiAoYnNkaTQsIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogdXNlIGEgbGVzcyByZXN0cmljdGl2ZQoJICByZWdleCAocmVwb3J0ZWQgYnkgQ2hyaXMgUC4gUm9zcyA8Y3Jvc3NAZW5nLnVzLnV1Lm5ldD4pCgkqIGx0bWFpbi5pbjogc3VwcG9ydCBgLWRsb3BlbiBkdW1teScsIGRlZmluZSBsdF9wcmVsb2FkZWRfc3ltYm9scwoJICBpZiBkbHNlbGYgIT0gbm8KCSogZG9jL2xpYnRvb2wudGV4aSAoQ29tcGlsZSBhbmQgTGluayBtb2RlKTogZG9jdW1lbnQgaXQsCgkgIGRvY3VtZW50ZWQgdGhlIC1XYywgLVdsIGZsYWdzLCBsaWJ0b29sIGRvZXMgYWxzbyBzdXBwb3J0IG5vbiBDCgkgIHNvdXJjZSBjb2RlCgoxOTk5LTA2LTE4ICBUZXVuIEJ1cmdlcnMgIDxidXJnZXJzQGVjbi5ubD4KCgkqIGx0Y29uZmlnLmluOiBDUi9MRiBmaXggZm9yIGJyb2tlbiBESkdQUCBiYXNoCgkqIGx0bWFpbi5pbjogQ1IvTEYgZml4IGZvciBESkdQUAoKMTk5OS0wNi0xOCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW4gKG91dHB1dG5hbWUpOiBXaGVuIGdlbmVyYXRpbmcgdGhlIGV4ZWN1dGFibGUgd3JhcHBlcgoJc2NyaXB0LCAkb3V0cHV0bmFtZSBhbHJlYWR5IGhhcyB0aGUgJGV4ZWV4dCBzdWZmaXgsIHNvIHdlIG5lZWRuJ3QKCWFkZCBpdCBhZ2Fpbi4KCjE5OTktMDYtMTYgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKGFjX2N2X2xpYl9kbF9kbG9wZW4pOiBtaXNzaW5nICJ4IiBpbiB0ZXN0Cgljb21wYXJpc29uIGNvcnJlY3RlZC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChzeXNfd2xsX29wZW4pOiBsaWJsdGRsIGV4cGVjdHMgdGhpcyBmdW5jdGlvbiB0bwoJZmFpbCBpZiBpdCBpcyB1bmFibGUgdG8gcGh5c2ljYWxseSBsb2FkIHRoZSBsaWJyYXJ5LiAgU2FkbHksCglMb2FkTGlicmFyeSB3aWxsIHNlYXJjaCB0aGUgbG9hZGVkIGxpYnJhcmllcyBmb3IgYSBtYXRjaCBhbmQKCXJldHVybiBvbmUgb2YgdGhlbSBpZiB0aGUgcGF0aCBzZWFyY2ggbG9hZCBmYWlscy4gIFNpbXVsYXRlIGEKCWZhaWx1cmUgaW4gdGhpcyBjYXNlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG90aGVyIEFQSXMuCglBbHNvLCBMb2FkTGlicmFyeSB0YWtlcyB0aGUgbGliZXJ0eSBvZiBhZGRpbmcgYC5kbGwnIHRvIGxpYnJhcnkKCW5hbWVzIHBhc3NlZCB3aXRob3V0IGFuIGV4dGVuc2lvbiwgd2Ugbm93IGFkZCBhIHRyYWlsaW5nIGAuJyB0bwoJcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nLgoKMTk5OS0wNi0xNSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoc3lzX3dsbF9jbG9zZSk6IFN0cmFuZ2VseSBlbm91Z2gsIE1pY3Jvc29mdCBoYXZlCglkZWNpZGVkIHRoYXQgTG9hZExpYnJhcnkgcmV0dXJucyBgMCcgZm9yIHN1Y2Nlc3MsIHlldCBGcmVlTGlicmFyeQoJcmV0dXJucyBgMCcgZm9yIGZhaWx1cmUhICBUaGUgRnJlZUxpYnJhcnkgY2FsbCB1c2VkIHRvIGludGVycHJldAoJYDAnIGFzIHN1Y2Nlc3MgZm9yIGJvdGggZnVuY3Rpb25zLgoKMTk5OS0wNi0xNCBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRjb25maWcuaW46IHVzZSBldmFsIHdoZW4gc2V0dGluZyBoYXZlX2RsZmNuX2gsIHJlZm9ybWF0dGluZwoKMTk5OS0wNi0xMiBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRtYWluLmluOiBzdG9yZSBvbGQgYXJjaGl2ZXMgaW4gZGVwbGlicyBhbmQgb2xkX2RlcGxpYnMsCgkgIHJldGFpbiB0aGUgb3JkZXIgb2YgZGVwZW5kZW5jeSBsaWJyYXJpZXMgKGV2ZW4gb2xkIGFyY2hpdmVzKSwKCSAgZGV0ZXJtaW5pbmcgdGhlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGRpZG4ndCB3b3JrIGR1ZSB0byBhIHR5cG8sCgkgIGFkZCB0aGUgbGlicmFyeSBzZWFyY2ggcGF0aHMgb2YgYWxsIGRlcGVuZGVuY3kgbGlicmFyaWVzIHdoZW4KCSAgbGlua2luZyBhIGxpYnJhcnkgKGZpeGVzIElSSVggNS4yIGJ1ZykKCjE5OTktMDYtMTAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW46IFJldmVydGVkIEp1bmUgNidzIHBhdGNoIGZvciBuZXcgR05VIGxkIG91dHB1dCwgaXQKCWlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIGxkIHJldmVydGVkIHRvIHRoZSBvcmlnaW5hbCBmb3JtYXQuCgkqIE5FV1M6IExpa2V3aXNlLgoKCSogbHRjb25maWcuaW46IFdoZW4gdGVzdGluZyBzZWxmLWRsb3BlbmluZywgdGVzdCB3aGV0aGVyIGRsY2xvc2UKCWNyYXNoZXMuICBPbiBGcmVlQlNEIDMuMSwgaXQgZG9lcy4gIDotKAoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogTGlrZXdpc2UuCgkqIE5FV1M6IE5vdGUgd29yay1hcm91bmQuCglSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKMTk5OS0wNi0wOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoZXhlZXh0KTogYXV0b2NvbmYncyBBQ19FWEVFWFQgdXNlcyAibm8iIHRvIGluZGljYXRlCglubyBleHRlbnNpb24sIGFuZCB3ZSBtdXN0IGRvIHRoZSBzYW1lIGluIG9yZGVyIHRvIHNoYXJlIHRoZSBjYWNoZQoJdmFsdWUuIEFsc28gd2UgbXVzdCBpZ25vcmUgY29uZnRlc3QuZXJyIHdoaWNoIEhQc1VYIChhdCBsZWFzdCkKCWZpbGxzIHdpdGggZ3JhdHVpdG91cyB3YXJuaW5ncy4KCShvYmpleHQpOiBmb3IgY29uc2lzdGVuY3ksIGRvIHRoZSBzYW1lIGFzIGFib3ZlLgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCjE5OTktMDYtMDkgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogbHRjb25maWcuaW4gKGV4ZWV4dCk6IFVzZSBxdW90ZXMgaW4gdGhlIHRlc3QsIHRvIHByZXZlbnQgYQoJZmFpbHVyZSBpbiBzaC50ZXN0LgoKMTk5OS0wNi0wOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdGNvbmZpZy5pbjogUmVvcmRlcmVkIHRlc3RzIHRvIGJlIG1vcmUgbGlrZSBjb25maWd1cmUuaW4ncwoJcmVjb21tZW5kZWQgb3JkZXIgKHByb2dyYW1zIGZpcnN0LCB0aGVuIGxpYnJhcmllcywgZXRjLikuCglQZXJmb3JtZWQgYSBtYW51YWwgYGBjb25zdGFudCBmb2xkaW5nIHBhc3MnJyAoZWc6IHMvZXZhbCAidGVzdAoJXCJlY2hvICckJyd7J2x0X2N2X2Rsb3Blbicrc2V0fSdgXCIgIT0gc2V0L3Rlc3QKCSIke2x0X2N2X2Rsb3BlbitzZXR9IiAhPSBzZXQvKS4KCXMvdGVzdCAiJHtmb28rc2V0fSIgPSAic2V0Ii90ZXN0ICJYJHtmb28rc2V0fSIgPSBYc2V0L2cKCgkqIGx0Y29uZmlnLmluIChsaW5rX3N0YXRpY19mbGFnKTogQWNjZXB0LCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nCglwcmVmZXJlbmNlOiB0aGUgY2FjaGVkIHZhbHVlOyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQKCWhvc3QuICBBbHNvIHRlc3QgdGhhdCB0aGUgY29tcGlsZXIgYWNjZXB0cyB0aGUgZmxhZywgYW5kIGNhY2hlCgl0aGF0IHJlc3VsdCB0b28uCgoJKiBsdGNvbmZpZy5pbiAocGljX2ZsYWcpOiBBY2NlcHQsIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcKCXByZWZlcmVuY2U6ICB0aGUgY2FjaGVkIHZhbHVlOyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQKCWhvc3QuICBBbHNvIHRlc3QgdGhhdCB0aGUgY29tcGlsZXIgYWNjZXB0cyB0aGUgZmxhZywgYW5kIGNhY2hlCgl0aGF0IHJlc3VsdCB0b28uCgoxOTk5LTA2LTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChMTl9TKTogQWNjZXB0LCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHByZWZlcmVuY2U6Cgl0aGUgY2FjaGVkIHZhbHVlOyBhbiBlbnZpcm9ubWVudCBzZXR0aW5nOyBgYGxuIC1zJycgaWYgaXQgd29ya3M7CglgYGxuJycgaWYgYGBsbiAtcycnIGRvZXNuJ3QgYXBwZWFyIHRvIHdvcmsuCgoJKiBsdGNvbmZpZy5pbiAob2JqZXh0KTogQWNjZXB0LCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHByZWZlcmVuY2U6Cgl0aGUgY2FjaGVkIHZhbHVlOyB0aGUgcmVzdWx0IG9mIGEgdGVzdCBvYmplY3QgY29tcGlsYXRpb24uCgoJKiBsdGNvbmZpZy5pbiAoUkFOTElCKTogQWNjZXB0LCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHByZWZlcmVuY2U6Cgl0aGUgY2FjaGVkIHZhbHVlOyBhbiBlbnZpcm9ubWVudCBzZXR0aW5nOyB0aGUgZmlyc3QgZmlsZSBjYWxsZWQKCWBgcmFubGliJycgaW4gdGhlIHVzZXIncyBwYXRoLgoKCSogbHRtYWluLmluIChleGVleHQpOiBVc2UgJGV4ZWV4dCB3aGVuIHdvcmtpbmcgb3V0IHRoZSBuYW1lcyBvZgoJcHJvZ3JhbXMgKGJ1dCBub3QgdGhlIHdyYXBwZXIgc2NyaXB0IGl0c2VsZiBkdWUgdG8gYSBzdHVwaWRpdHkgaW4KCXdpbjMyIHdoaWNoIGhhcmR3aXJlcyB0aGUgLmV4ZSBleHRlbnNpb24gdG8gdGhlIGJpbmFyeSBsb2FkZXIhKS4KCSogbHRjb25maWcuaW4gKGV4ZWV4dCk6IE5vdyB0aGF0IHRoZSB3cmFwcGVyIHNjcmlwdCB0cmllcyB0byBtb3ZlCglleGVjdXRhYmxlcywgd2UgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhleSBoYXZlIGFuIGV4dGVuc2lvbiAoYWxhCglBQ19FWEVFWFQpLiAgU2luY2Ugd2UgY2FuJ3QgcmVseSBvbiBBQ19FWEVFWFQgaGF2aW5nIGJlZW4gY2FsbGVkCglpbiBjb25maWd1cmUuaW4sIHdlIG11c3QgYmUgYWJsZSB0byBjaGVjayBmb3Igb3Vyc2VsdmVzLCB0aG91Z2ggd2UKCWNhbiBsb29rIGZvciBhIGNhY2hlZCByZXN1bHQgaW5jYXNlIEFDX0VYRUVYVCB3YXMgY2FsbGVkLgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiwgcGljX2ZsYWcpOiAgRm9yY2Ugc2VwYXJhdGUgY29tcGlsYXRpb24gb2YKCW9iamVjdHMgZm9yIGRsbHMgdnMuIG9iamVjdHMgZm9yIHN0YXRpYyBhcmNoaXZlcy4gIFVzaW5nIGEgY3BwCgltYWNybyBhbHNvIGFsbG93cyB1cyB0byBkZWNpZGUgd2hldGhlciBvciBub3Qgd2UgbmVlZCB0byB1c2UKCWRsbGV4cG9ydC9pbXBvcnQgZGVjbGFyYXRpb25zLgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiwgbmVlZF92ZXJzaW9uKTogU2V0IHRvIG5vLCBvdGhlcndpc2UgbW9kdWxlCglkbGwncyBlbmQgdXAgd2l0aCBtaWdodHkgbG9uZyBuYW1lcyEKCjE5OTktMDYtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW46IFN1cHBvcnQgbmV3IEdOVSBsZCAtLWhlbHAgb3V0cHV0IGZvcm1hdC4KCSogTkVXUzogIExpa2V3aXNlLgoJUmVwb3J0ZWQgYnkgR2HrbCBRdelyaSA8Z2FlbEBiYW91bGUuZHluZG5zLm9yZz4gYW5kCglILkouIEx1IDxoamxAdmFyZXNlYXJjaC5jb20+LgoKMTk5OS0wNi0wNSAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbjogVXBkYXRlIHN1cHBvcnQgZm9yIHRoZSBIdXJkLiAgTWFrZSBzdXJlIHRoYXQgdGhlCglzb25hbWUgaW5jbHVkZXMgdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyIGFuZCBjcmVhdGUgdGhlCXJpZ2h0CglsaW5rcy4gIEFsbG93IHNoYXJlZCBvYmplY3RzIHdpdGhvdXQgdGhlIGBsaWInIHByZWZpeCBhbmQgd2l0aG91dAoJdmVyc2lvbiBpbmZvcm1hdGlvbi4KCjE5OTktMDYtMDIgTmljayBSYXNtdXNzZW4gPG5pY2tAaml2ZS5vcmc+CgoJKiBsdG1haW4uaW4gKGxpbmspOiB1c2UgIiRub25vcHQiIGFzIHRoZSBjb21waWxlciBmb3IKCSAgY29tcGlsZS9maW5hbGl6ZV9jb21tYW5kCgoxOTk5LTA1LTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIFRPRE86IFJlbW92ZSB0aGUgc2hvcnQgbGlzdCBvZiBwZW9wbGUgaW50ZXJlc3RlZCBpbiBDKysKCWNvbnN0cnVjdG9yczsgaXQncyBub3QgbWVhbmluZ2Z1bCwgc2luY2UgdGhlcmUgYXJlIHNvIG1hbnkgbW9yZQoJcGVvcGxlIHJlcXVlc3RpbmcgdGhpcyBmZWF0dXJlLCBhbmQgd2UganVzdCBjYW4ndCBtYWludGFpbiBpdAoJYWNjdXJhdGUuCgoxOTk5LTA1LTI3ICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGx0Y29uZmlnLmluIChHTlUgSHVyZCwgZGVwbGlic19jaGVja19tZXRob2QpOiBVc2UgcGFzc19hbGwuCgoxOTk5LTA1LTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4sIE9sbHkgQmV0dHMgIDxvbGx5QG11c2NhdC5jby51az4KCgkqIGx0bWFpbi5pbjogRXhwYW5kIGNvbnZlbmllbmNlIGxpYnJhcmllcyB3aGVuIGNyZWF0aW5nIHJlbG9hZGFibGUKCW9iamVjdHMuCgkqIE5FV1M6IERpdHRvLgoKMTk5OS0wNS0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBORVdTOiBNZW50aW9uIHRoZSB0d28gYnVnZml4ZXMgYmVsb3cuCgoJKiBsdG1haW4uaW46IE9ubHkgY3JlYXRlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRvIGV4dHJhY3QKCWNvbnZlbmllbmNlIGxpYnJhcmllcyB3aGVuICRjb252ZW5pZW5jZSBpcyBub3QgZW1wdHkuICBJdCB3b3VsZAoJYWx3YXlzIGJlIGNyZWF0ZWQgb24gc3lzdGVtcyB0aGF0IGRpZCBub3Qgc3VwcG9ydAoJd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMuCgoJKiBsdGNvbmZpZy5pbiAoZXhwb3J0X3N5bWJvbHNfY21kcyk6IEFkZCAkY29udmVuaWVuY2UuCgkoY3lnd2luLCBleHBvcnRfc3ltYm9sc19jbWRzKTogRGl0dG8uCgkqIGx0bWFpbi5pbjogR2VuZXJhdGUgZXhwb3J0IHN5bWJvbCBsaXN0IGJlZm9yZSBleHBhbmRpbmcKCWNvbnZlbmllbmNlIGxpYnJhcmllcywgdG8gYXZvaWQgcGFzc2luZyB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyB0bwoJJE5NLgoJUmVwb3J0ZWQgYnkgR29kbWFyIEJhY2sgPGdiYWNrQGNzLnV0YWguZWR1PgoKMTk5OS0wNS0yNyAgRGF2aWQgSm9uZXMgIDxqb25lc0Btb3NhaWQuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKExURExfQklORF9GTEFHUyk6IFJlbW92ZSBCSU5EX1ZFUkJPU0UsIHRvIGF2b2lkCglwcmludGluZyBlcnJvciBtZXNzYWdlcy4KCjE5OTktMDUtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCUdOVSBsaWJ0b29sIDEuMy4yIHdhcyByZWxlYXNlZC4KCjE5OTktMDUtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTkVXUzogTGlzdCBmaXhlZCBwcm9ibGVtcy4KCSogZG9jL1BMQVRGT1JNUzogVGVzdGVkIGZvciAxLjMuMi4KCgkqIGNvbmZpZy5ndWVzczogU3luY2ggd2l0aCBHTlUgY29tbW9uLgoKCSogbHRtYWluLmluOiBSZXZlcnQgdG8gc3RyaXBwaW5nIC5leGUgb24gYWxsIHBsYXRmb3Jtcy4KCSogVE9ETzogTm90ZSBhYm91dCB0aGlzIHByb2JsZW0uICBEZW1vIGlzIGZpeGVkIG9uIHdpbjMyLiAgU3VwcG9ydAoJYGVtcHR5JyBjb252ZW5pZW5jZSBsaWJyYXJpZXMuCgoJKiBsdGNvbmZpZy5pbiAoc29sYXJpcyosIGxkX3NobGlicyk6IERvIG5vdCBlbmFibGUgc2hhcmVkCglsaWJyYXJpZXMgd2l0aCBHTlUgbGQgMi44LiosIGl0J3MgYnJva2VuLiAgRW1pdCBhIHdhcm5pbmcKCXN1Z2dlc3RpbmcgYW4gdXBncmFkZS4KCVJlcG9ydGVkIGJ5IEJyaWFuIEZvcmQgPGZvcmRAdnNzLmZzaS5jb20+IGFuZCBSb25hbGQgUGlqbmFja2VyCgk8Um9uYWxkLlBpam5hY2tlckBiZXN0Lm1zLnBoaWxpcHMuY29tPgoKMTk5OS0wNS0yNSAgRnJhbmsgQ2guIEVpZ2xlciA8ZmNoZUBjeWdudXMuY29tPgoKCSogbHRtYWluLmluOiBmaWxlX21hZ2ljIGNoZWNrIHdvdWxkIG5vdCBhdm9pZCBjeWNsaWMgbGlua3MuCgoxOTk5LTA1LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRlcGRlbW8vbWFpbi5jLCBkZXBkZW1vL2wxL2wxLmMsIGRlcGRlbW8vbDIvbDIuYzogSyZSLWl6ZS4KCSogZGVwZGVtby9sMy9sMy5jLCBkZXBkZW1vL2w0L2w0LmM6IExpa2V3aXNlLgoKCSogbHRtYWluLmluOiBSZW1vdmUgb2JqZWN0IGZpbGVzIGJlZm9yZSB3cml0aW5nIHRvIHRoZW0sIHRvIGF2b2lkCgljaXJjdWxhciBsaW5rcy4KCVJlcG9ydGVkIGJ5IFJvbiBPJ0hhcmEgPHJvbm9Ac2VudHVueS5jb20uYXU+CgoxOTk5LTA1LTI0IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiBzdXBwb3J0IGZvciBpbnN0YWxsaW5nIHN0cmlwcGVkIGxpYnJhcmllcyB1c2luZyBHTlUgc3RyaXAKCSogbHRjb25maWcuaW46IHNldCBkZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbCBvbiBGcmVlQlNELAoJICBMaW51eCBhbmQgU29sYXJpcyBzaW5jZSBubyBvbmUgY2FuIHJlcHJvZHVjZSB0aGUgZmFtb3VzIGRlcGxpYnMKCSAgYnVnCgkqIGx0bWFpbi5pbjogcHJlc2VydmUgJENDIChyZXBvcnRlZCBieSBUb20gVHJvbWV5KSwKCSAgc3RyaXAgbGlicmFyaWVzIHVzaW5nIEdOVSBzdHJpcCBpZiBpdCdzIGF2YWlsYWJsZSBhbmQgdGhlCgkgIC1zIGZsYWcgd2FzIHBhc3NlZCB0byAiaW5zdGFsbCIKCjE5OTktMDUtMjMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZG9jL1BMQVRGT1JNUzogUmVsZWFzZSAxLjMuMSBwYXNzZXMgb24gR05VIEh1cmQveDg2LgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCjE5OTktMDUtMjMgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGx0bWFpbi5pbjogc3RyaXAgb2ZmIHRoZSAuZXhlIHN1ZmZpeCBvbmx5IG9uICpXaW4KCSAgKFJlcG9ydGVkIGJ5IE1hdHRoZXcgRC4gTGFuZ3N0b24gPGxhbmdzdG9uQFNMQUMuU3RhbmZvcmQuRURVPikKCjE5OTktMDUtMjIgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIE5FV1M6IHVwZGF0ZWQKCSogVE9ETzogLVdjLCAtV2wsIGltcGxlbWVudGVkCgkqIEFVVEhPUlM6IGNoYW5nZWQgbXkgZW1haWwgYWRkcmVzcwoJKiBkb2MvbGlidG9vbC50ZXhpOiBmaXggIndpZXJkIiB0eXBvIDopCgkqIGx0bWFpbi5pbjogbGlua2luZyBhZ2FpbnN0IGNvbnZlbmllbmNlIGxpYnJhcmllcyB3YXMgYnJva2VuLAoJICBpbXBsZW1lbnRlZCB0aGUgIi1XYywiICItV2wsIiAiLVhjb21waWxlciIgIi1YbGlua2VyIiBmbGFnIGZvcgoJICBjb21waWxlciBhbmQgbGlua2VyLXNwZWNpZmljIGZsYWdzLAoJICBhZGQgLWxjIGJlZm9yZSB3ZSBkbyB0aGUgZGVwbGlicyBjaGVjawoJKiBsdGNvbmZpZy5pbjogbGlua29wdHMgLT4gY29tcGlsZXJfZmxhZ3MgZm9yICRDQyBhbmQgbGlua2VyX2ZsYWdzCgkgIGZvciAkTEQsIGxpbmtfYWxsX2RlcGxpYnM9eWVzIG9uIElSSVgKCjE5OTktMDUtMjIgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTkVXUzogaW5zZXJ0IHRvZGF5cyBkYXRlIGFsb25nc2lkZSAxLjMuMSByZWxlYXNlLgoJKiBNYWtlZmlsZS5pbjogdXNlIGdudSBub3QgZ25pdHMgcnVsZXMKCSogY29uZmlnLmd1ZXNzOiBzeW5jaCB3aXRoIGdudSBjb21tb24gJiBhcHBseSBUYWthYmF0YWtlLXNhbidzCglNSVBTICowMDAgcGF0Y2guCgkqIGNvbmZpZy5zdWI6IHN5bmNoIHdpdGggZ251IGNvbW1vbi4KCjE5OTktMDUtMjIgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluIChkbGVycm9yKTogRml4IHR5cG8gaW4gZGxvcGVuIGZvdW5kIGluIC1sZGwKCXRlc3QuCgoxOTk5LTA1LTIxICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogRG9uJ3QgZGlzdHJpYnV0ZSBpbnN0dXRpbHMuCgkoaW5zdGFsbC1kYXRhLWhvb2spOiB1c2UgbGlibHRkbC9NYWtlZmlsZS5hbSdzIGxvY2FsLWluc3RhbGwgZmlsZXMKCXJ1bGUuCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKGxvY2FsLWluc3RhbGwtZmlsZXMpOiAgTmV3IHJ1bGUgdG8gaW5zdGFsbAoJbGlibHRkbCB3aXRob3V0IGNyZWF0aW5nIGxpbmtzIG9yIG1vZGUgNzc3IGRpcmVjdG9yaWVzLgoJKiBpbnN0dXRpbC8qOiBkZWxldGVkLgoKMTk5OS0wNS0yMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvUExBVEZPUk1TOiBVcGRhdGVkIHRvIDEuMy4xIGZvciBhbGwgcGxhdGZvcm1zIEkndmUgZ290LgoJQWRkZWQgc3BhcmMtdW5rbm93bi1saW51eC1nbnUuCgoxOTk5LTA1LTIxICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGRlbW8vZm9vLmg6IHMvUEFSQU1TL0xURExfUEFSQU1TL2cKCSogbGlibHRkbC9sdGRsLmg6IGRpdHRvLgoJKiBsaWJsdGRsL2x0ZGwuYzogZGl0dG8uCgoJKiBkZW1vL2Zvby5oOiBzL19fUC9QQVJBTVMvZwoJKiBsaWJsdGRsL2x0ZGwuaDogZGl0dG8uCgkqIGxpYmx0ZGwvbHRkbC5jOiBkaXR0by4KCVJlcG9ydGVkIGJ5IEFraW0gRGVtYWlsbGUgPGRlbWFpbGxlQGluZi5lbnN0LmZyPgoKMTk5OS0wNS0yMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBORVdTOiBVcGRhdGVkIGRvY3MuCgkqIFRPRE86IFJlY29tbWVuZCBsaWJ0b29sLm00IHRvIGJlIGluc2VydGVkIGluIGFjaW5jbHVkZS5tNC4gQUlYCgk0LjMuMi4wIG5vIGxvbmdlciBmYWlscyBvbiBzdGF0aWMgZGxvcGVuaW5nLiAgR05VIERMRCBubyBsb25nZXIKCWhhcyB0byBzdXBwb3J0IC5sYSBmaWxlcywgc2luY2UgbGlibHRkbCBhbHJlYWR5IGRvZXMuICBDb252ZW5pZW5jZQoJbGlicmFyaWVzIGFuZCByZWxvYWRhYmxlIG9iamVjdHMgc2hvdWxkIGJlIHRlc3RlZCBpbiB0aGUKCXRlc3RzdWl0ZS4gIFdlIGNvdWxkIHN1cHBvcnQgc29tZSBhbW91bnQgb2YgY29udHJvbCBvbiB0aGUgc29uYW1lCglvZiBsaWJyYXJpZXMuCgkqIGRvYy9saWJ0b29sLnRleGk6IE5vdGVzIGFib3V0IGNvbnZlbmllbmNlIGxpYnJhcmllcyBhbmQKCWF1dG9tYWtlLiAgRG9jdW1lbnRlZCBJTkNMVERMLgoKMTk5OS0wNS0yMCBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGNkZW1vL21haW4uYzogIldlbGNvbWUgX3RvXyAuLi4iCgkqIG1kZW1vL21haW4uYzogZGl0dG8KCSogbGlibHRkbC9jb25maWd1cmUuaW46IHN1cHBvcnQgbXVsdGlwbGUgZGxvcGVuaW5nIG1lY2hhbmlzbXMKCSAgYXQgb25jZQoJKiBsaWJsdGRsL2x0ZGwuYzogcHJlZml4IHN5c3RlbSBkZXBlbmRlbnQgZnVuY3Rpb25zIHdpdGggInN5c18iCgkgIHRvIGF2b2lkIHN5bWJvbCBjb25mbGljdHMgKGxpYmRsZCBkaWRuJ3Qgd29yaykKCSogbGlidG9vbC5tNCAoQUNfTElCTFRETF8qKTogc2V0IElOQ0xUREwgdG8gdGhlIHBhdGggb2YgbHRkbC5oCgkqIGx0Y29uZmlnLmluOiBjaGVjayBmb3IgZGxvcGVuIHdpdGggLWxkbCBmaXJzdAoKMTk5OS0wNS0xOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBORVdTOiBBZGRlZCAxLjMuMSBuZXdzIGl0ZW1zLgoJKiBkb2MvUExBVEZPUk1TOiB1cGRhdGVkIHRoZSBib3hlcyBJIGhhdmUgYWNjZXNzIHRvLCB0byAxLjMuMQoJaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBuZXh0IHJlbGVhc2UuCgoxOTk5LTA1LTE4ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4qLCB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyk6IGRsbHRvb2wgY2hva2VzCglvbiB0aGlzLCBzbyBsZWF2ZSBpdCB1bnNldCBpbiB0aGlzIGNhc2Ugc28gdGhhdCB0aGUgbHRtYWluIGNvZGUKCWtub3dzIGl0IGhhcyB0byB1bnBhY2sgY29udmVuaWVuY2UgYXJjaGl2ZXMgYnkgaXRzZWxmLgoKMTk5OS0wNS0xNyAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW46IERvIG5vdCBleGl0IHdoZW4gYW4gdW5rbm93biBsaWJyYXJ5IG5hbWUgaXMgcGFzc2VkCglwYXNzZWQgaW4sIHNpbXBseSB3YXJuIGFuZCBjb250aW51ZSBzaW5jZSBzb21lIGNvbXBpbGVycyByZXF1aXJlCgktTEFORzoqIGxpa2Ugb3B0aW9ucyB0byB3b3JrLgoJUmVwb3J0ZWQgYnkgQWRhbSBDLiBQb3dlbGwsIElWIDxhZGFtLnBvd2VsbEBuaXN0Lmdvdj4KCjE5OTktMDUtMTcgIEppcm8gVGFrYWJhdGFrZSAgPGppcm9AZGluLm9yLmpwPgoKCSogbHRjb25maWcuaW46IHBvcnQgdG8gTkVDIFVYLzQ4MDAuCgkqIE5FV1M6IHVwZGF0ZWQuCgoxOTk5LTA1LTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0Y29uZmlnLmluIChiZW9zKiwgZGVwbGlic19jaGVja19tZXRob2QpOiBzZXQgdG8gcGFzc19hbGwuICBCZU9TCglpcyBQSUMgYnkgZGVmYXVsdC4KCVJlcG9ydGVkIGJ5ICJTaGF3biBUIC4gQW11bmRzb24iIDxhbXVuZHNvbkBnaW1wLm9yZz4KCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBGaXggdGVzdCBmYWlsdXJlcyBvbiBBSVggNC4zLjIgYnkgY2hlY2tpbmcKCWZvciBkbG9wZW4gKndpdGgqIC1sZGwgZmlyc3QuCglSZXBvcnRlZCBieSBHcmVnIFdvb2xlZGdlIDxpYzUwMzUldHNzMWNycy5hbWdyZWV0aW5ncy5jb21Acm9zZS5hbWdyZWV0aW5ncy5jb20+CgoJKiBkZW1vL2Zvby5oOiBEb24ndCBzZXQgYW55IGRlY2xzcGVjcyB1bnRpbCB3ZSBoYXZlIGZ1bGwgZGxsCglzdXBwb3J0LgoKMTk5OS0wNS0xNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoc29sYXJpczIuNiwgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMpOiBEbyBub3QgdXNlCgktV2wgZm9yIGFsbGV4dHJhY3QuCgoxOTk5LTA1LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGluc3R1dGlsL2NobW9kOiBOZXcgc2NyaXB0IHRvIGF2b2lkIGNobW9kJ2luZyBmaWxlcyB3aGlsZQoJaW5zdGFsbGluZyBsaWJsdGRsJ3Mgc291cmNlcy4KCSogaW5zdHV0aWwvbG46IE5ldyBzY3JpcHQgdG8gYXZvaWQgaGFyZC1saW5raW5nIGxpYmx0ZGwncyBzb3VyY2VzCglpbiB0aGUgaW5zdGFsbCB0cmVlLgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IERpc3QgdGhlbS4KCShpbnN0YWwtZGF0YS1ob29rKTogQWRkIHNyY2Rpci9pbnN0dXRpbCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZQoJUEFUSCBiZWZvcmUgaW5zdGFsbGluZyBsaWJsdGRsJ3Mgc291cmNlcy4KCjE5OTktMDUtMDkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogVE9ETzogdXBkYXRlZC4KCjE5OTktMDUtMDYgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogTWFrZWZpbGUuYW0gKGluc3RhbGwtZGF0YS1ob29rKTogIG1ha2Ugc3VyZSB0aGUgaW5zdGFsbCBkaXJlY3RvcnkKCWlzIG5vdCBsZWZ0IHdvcmxkIHdyaXRhYmxlLgoJUmVwb3J0ZWQgYnkgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uY3MudW5pLWRvcnRtdW5kLmRlPgoKMTk5OS0wNC0zMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJ0b29sLm00OiBVc2UgaWZlbHNlIGluc3RlYWQgb2YgaWYuCglSZXBvcnRlZCBieSBEYXZpZCBNYXppZXJlcyA8ZG1AYW1zdGVyZGFtLmxjcy5taXQuZWR1PgoKMTk5OS0wNC0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJR05VIExpYnRvb2wgMS4zIHdhcyByZWxlYXNlZC4KCgkqIE5FV1M6IFN1bW1hcml6ZSBuZXdzIGZyb20gMS4yIHRvIDEuMy4KCgkqIGx0bWFpbi5pbjogU2F2ZSBleGl0IHN0YXR1cyBvZiBsaW5rX2NvbW1hbmQgYmVmb3JlIHJlbW92aW5nCglzeW1ib2wgdGFibGUgb2JqZWN0IGZpbGUuCgoxOTk5LTA0LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGRvYy9QTEFURk9STVM6IHVwZGF0ZWQgbXkgaHB1eC0xMC4yMCBhbmQgY3lnd2luIGJveCBlbnRyaWVzLgoKMTk5OS0wNC0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBORVdTOiBJbXByb3ZlZCBzdXBwb3J0IGZvciBEVSBhbmQgSVJJWCB0b28uCgoJKiBjb25maWcuc3ViLCBjb25maWcuZ3Vlc3M6IFVwZGF0ZWQgZnJvbSBHTlUgY29tbW9uLgoKCSogbWRlbW8vY29uZmlndXJlLmluOiBNb3ZlIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UgYmVmb3JlCglBTV9QUk9HX0xJQlRPT0wsIGFzIHN1Z2dlc3RlZCBieSBhdXRvY29uZi4KCgkqIGRvYy9saWJ0b29sLnRleGkgKERpc3RyaWJ1dGluZyBsaWJsdGRsKTogRG9jdW1lbnQgdGhhdCAtc3RhdGljCgltYXkgY2F1c2UgdGhlIHNhbWUgcHJvYmxlbXMgb24gbGlibHRkbCBhcyAtYWxsLXN0YXRpYy4KCSogVE9ETzogV2UgbWlnaHQgd2FudCB0byBmaXggdGhpcyBpbiB0aGUgZnV0dXJlLgoKCSogZG9jL2xpYnRvb2wudGV4aTogQ2xlYXIgdXAgb3ZlcmZ1bGwgaGJveC4KCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKGx0ZGwubG8pOiBBZGQgZGVwZW5kZW5jaWVzLgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogQ2xlYW4gdXAgc29tZSBkdXBsaWNhdGUgZGVmaW5lcy4gIEVuYWJsZQoJc3VwcG9ydCBmb3IgbXVsdGlwbGUgZGxvcGVuaW5nIG1lY2hhbmlzbXMuCgkqIGxpYmx0ZGwvYWNjb25maWcuaDogTmV3IGZpbGUuICBBZGQgI3VuZGVmcyBmb3IgZGVmaW5lcyB0aGF0Cgl3b3VsZCBiZSBkdXBsaWNhdGVkLgoKMTk5OS0wNC0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChjeWd3aW4qfG1pbmd3KiwgRExMVE9PTCwgT0JKRFVNUCwgQVMpOiBPbmx5IGV4cGFuZCB0aGUKCWNvZGUgdGhhdCBtYWtlcyB0aGVzZSBjb25maWd1cmUgdGltZSBjaGVja3Mgb24gaG9zdHMgdGhhdCBuZWVkIHRoZQoJdG9vbHMgKmFuZCogaWYgdGhlIEFDX0xJQlRPT0xfV0lOMzJfRExMIG1hY3JvIGlzIHVzZWQuCgoxOTk5LTA0LTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0bWFpbi5pbiAobmxpc3QsIFNZTUZJTEUpOiBVc2Ugb3V0cHV0bmFtZSBpbnN0ZWFkIG9mIG91dHB1dCBmb3IKCW5hbWVzIHdpdGhpbiBvdXRwdXRfb2JqZGlyLgoKMTk5OS0wNC0yOCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJ0b29sLm00IChBQ19FTkFCTEVfU0hBUkVELCBBQ19FTkFCTEVfU1RBVElDLAoJQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTCk6IERvIG5vdCBjYWxsIEFDX0JFRk9SRSBoZXJlLCB0aGV5J3JlCglBQ19SRVFVSVJFZCBieSBBQ19MSUJUT09MX1NFVFVQLgoJKEFDX0RJU0FCTEVfU0hBUkVELCBBQ19ESVNBQkxFX1NUQVRJQywgQUNfRElTQUJMRV9GQVNUX0lOU1RBTEwpOgoJQ2FsbCBBQ19CRUZPUkUgaGVyZSwgYW5kIG5vdyB3aXRoIHR3byBhcmd1bWVudHMsIHNpbmNlIHRoZXNlIGRvCgljaGFuZ2UgdGhlIGRlZmF1bHQuCgkoQUNfTElCTFRETF9DT05WRU5JRU5DRSwgQUNfTElCTFRETF9JTlNUQUxMQUJMRSk6IEZpeCBjYWxscyB0bwoJQUNfQkVGT1JFLgoKMTk5OS0wNC0yOCAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsaWJ0b29sLm00IChsdGNvbmZpZ19lbmFibGVfd2luMzJfZGxsKTogcGFzcyAtLWVuYWJsZS13aW4zMi1kbGwgdG8KCWx0Y29uZmlnIGlmIHRoaXMgaXMgc2V0LgoJKEFDX0xJQlRPT0xfV0lOMzJfRExMKTogTmV3IG1hY3JvIHJlcXVpcmVkIGZvciBsaWJ0b29sIHRvIGF0dGVtcHQKCWEgZGxsIGJ1aWxkIG9uIHdpbjMyIGhvc3RzLgoJKiBsdGNvbmZpZy5pbiAoLS1lbmFibGUtd2luMzItZGxsKTogbmV3IGZsYWcgZm9yIHRoZSBjbGkuCgkoY3lnd2luKnxtaW5ndyp8b3MyKiwgbHRjb25maWdfZW5hYmxlX3dpbjMyX2RsbCk6IGlmIHRoaXMgaXMgbm90IHNldAoJdG8geWVzLCB0aGVuIGRvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMuCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IEFDX0xJQlRPT0xfV0lOMzJfRExMLgoJKiBORVdTOiBub3RlZCBuZXcgbWFjcm8uCgoxOTk5LTA0LTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfRExPUEVOLCBBQ19FTkFCTEVfU0hBUkVELAoJQUNfRU5BQkxFX1NUQVRJQywgQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTCwgQUNfTElCTFRETF9DT05WRU5JRU5DRSwKCUFDX0xJQkxURExfSU5TVEFMTEFCTEUpOiBXYXJuIGlmIHRoZXkgYXBwZWFyIGFmdGVyCglBQ19QUk9HX0xJQlRPT0wuICBBQ19MSUJUT09MX1NFVFVQLCBhY3R1YWxseS4KCShBQ19MSUJUT09MX1NFVFVQKTogQ2hlY2sgd2hldGhlciBETE9QRU4gc3VwcG9ydCBpcyB0byBiZSBlbmFibGVkCglhdCBhdXRvY29uZiB0aW1lLCBub3QgY29uZmlndXJlIHRpbWUuICBTaW1wbGlmeSBjb2RlIGFuZAoJaW1wcm92ZSAoPykgaGVscCBtZXNzYWdlIGFib3V0IC0tZGlzYWJsZS1saWJ0b29sLWxvY2suCgoxOTk5LTA0LTI3IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogTkVXUzogbmV3IGNsZWFuIG1vZGUKCSogVEhBTktTOiBhZGRlZCBPc3NhbWEgT3RobWFuCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50ZWQgdGhlIG5ldyBgY2xlYW4nIG1vZGUKCSogbHRjb25maWcuaW46IHNldCBuZWVkX3ZlcnNpb249bm8gb24gT1NGIChyZXBvcnRlZCBieQoJICBNYXJjdXMgU3VuZGJlcmcgPG1hY2thbkBzdGFja2VuLmt0aC5zZT4pCgkqIGx0bWFpbi5pbjogYWxsb3cgYWJzb2x1dGUgbm9uLWV4aXN0YW50IC1MIHBhdGhzLAoJICBhbHdheXMgdXNlIG91dHB1dF9vYmpkaXIgaW5zdGVhZCBvZiBvYmpkaXIgZm9yIHRlbXBvcmFyeSBmaWxlcywKCSAgZGVsZXRlIGdlbmVyYXRlZCB0ZW1wb3Jhcnkgc3ltYm9sIGxpc3RzLAoJICBkb24ndCBhZGQgLmxhIHR3aWNlIGluIHRoZSBwc2V1ZG8tbGlicmFyeSBoZWFkZXIsCgkgIGltcGxlbWVudGVkIGFuZCBkb2N1bWVudGVkIGNsZWFuIG1vZGUgKGRlbGV0ZXMgbGlicmFyaWVzLAoJICBwcm9ncmFtcyBhbmQgb2JqZWN0IGZpbGVzIGFuZCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0pLAoJICBpZiBidWlsZF9saWJ0b29sX2xpYnM9bm8gYW5kIG5vIHN0YXRpYyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSwKCSAgdHJ5IHRvIGxpbmsgdGhlIHByb2dyYW0gYWdhaW5zdCB0aGUgc2hhcmVkIGxpYnJhcnksCgkgIGRvbid0IGFkZCBhIHN0YXRpY2FsbHkgbGlua2VkIGxpYnJhcnkgdG8gdGhlIGRlcGVuZGVuY3lfbGlicwoJKiBsdG1haW4uaW4gKGhlbHAgdW5pbnN0YWxsKTogYWRkZWQgYSBtaXNzaW5nIGJhY2tzbGFzaAoJICBhZnRlciBlY2hvIChyZXBvcnRlZCBieSBPc3NhbWEgT3RobWFuKQoKMTk5OS0wNC0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKG9sZF9hcmNoaXZlX2NtZHMpOiBJdGVyYXRlIG9uIG9sZG9ianMgdG8gZmluZCBvdXQKCXdoaWNoIGxpbmtzIHRvIG9iamVjdCBmaWxlcyB3ZSBtdXN0IGNyZWF0ZS4gIERvIG5vdCB0ZXN0IGZvciBlbXB0eQoJcGljX2ZsYWcgdG8gY3JlYXRlIHN1Y2ggbGlua3MuICBVc2Ugb2JqZXh0IHdoZW4gc2VhcmNoaW5nIGZvcgoJb2JqZWN0IGZpbGVzIGV4dHJhY3RlZCBmcm9tIGNvbnZlbmllbmNlIGxpYnJhcnkuCgoJKiBsdGNvbmZpZy5pbiAoY29tcGlsZXJfY19vKTogTWFrZSBzdXJlIHRoZSBjb21waWxlciBkb2VzIG5vdAoJY3JlYXRlIHRlbXBvcmFyaWVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGVuIG91dHB1dCBzaG91bGQgZ28KCWVsc2V3aGVyZS4gIFdlIG11c3QgcGVyZm9ybSBsb2NraW5nIGlmIGl0IGRvZXMuCgoxOTk5LTA0LTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxndnZAdGVjaGllLmNvbT4KCgkqIGx0bWFpbi5pbiAob2xkX2FyY2hpdmVfY21kcyk6IEVuc3VyZSB0aGF0IHRoZXJlIGFyZSBhbHdheXMgLm8KCW9iamVjdHMgYXZhaWxhYmxlIGJlZm9yZSBydW5uaW5nIG9sZF9hcmNoaXZlX2NtZHMuCgoxOTk5LTA0LTI2ICBFcmV6IFphZG9rICA8ZXprQGNzLmNvbHVtYmlhLmVkdT4KCgkqIGRvYy9QTEFURk9STVM6IFVwZGF0ZXMgZm9yIG5ldGJzZCAxLjMuMyBhbmQgMS40LgoKMTk5OS0wNC0yNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoYWl4NC5bMDFdLCBhbHdheXNfZXhwb3J0X3N5bWJvbHMpOiBUaGUgY2FzZSBwYXR0ZXJuCgl3b3VsZCBuZXZlciBtYXRjaDsgZml4ZWQuCglSZXBvcnRlZCBieSBTdGVwaGFuIEt1bG93IDxjb29sb0BpdG0ubXUtbHVlYmVjay5kZT4KCjE5OTktMDQtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoT0JKRFVNUCk6IFBhc3MgaXQgdG8gbHRjb25maWcuCgkqIGNvbmZpZ3VyZS5pbjogQUNfU1VCU1QgRExMVE9PTCwgT0JKRFVNUCBhbmQgQVMuCgkqIE1ha2VmaWxlLmFtIChsaWJ0b29sLCBjbGlidG9vbCk6IFBhc3MgdGhlbSB0byBsdGNvbmZpZy4KCjE5OTktMDQtMjUgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQGN5Z251cy5jb20+CgoJKiBsaWJ0b29sLm00IChjeWd3aW4qKTogTG9vayBmb3IgdGFyZ2V0IG9iamR1bXAgdG9vbC4KCSogbHRjb25maWcuaW4gKGN5Z3dpbiosIGZpbGVfbWFnaWNfY21kKTogVXNlIGF1dG9jb25mLWxvY2F0ZWQgdGFyZ2V0CglvYmpkdW1wIHRvb2wuICBUcmFjayBPQkpEVU1QIGxpa2UgRExMVE9PTCBhbmQgQVMuCgoJKiBsdGNvbmZpZy5pbiAoY3lnd2luKiwgZGVwbGlic19jaGVja19tZXRob2QpOiBBY2NlcHQKCSJhcmNoaXRlY3R1cmU6IGkzODYiIGFzIG9wdGlvbmFsIHN1ZmZpeCwgZm9yIGl0IGlzIHByaW50ZWQgb24gYQoJc2VwYXJhdGUgbGluZSBzb21ldGltZXMuCgoJKiBsdG1haW4uaW4gKGN5Z3dpbiosIGx0ZGxsLmMpOiBXcmFwIERsbE1haW4gZGVjbGFyYXRpb24gaW4gZXh0ZXJuICJDIi4KCgkqIGx0bWFpbi5pbiAoZGVwbGlic19jaGVja19tZXRob2Q9ZmlsZV9tYWdpYyk6IFJlZGlyZWN0IHN0ZGVyciB0bwoJL2Rldi9udWxsLCB0byBzdXBwcmVzcyBlcnJvciBtZXNzYWdlcyBmcm9tIHRhcmdldCBvYmpkdW1wLgoKMTk5OS0wNC0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoaXJpeCosIHNvbmFtZV9zcGVjLCBsaWJyYXJ5X25hbWVzX3NwZWMpOiBNaXNzaW5nCglkb3RzIGJlZm9yZSAkdmVyc3VmZml4IGFuZCAkbWFqb3IuCgoJKiBsdGNvbmZpZy5pbiAoc29sYXJpcyosIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjKTogVXNlIC16CglhbGxleHRyYWN0L2RlZmF1bHRleHRyYWN0IGZyb20gU29sYXJpcyAyLjYgb24uCglSZXBvcnRlZCBieSBCcmlhbiBGb3JkIDxmb3JkQHZzcy5mc2kuY29tPgoKCSogbHRjb25maWcuaW4gKGJlb3MqLCBhbGxvd191bmRlZmluZWRfZmxhZyk6IERvIG5vdCBidWlsZCBzaGFyZWQKCWxpYnJhcmllcyB3aXRoIHVuZGVmaW5lZCBzeW1ib2xzLgoKCSogbHRjb25maWcuaW4gKGFpeDQqLCBhbGxvd191bmRlZmluZWRfZmxhZyk6IFNldCB0byAtYmVyb2suCgkoYWl4NCosIHNoYXJlZF9mbGFnKTogU2V0IHRvIC1zaGFyZWQgb3IgJHt3bH0tYk06U1JFLgoJKGFpeDQqLCBhcmNoaXZlX2NtZHMpOiBVc2UgLWJleHBhbGwuCgkoYWl4NCosIGFyY2hpdmVfY21kcywgYXJjaGl2ZV9leHBzeW1fY21kcyk6IFVzZSBzaGFyZWRfZmxhZyBhbmQKCWFsbG93X3VuZGVmaW5lZF9mbGFnLgoJKGFpeDQqLCBhbHdheXNfZXhwb3J0X3N5bWJvbHMpOiBTZXQgdG8geWVzIHVwIHRvIEFJWCA0LjEuKiwKCWJlY2F1c2UgLWJleHBhbGwgaXMgc3VwcG9ydGVkIGZyb20gNC4yIG9uLgoJUmVwb3J0ZWQgYnkgR3JlZyBXb29sZWRnZQoJPGljNTAzNSV0c3MxY3JzLmFtZ3JlZXRpbmdzLmNvbUByb3NlLmFtZ3JlZXRpbmdzLmNvbT4KCgkqIGx0Y29uZmlnLmluIChocHV4KiwgaGFyZGNvZGVfbWludXNfTCk6IFNldCB0byB5ZXMuCgkoaHB1eCosIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMpOiBEbyBub3QgdXNlICtzIGJ5IGRlZmF1bHQuCgkoaHB1eCosIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IFNldCB0byBuby4KCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgb3NmKiwgYXJjaGl2ZV9jbWRzKTogV3JpdGUgc29fbG9jYXRpb25zCgl3aXRoaW4gb2JqZGlyLgoKCSogbHRjb25maWcuaW4gKGlyaXgqLCBzb25hbWVfc3BlYyk6IEFwcGVuZCAkbWFqb3IuCgkoaXJpeCosIGxpYnJhcnlfbmFtZXNfc3BlYyk6IEFkZCBuZXcgc29uYW1lLgoJUmVwb3J0ZWQgYnkgRGF2aWQgS2FlbGJsaW5nIDxkcmtAc2dpLmNvbT4KCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMpOiAvdXNyL2xvY2FsL2xpYgoJaXMgbm90IHNlYXJjaGVkIGJ5IGRlZmF1bHQuICAvdXNyL2xpYiBpcyBzZWFyY2hlZCBiZWZvcmUgL2xpYi4KCSogbHRjb25maWcuaW4gKGlyaXgqLCBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMpOiAvdXNyL2xpYiBpcwoJc2VhcmNoZWQgYmVmb3JlIC9saWIuCgoJKiBsdGNvbmZpZy5pbiAoaXJpeDUqLCBuZWVkX2xpYl9wcmVmaXgsIG5lZWRfdmVyc2lvbik6IFNldCB0byBubywKCWJ5IHVuaWZ5aW5nIHdpdGggaXJpeDYqLgoKCSogbHRjb25maWcuaW4gKGlyaXgqLCBvc2YqLCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IFVzZSBwYXNzX2FsbC4KCgkqIGx0Y29uZmlnLmluIChvbGRfTERGTEFHUywgb2xkX0xJQlMpOiBTYXZlIGFuZCB3cml0ZSB0byBjb21tZW50cwoJaW4gb3V0cHV0IGZpbGUuCgoJKiBsdG1haW4uaW4gKHByZWZlcl9zdGF0aWNfbGlicyk6IE5ldyB2YXJpYWJsZSwgc2V0IHRvIG5vIGJ5CglkZWZhdWx0LCBidXQgc2V0IHRvIHllcyBieSAtc3RhdGljIGFuZCAtYWxsLXN0YXRpYy4gIFVzZWQgaW5zdGVhZAoJb2YgYnVpbGRfbGlidG9vbF9saWJzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSBhIHNoYXJlZCBvciBzdGF0aWMKCXZlcnNpb24gb2YgYSBsaWJyYXJ5LCB3aGVuIGJvdGggdmVyc2lvbnMgYXJlIGF2YWlsYWJsZS4KCjE5OTktMDQtMjUgIEJveWQgTHlubiBHZXJiZXIgIDxnZXJiZXJiQHplbmV6LmNvbT4KCgkqIGx0Y29uZmlnLmluIChzY28zLjJ2NSopOiBVc2UgTERfUlVOX1BBVEggZm9yIGhhcmQtY29kaW5nLgoKMTk5OS0wNC0yNSAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBNYWtlZmlsZS5hbSAodW5pbnN0YWxsLWxvY2FsKTogUmVtb3ZlIGluc3RhbGxlZCBsaWJsdGRsIHRyZWUuCgoxOTk5LTA0LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGhjLWRpcmVjdCwgaGMtbGliZmxhZywgaGMtbGlicGF0aCwgaGMtbWludXNsKToKCUFkZGVkIENGTEFHUyB0byBsaW5rIGNvbW1hbmRzOyBTQ08gT1NSIG5lZWRzIGl0IGZvciAtYmVsZi4KCgkqIFRPRE86IC1XbCBhbmQgLVdjIG9wdGlvbnMuCgoxOTk5LTA0LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvbHRkbC5jOiBSZW1vdmUgdHJpdmlhbCB3YXJuaW5ncy4KCjE5OTktMDQtMjIgIEZyYW5rIENoLiBFaWdsZXIgIDxmY2hlQGN5Z251cy5jb20+CgoJKiBsdGNvbmZpZy5pbjogQ29ycmVjdCBzZWQgZXhwcmVzc2lvbiB0aGF0IGV4dHJhY3RzIHN5bWJvbHMKCWZyb20gY3lnd2luIGRlZiBmaWxlcy4gIElnbm9yZSBkZW1hbmdsZWQgQysrIG5hbWVzLCBpZiBhbnkuCgoxOTk5LTA0LTEyICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy5jYT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChzaGxfY2xvc2UpOiBzaGxfdCB3YXMgY29ycmVjdCBoZXJlLi4uCgkoc2hsX3N5bSk6IC4uLiBidXQgd2UgaGF2ZSB0byBwYXNzIHRoZSBoYW5kbGUgYnkgcmVmZXJlbmNlIGhlcmUuCgoxOTk5LTA0LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9saWJ0b29sLnRleGkgKEludm9raW5nIGx0Y29uZmlnKTogRG9jdW1lbnQgZW52aXJvbm1lbnQKCXZhcmlhYmxlcyB1c2VkLgoKCSogZG9jL2xpYnRvb2wudGV4aSAoSW52b2tpbmcgbHRjb25maWcpOiBEb2N1bWVudCAtLWNhY2hlLWZpbGUuCgoJKiBkb2MvbGlidG9vbC50ZXhpIChJbnZva2luZyBsdGNvbmZpZyk6IERvY3VtZW50CgktLWRpc2FibGUtZmFzdC1pbnN0YWxsLCAtLWVuYWJsZS1kbG9wZW4sIC0td2l0aC1nbnUtbGQgYW5kCgktLWRpc2FibGUtbG9jay4KCjE5OTktMDQtMTEgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogY2hlY2sgZm9yIHNobF9sb2FkIGluIGxpYmRsZAoJKiBsaWJsdGRsL2x0ZGwuYyAoc2hsX2Nsb3NlLCBzaGxfc3ltKTogdXNlIChzaGxfdCAqKSBpbnN0ZWFkIG9mIHNobF90CgkqIGx0Y29uZmlnLmluIChjaGVjayBmb3IgZ2NjKTogcmVtb3ZlZCBhIGJvZ3VzIGxpbmUsCgkgIGNoZWNrIGZvciBzaGxfbG9hZCBpbiBsaWJkbGQKCSogbHRtYWluLmluOiBhZGRlZCBhIHdhcm5pbmcgdG8gdGhlIGhlYWRlciBvZiB0aGUgLmxhIGZpbGUKCSAgdG8gd2FybiB1c2VycyBhZ2FpbnN0IGRlbGV0aW5nIHRoZSBmaWxlLAoJICBsaW5rIHNoYXJlZCBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMgaWYKCSAgZGVwbGlic19jaGVja19tZXRob2QgPT0gcGFzc19hbGwKCjE5OTktMDQtMTAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoQUNfUFJPR19MRCwgQUNfUFJPR19OTSk6IFdoZW4gbG9va2luZyBmb3IgcHJvZ3JhbXMsCgl0cnkgJGFjX2V4ZWV4dCB0b28sIHNvIHRoYXQgdGhleSdyZSBmb3VuZCBvbiBESkdQUC9NUy1ET1MuCgkqIGx0Y29uZmlnLmluOiBMaWtld2lzZS4KCVJlcG9ydGVkIGJ5IFJvYmVydCBTLiBNYWllciA8cnNtQG1hdGguYXJpem9uYS5lZHU+CgoJKiBsdGNvbmZpZy5pbiAoVXNhZ2UpOiBSZW1vdmVkIC0tZW5hYmxlLWRsb3Blbi1zZWxmLgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBNb3ZlZCBzeXN2NCBiZWZvcmUgc3lzdjQuKi4KCShzeW1jb2RlKTogQnJpYW4ncyBvdmVycmlkZXIgaXMgc3BlY2lmaWMgdG8gc3lzdjQsIG5vdCBzeXN2NCouCgoxOTk5LTA0LTA5IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogTkVXUywgUkVBRE1FOiBNb3Rvcm9sYSBTeXN0ZW0gViA0IHN1cHBvcnQKCSogZG9jL1BMQVRGT1JNUzogYWRkZWQgbWs4OC1tb3Rvcm9sYS1zeXN2NAoJKiBsdGNvbmZpZy5pbjogaW5zdGFsbGVkIHBhdGNoIGZyb20gQnJpYW4gRm9yZCA8Zm9yZEB2c3MuZnNpLmNvbT4KCSAgdG8gc3VwcG9ydCBtazg4LW1vdG9yb2xhLXN5c3Y0CgoJKiBkb2MvbGlidG9vbC50ZXhpOiBzb21lIGNsZWFudXBzIGluIHRoZSBsaWJsdGRsIGRvY3VtZW50YXRpb24KCjE5OTktMDQtMDcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKC0tZmFsbGJhY2stZWNobyk6IERvIG5vdCBwdXQgYW4gaW5saW5lIGRvY3VtZW50IGFuZAoJYW4gZXhlYyBpbiB0aGUgc2FtZSBpZiBjb25zdHJ1Y3Q7IG90aGVyd2lzZSB0aGUgaW5saW5lIGRvY3VtZW50CgltYXkgbm90IGJlIHJlbW92ZWQuCgkqIGx0bWFpbi5pbiAoLS1mYWxsYmFjay1lY2hvKTogTGlrZXdpc2UuCglSZXBvcnRlZCBieSBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZS5hbmdsaW5AbnJjLmNhPgoKCSogZHJ5cnVuLnRlc3Q6IEl0IHdvdWxkIHN0aWxsIGZhaWwgYXQgcmFuZG9tIHRpbWVzLCBiZWNhdXNlIGBjcCcKCWFuZCBgbXYnIGFyZSBub3QgZ3VhcmFudGVlZCB0byBwcmVzZXJ2ZSB0aGUgdGltZXN0YW1wcyBvZiB0aGUKCWluc3RhbGxlZCBmaWxlcy4gIEluc3RlYWQgb2YgcHJlc2VydmluZyB0aGVtLCBqdXN0IHJlbW92ZSB0aGVtCgliZWZvcmUgdGhlIGRyeSB1bmluc3RhbGwgdGVzdC4gIFJlZGlyZWN0IGRyeS1ydW4gb3V0cHV0IHRvIHN0ZGVyciwKCXNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBzZXBhcmF0ZWQgZnJvbSB0aGUgcmVndWxhciBvdXRwdXQuCgoxOTk5LTA0LTA3IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogTkVXUzogc3VwcG9ydCBmb3IgbW92ZWQgbGlicmFyaWVzCgkqIGxpYnRvb2wubTQ6IGFub3RoZXIgREpHUFAgZml4CgoxOTk5LTA0LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9QTEFURk9STVM6IFVwZGF0ZWQgdG8gMS4zIGZvciBhbGwgcGxhdGZvcm1zIEkndmUgZ290LiAgSSdsbAoJbWFrZSBzdXJlIDEuMyB3b24ndCBiZSByZWxlYXNlZCB1bmxlc3MgaXQgcGFzc2VzIGFsbCB0ZXN0cyBvbgoJdGhvc2UgcGxhdGZvcm1zLgoKCSogZG9jL2xpYnRvb2wudGV4aSAoQ29tcGlsZSBtb2RlKTogRG9jdW1lbnQgcG90ZW50aWFsIHByb2JsZW0gYW5kCgl3b3JrLWFyb3VuZCBmb3IgYC1jIC1vIGRpci9mb28ubG8nLgoKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IFRoZSBjb25zdGFudCBtb2RpZmljYXRpb25zIG9mIGxpYnRvb2wgd291bGQKCWNhdXNlIG1haW4ubyB0byBiZSB1cGRhdGVkIGF0IHRoZSB3cm9uZyB0aW1lOyB0aGUgbmV3IGFwcHJvYWNoIGlzCgl0byBtb2RpZnkgdGhlIGxpYnRvb2wgc2NyaXB0IHNvIHRoYXQgaXQgZW5hYmxlcyBkcnkgcnVuIGRlcGVuZGluZwoJb24gd2hldGhlciBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgb3Igbm90LiAgSSd2ZSBhbHNvIG1vdmVkCglgYWZ0ZXInIGFuZCBgYmVmb3JlJyB0byBhIGRpcmVjdG9yeSBkZWVwIHdpdGhpbiAkb2JqZGlyLCBpbnN0ZWFkCglvZiBjcmVhdGluZyBpdCBpbiAuLi90ZXN0cy4KCSogdGVzdHMvTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBSZW1vdmVkLgoKMTk5OS0wNC0wNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiB0ZXN0cy9kcnlydW4udGVzdDogV2UgY2Fubm90IHJlbHkgb24gc2V0dGluZyBMSUJUT09MLCBiZWNhdXNlCglhdXRvbWFrZSBtYXkgdXNlIHN1Yi1tYWtlcywgYW5kIHRoZSBzZXR0aW5nIHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQKCXRvIHRoZW0gb24gc29tZSBtYWtlcy4gIEluc3RlYWQsIGNyZWF0ZSBhIGRyeSB2ZXJzaW9uIG9mIGxpYnRvb2wKCWFuZCBzd2l0Y2ggYmV0d2VlbiBpdCBhbmQgdGhlIG9yaWdpbmFsIG9uZSBiZWZvcmUgYW5kIGFmdGVyIGRyeQoJcnVucy4KCSogdGVzdHMvTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBBZGRlZCBsaWJ0b29sLSosIGNyZWF0ZWQgYnkKCWRyeXJ1bi50ZXN0LgoKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IFVzZSBjbXAgaW5zdGVhZCBvZiBkaWZmLgoJKGJlZm9yZSwgYWZ0ZXIpOiBDcmVhdGUgdGhlbSB3aXRoaW4gLi4vdGVzdHMuCgkobGlidG9vbCk6IFNldCB0byBgL2Jpbi9zaCAuL2xpYnRvb2wnIGJ5IGRlZmF1bHQsIGJ1dCB1c2UgTElCVE9PTCwKCVNIRUxMIGFuZCB0b3BfYnVpbGRkaXIgZnJvbSB0aGUgZW52aXJvbm1lbnQgaWYgYXZhaWxhYmxlLiAgRm9yIGRyeQoJcnVucywgdXNlICIkbGlidG9vbCAtbiIuCgkqIHRlc3RzL01ha2VmaWxlLmFtIChDTEVBTkZJTEVTKTogQWRkZWQgYmVmb3JlIGFuZCBhZnRlci4KCSogbHRtYWluLmluOiBEbyBub3QgY3JlYXRlIGxpbmtzIHRvIG9iamVjdCBmaWxlcyBpbiBkcnkgcnVucy4KCjE5OTktMDQtMDYgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsdG1haW4uaW46IGFkZGVkIGEgbWlzc2luZyBsaW5lIG9mIHRoZSBJTEQgcGF0Y2gKCgkqIE5FV1M6IGltcHJvdmVkIERKR1BQIHN1cHBvcnQKCSogZG9jL2xpYnRvb2wudGV4aTogcmVtb3ZlZCBoYXJkY29kZV9pbnRvX2xpYnMgZG9jdW1lbnRhdGlvbgoJKiBsaWJ0b29sLm00OiBzb21lIERKR1BQIGZpeGVzCgkqIGx0Y29uZmlnLmluOiBkaXR0bywgcmV2ZXJ0ZWQgb25lIG9mIG15IHByZXZpb3VzIHBhdGNoZXM6IHdlIG5lZWQKCSAgdG8gY2hlY2sgZm9yIE5NLCByZW1vdmVkIHRoZSBoYXJkY29kZV9pbnRvX2xpYnMgc3VwcG9ydCBzaW5jZQoJICBubyBwbGF0Zm9ybSBzZWVtcyB0byBzdXBwb3J0IGl0CgkqIGx0bWFpbi5pbjogc29tZSBESkdQUCBmaXhlcywgcmVtb3ZlZCB0aGUgaGFyZGNvZGVfaW50b19saWJzIHN1cHBvcnQKCjE5OTktMDQtMDUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKG5ldGJzZCosIEdOVSBsZCk6IFN1cHBvcnQgYS5vdXQgc2hhcmVkIGxpYnJhcmllcwoKCSogTWFrZWZpbGUuYW0gKENWUyk6IGFsbG93IGNvbW1hbmQtbGluZSBvdmVycmlkaW5nIG9mIGN2cwoKCSogbHRjb25maWcuaW4gKGV4Y2x1ZGVfZXhwc3ltcyk6IEV4Y2x1ZGUgX0dMT0JBTF9PRkZTRVRfVEFCTEVfIGJ5CglkZWZhdWx0LCBhcyBtb3N0IGEub3V0IHBsYXRmb3JtcyB1c2UgaXQsIGFuZCBlbmQgdXAgaW4gdHJvdWJsZSBpZgoJd2UgcHJlbG9hZCBpdCwgc28gaXQncyBzYWZlciB0byBydWxlIGl0IG91dCBieSBkZWZhdWx0LCBhbmQKCXNwZWNpYWwgY2FzZSBpdHMgcmVtb3ZhbCBmcm9tIGV4Y2x1ZGVfZXhwc3ltcyBpZiBzb21lb25lIGV2ZXIKCWNvbXBsYWlucy4KCjE5OTktMDQtMDUgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpOiByZW9yZGVyIHRlc3RzIHRvIHJlZmxlY3QgZXhlY3V0aW9uIG9yZGVyLAoJICBkb2N1bWVudGVkIGRyeXJ1bi50ZXN0IGFuZCBkZXBkZW1vKgoJKiBsdG1haW4uaW4gKGx0X3ByZWxvYWRlZF9zeW1ib2xzKTogZHJ5LXJ1biBtb2RlIGJ1Z2ZpeAoJKiB0ZXN0cy9kcnlydW4udGVzdDogbmV3IHRlc3QgdG8gY2hlY2sgd2hldGhlciB0aGUgZHJ5LXJ1bgoJICBtb2RlIHdvcmtzIHByb3Blcmx5CgoJKiBkZW1vL3J1bi50ZXN0OiByZW1vdmVkIHRoZSB1bm5lY2Vzc2FyeSB0ZXN0CgkqIGRlbW8vTWFrZWZpbGUuYW06IGRpdHRvCgkqIGx0bWFpbi5pbjogc2V0IHRoZSBETEwgc2VhcmNoIHBhdGggb24gY3lnd2luLG1pbmd3IGFuZCBvczIKCjE5OTktMDQtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKHN1bm9zNCosIEdOVSBsZCk6IC1Cc3RhdGljIGlzIG5vdCBlbm91Z2ggZm9yCglkZXBsaWJzLnRlc3QgdG8gd29yayB3aXRoIEdOVSBsZDsgLUJzaGFyZWFibGUgaXMgbmVlZGVkIGhlcmUuCgoJKiBsdGNvbmZpZy5pbiAobGRfc2hsaWJzLCBhbWlnYW9zKik6IERpc2FibGUgc2hhcmVkIGxpYnMgd2l0aAoJbmF0aXZlIGxkIHRvby4KCgkqIGx0Y29uZmlnLmluIChzdW5vczQqLCBHTlUgbGQpOiBSZW9yZGVyZWQuCgoJKiBsdGNvbmZpZy5pbiAoYXJjaGl2ZV9jbWRzLCBzdW5vczQqKTogUmV2ZXJ0IHRvIC1Cc3RhdGljOyB0aGUKCW5hdGl2ZSBsaW5rZXIgZG9lc24ndCBldmVuIHN1cHBvcnQgLUJzaGFyZWFibGUsIG9ubHkgR05VIGxkIGRvZXMuCglEbyBub3QgdXNlIGBnY2MgLXNoYXJlZCcgaW4gYXJjaGl2ZV9jbWRzLCBpdCBicmVha3MgZGVwbGlicy50ZXN0LgoKCSogbHRjb25maWcuaW46IGlmIGxkX3NobGlicz1ubywgc2V0IGNhbl9idWlsZF9zaGFyZWQ9bm8gdG9vLAoJb3RoZXJ3aXNlIGl0IHdpbGwganVzdCBiZSBkaXNyZWdhcmRlZC4gIFRoaXMgd291bGQgY2F1c2UKCW5ldGJzZC9tNjhrIHdpdGggR05VIGxkIGEub3V0LCBhbmQgY2VydGFpbmx5IG1hbnkgb3RoZXIgcGxhdGZvcm1zLAoJdG8gaW5jb3JyZWN0bHkgYmVsaWV2ZSB0aGF0IHNoYXJlZCBsaWJyYXJpZXMgd2VyZSBzdXBwb3J0ZWQsIHdoaWxlCglhcmNoaXZlX2NtZHMgd2FzIGVtcHR5LCBjYXVzaW5nIHNoYXJlZCBsaWJyYXJpZXMgbm90IHRvIGJlIGNyZWF0ZWQKCjE5OTktMDQtMDMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTkVXUzogaW1wcm92ZWQgc3VwcG9ydCBmb3IgQUlYIGFuZCBIUC9VWAoKMTk5OS0wNC0wMyBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1M6IHVwZGF0ZWQKCSogbGlidG9vbC5tNDogY2hlY2sgZm9yIG1haW4gaW4gbGlibSBpbnN0ZWFkIG9mIGNvcwoJKiBsdG1haW4uaW46IGNvc21ldGljIGZpeGVzLCBkb24ndCB0cnkgdG8gbGluayBsaWJyYXJpZXMgb25seSBvbmNlCgkgIChhbHRob3VnaCBpdCdzIG5vdCBuZWNlc3Nhcnkgb24gbWFueSBwbGF0Zm9ybXMgYW5kIGxvb2tzIHVnbHkuLi4pLAoKMTk5OS0wNC0wMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKGNvbnZlbmllbmNlKTogZml4ZWQgcmFjZSBjb25kaXRpb24gd2hlbiBtb3JlIHRoYW4gb25lCglsaWJyYXJ5IHdhcyBsaW5rZWQgd2l0aCB0aGUgc2FtZSBjb252ZW5pZW5jZSBsaWJyYXJ5IGJ5Cgl1bmlxdWlmeWluZyB0aGUgZXh0cmFjdCBkaXJlY3RvcnkuICBJdCBpcyBub3cgbmFtZWQgYWZ0ZXIgdGhlIG5ldwoJbGlicmFyeSAqYW5kKiB0aGUgb2xkIG9uZSwgYW5kIGxpdmVzIGluIHRoZSBvYmpkaXIgb2YgdGhlIG5ldyBvbmUuCgoJKiBsdG1haW4uaW4gKC1MKik6IGRvIG5vdCBhYm9ydCBqdXN0IGJlY2F1c2UgYSBkaXJlY3Rvcnkgc3BlY2lmaWVkCgl3aXRoIC1MIGRvZXMgbm90IGV4aXN0OyBqdXN0IHdhcm4gYW5kIGRpc2NhcmQgaXQKCgkqIGRlcGRlbW8vbDEvTWFrZWZpbGUuYW0gKEFVVE9NQUtFX09QVElPTlMpOiBuby1kZXBlbmRlbmNpZXMKCSogZGVwZGVtby9sMi9NYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IGRpdHRvCgkqIGRlcGRlbW8vbDMvTWFrZWZpbGUuYW0gKEFVVE9NQUtFX09QVElPTlMpOiBkaXR0bwoJKiBkZXBkZW1vL2w0L01ha2VmaWxlLmFtIChBVVRPTUFLRV9PUFRJT05TKTogZGl0dG8KCgkqIGx0Y29uZmlnLmluIChhcmNoaXZlX2NtZHMsIHN1bm9zNCopOiB3aGVyZSB3ZSB1c2VkIC1Cc3RhdGljLCB3ZQoJc2hvdWxkIGhhdmUgYmVlbiB1c2luZyAtQnNoYXJlYWJsZQoKCSogZGVtby9NYWtlZmlsZS5hbSAoQ0xFQU5GSUxFUyk6IGNsZWFuIEVYVFJBXyogZnJvbSBkZXBsaWJzLWNoZWNrCgoJKiBsaWJ0b29sLm00IChMREZMQUdTLCBMSUJTKTogcGFzcyB0aGVtIHRvIGx0Y29uZmlnLCBmb3IgdGhlIHRlc3RzCgl0aGF0IGludm9sdmUgbGlua2luZwoJKiBNYWtlZmlsZS5hbSAoTERGTEFHUywgTElCUywgbGlidG9vbCwgY2xpYnRvb2wpOiBkaXR0bwoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoQ0ZMQUdTLCBDUFBGTEFHUywgTERGTEFHUywgTElCUyk6IHNldAoJKExERkxBR1MsIExJQlMsIFRFU1RTX0VOVklST05NRU5UKTogcGFzcyB0aGVtIGRvd24KCjE5OTktMDQtMDIgIEVyZXogWmFkb2sgIDxlemtAY3MuY29sdW1iaWEuZWR1PgoKCSogZG9jL1BMQVRGT1JNUzogMS4yZiBvayBvbiB2YXJpb3VzIHZlcnNpb25zIG9mIGhwdXggY2MKCjE5OTktMDQtMDIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGxpbmtfYWxsX2RlcGxpYnMpOiBzZXQgdG8gdW5rbm93biBieSBkZWZhdWx0CgkqIGx0bWFpbi5pbjogdGVzdCAhPSBubywgbm90ID0geWVzCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IHVua25vd24KCjE5OTktMDQtMDEgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudGVkIGRlcGxpYnMudGVzdAoKCSogZGVtby9NYWtlZmlsZS5hbTogbW92ZWQgdGVzdHN1aXRlIHNwZWNpZmljIGRlY2xhcmF0aW9ucyB0byB0aGUgZW5kLAoJICB0aGUgZGVwbGlicyBjaGVjayBpcyBub3cgb3B0aW9uYWwKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHJlYWQgbGlidG9vbCAtLWNvbmZpZyBvbmx5IG9uY2UsCgkgIG1lcmdlZCBBQ19TWVNfU1lNQk9MX1VOREVSU0NPUkUrQUNfU1lTX05NX1BBUlNFIGZyb20gbGlidG9vbC5tNAoJKiBsaWJ0b29sLm00OiBBQ19TWVNfU1lNQk9MX1VOREVSU0NPUkUrQUNfU1lTX05NX1BBUlNFIHdlcmUgbm90CgkgIHVzZWQsIGx0X2Rsb3BlbiBhbmQgc2lsZW50IG1heSBiZSBlbXB0eSwgQUNfU1lTX0xJQlRPT0xfQ1lHV0lOCgkgIG5vIGxvbmdlciBuZWNlc3NhcnkKCSogbHRjb25maWcuaW46IE5NIGlzIGFscmVhZHkgY2hlY2tlZCBpbiBsaWJ0b29sLm00LAoJKiBsdG1haW4uaW46IGFsd2F5cyBsaW5rIGFsbCBzdGF0aWMgZGVwZW5kZW5jeV9saWJzCgkqIHRlc3RzL01ha2VmaWxlLmFtOiBhZGRlZCBkZXBsaWJzLnRlc3QKCSogdGVzdHMvZGVtby1leGVjLnRlc3QsIGRlbW8taW5zdC50ZXN0OiByZW1vdmVkIGhlbGwwCgkqIHRlc3RzL2RlcGxpYnMudGVzdDogbmV3IHRlc3QgdG8gdGVzdCB0aGUgZGVwbGlic19jaGVja19tZXRob2QKCjE5OTktMDMtMzEgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsdG1haW4uaW46IGFsd2F5cyBsaW5rIGEgbGlicmFyeSBiZWZvcmUgaXRzIGRlcGVuZGVuY3kgbGlicwoJKiBtZGVtby9NYWtlZmlsZS5hbTogdGVzdCAtZXhwb3J0LXN5bWJvbHMtcmVnZXgKCjE5OTktMDMtMzAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpOiBmaXhlZCBhIHR5cG8KCSogbGlidG9vbGl6ZS5pbjogYWRkIHRoZSBsaWJ0b29sIHNjcmlwdHMgdG8gbGlibHRkbC50YXIuZ3oKCSogbGlidG9vbC5tNDogZG9uJ3QgQUNfU1VCU1QoVVNFX1NZTUJPTF9VTkRFUlNDT1JFKSwKCSAgQUNfQ0hFQ0tfTElCTSBzZXRzIExJQk0sIEFDX0xJQkxURExfSU5TVEFMTEFCTEUgZG9lc24ndCB3b3JrCgkgIHdoZW4gbGlibHRkbCBpcyBhbHJlYWR5IGluc3RhbGxlZAoJKiAqZGVtby9NYWtlZmlsZS5hbTogdXNlIExJQk0KCSogKmRlbW8vY29uZmlndXJlLmluOiBBQ19TVUJTVCBMSUJNCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiB1c2UgYWNfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlIGluc3RlYWQgb2YKCSAgVVNFX1NZTUJPTF9VTkRFUlNDT1JFCgkqIGx0Y29uZmlnLmluOiBhZGRlZCBsaW5rX2FsbF9kZXBsaWJzIHZhcmlhYmxlCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IGl0CgkqIGx0bWFpbi5pbjogYWx3YXlzIHNlYXJjaCBmb3IgbGlibmFtZS5sYSAtIGRvbid0IGV2YWwgbGlibmFtZV9zcGVjLAoJICB3aGVuIGxpbmtpbmcgbGlicmFyaWVzIGFnYWluc3Qgc3RhdGljIG9uZXMganVzdCBwcmludCBhIHdhcm5pbmcKCSAgYW5kIGFkZCB0aGVtIHRvIGRlcGVuZGVuY3lfbGlicywgYWRkIC1sYyBiZWZvcmUgZGVwbGlicywKCSAgYWx3YXlzIGxpbmsgYWxsIGRlcGVuZGVuY2llcyBvZiBhIHN0YXRpYyBsaWJyYXJ5IG9yIGlmCgkgIGxpbmtfYWxsX2RlcGxpYnMgaXMgeWVzLCBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGlmCgkgIGhhcmRjb2RlX2ludG9fbGlicyBpcyBubywgZG9uJ3QgbGluayBhZ2FpbnN0IGRlcGVuZGVuY3lfbGlicwoJICB0aGF0IGFscmVhZHkgYXJlIGRlcGxpYnMKCjE5OTktMDMtMzAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGFpeDQqLCBjb2xsZWN0Mm5hbWUpOiBtYWtlIHN1cmUgY29sbGVjdDIgZXhpc3RzCgliZWZvcmUgcnVubmluZyBzdHJpbmcgb24gaXQsIHRvIGF2b2lkIGVycm9ycyBvbiBvbGQgZ2NjcwoJUmVwb3J0ZWQgYnkgRXJleiBaYWRvayA8ZXprQGNzLmNvbHVtYmlhLmVkdT4KCgkqIGx0Y29uZmlnLmluIChhaXg0KiwgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyk6IHVubGVzcyB3ZSdyZQoJdXNpbmcgZ2NjIHdpdGggb2xkIGNvbGxlY3QyLCB1c2UgLWIgbGlicGF0aCB0byBoYXJkY29kZSB0aGUKCWxpYnJhcnkgc2VhcmNoIHBhdGgKCgkqIGx0bWFpbi5pbiwgbHRjb25maWcuaW46IHJldmVydGVkIG1vc3Qgb2YgdGhlIHF1b3RpbmcgY2hhbmdlcwoJZnJvbSAxOTk5LTAzLTI1OyBHYXJ5J3MgZGVsYXlfdmFyaWFibGVfc3Vic3QgcGF0Y2ggZnJvbSAxOTk5LTAyLTE5CglvYnZpYXRlcyBpdC4gIEtlZXAgb25seSBxdW90aW5nIG9mICRQQVRILCBmb3IgdW5pZm9ybWl0eSB3aXRoCglvdGhlciBzeXN0ZW1zIHRoYXQgYWxyZWFkeSBkaWQgaXQKCjE5OTktMDMtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbGFkZHNlYXJjaGRpcik6IEZvcmdvdCB0byBtYWxsb2NhdGUgdGhlCglleHRyYSBieXRlIG9mIG1lbW9yeSBmb3IgdGhlIHRlbWluYXRpbmcgTlVMLCBhbmQgZm9yZ290IHRvCglzdHJjcHkgdGhlIG9yaWdpbmFsIHBhdGggaW4gdG8gdGhlIG5ldyBtZW1vcnkgYmVmb3JlIGFwcGVuZGluZwoJdGhlIG5ldyBwYXRoIGNvbXBvbm9uZW50LgoKMTk5OS0wMy0yNyBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1M6IHVwZGF0ZWQKCSogUkVBRE1FOiB1cGRhdGVkIChCZU9TIHN1cHBvcnQsIG5vIGxvbmdlciBzaGFyZWQgbGlicmFyaWVzCgkgIHN1cHBvcnQgZm9yIEFtaWdhT1MpLCBjbGVhbnVwcywgd2UgaGF2ZSBub3cgdHdvIG1haWxpbmcgbGlzdHMKCSogUkVBTURFLWFscGhhOiBhdXRvZ2VuIC0+IGJvb3RzdHJhcCwgd2UgaGF2ZSBub3cgdHdvIG1haWxpbmcgbGlzdHMKCSogVEhBTktTOiBhZGRlZCBYYXZpZXIgUGlhbmV0CgkqIGRvYy9QTEFURk9STVM6IEJlT1Mgd29ya3MKCSogZG9jL2xpYnRvb2wudGV4aTogd2UgaGF2ZSBub3cgdG8gdHdvIG1haWxpbmcgbGlzdHMsCgkgIHVwZGF0ZWQgLWRsb3BlbiBzZWxmIGRvY3VtZW50YXRpb24sIGRvY3VtZW50ZWQgbGlibHRkbCdzIGxpY2Vuc2UsCgkgIHB1dCBlYWNoIGF1dGhvciBpbiBhIHNlcGFyYXRlIGxpbmUsCgkgIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIG9uIHVuaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzIGFyZQoJICBub3cgc3VwcG9ydGVkLCBjbGVhbnVwcyBhbmQgbWlub3IgY29ycmVjdGlvbnMKCSogbGlibHRkbC9DT1BZSU5HLkxJQjogbmV3IGZpbGUKCSogbGlibHRkbC9sdGRsLltjaF06IGFkZGVkIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBMR1BMIGxpY2Vuc2UKCSogbGlidG9vbC5zcGVjOiByZW1vdmVkLCBpdCB3YXMgb3V0ZGF0ZWQKCSogTWFrZWZpbGUuYW06IHJlbW92ZWQgbGlidG9vbC5zcGVjCgkqIGx0bWFpbi5pbjogdXNlIFRNUERJUiB3aGVuIHBvc3NpYmxlLCBjcmVhdGUgYSBzdWJkaXJlY3RvcnkKCSAgaW4gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnksIGFkZGVkIC1leHBvcnQtc3ltYm9scy1yZWdleCB0byB0aGUgaGVscCwKCjE5OTktMDMtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZGVtby9NYWtlZmlsZS5hbTogY3JlYXRlIGEgc3RhdGljIGxpYnJhcnksIGxpbmsgdHdvIGxpYnRvb2wKCWFyY2hpdmVzIHdpdGggaXQsIHRoZW4gbGluayB0aGUgcHJvZ3JhbSBoZWxsMCB3aXRoIGJvdGgKCSogZGVtby9oZWxsMS5jLCBkZW1vL2hlbGwyLmM6IGR1bW15IGZpbGVzIHVzZWQgdG8gY3JlYXRlIHRoZQoJbGlidG9vbCBhcmNoaXZlcyB3aXRob3V0IGludHJvZHVjaW5nIHN5bWJvbCBjb25mbGljdHMKCSogdGVzdHMvZGVtby1leGVjLnRlc3QsIHRlc3RzL2RlbW8taW5zdC50ZXN0OiBydW4gdGhlIG5ldyBwcm9ncmFtCgkqIGx0Y29uZmlnLmluIChpcml4NSosIGlyaXg2KiwgZGVwbGlic19jaGVja19tZXRob2QpOiBwYXNzX2FsbAoKCSogbHRtYWluLmluICgkUEFUSCk6IGluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBQQVRILCBiZXR0ZXIgcHJldmVudAoJaXRzIGV4cGFuc2lvbiB0aGUgZmlyc3QgdGltZSAqX2NtZHMgdmFyaWFibGVzIGFyZSBldmFsJ2VkLiAgTW9kaWZ5Cgkkc2hvdyB3aXRoaW4gbG9vcHMgdGhhdCBldmFsIHRoZW0gc28gYXMgdG8gZXhwYW5kIHZhcmlhYmxlcwoJKiBsdGNvbmZpZy5pbiAoKl9jbWRzKTogcXVvdGUgJCBzbyB0aGF0IHRoZXkncmUgbm90IGV4cGFuZGVkIGJ5Cgl0aGUgZmlyc3QgZXZhbAoKMTk5OS0wMy0yNSAgR2FyeSBWLiBWYXVnaGFuICA8Z3Z2QHRlY2hpZS5jb20+CgoJKiBsdG1haW4uaW4gKCRQQVRIKTogIEV4cGFuZCBhbnkgdGlsZGVzIGluIHRoZSB1c2VycyBwYXRoIHRvIHRoZQoJY29udGVudHMgb2YgJEhPTUUgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCAqX2NtZHMgc3BsaXR0aW5nIGFuZAoJZXZhbHVhdGlvbi4KCjE5OTktMDMtMjQgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBUT0RPOiBzdXBwb3J0IC1kbG9wZW4gZm9yIGxpYnJhcmllcwoJKiBkb2MvUExBVEZPUk1TOiBFcmV6IFphZG9rIHJlcG9ydGVkIHRoYXQgbGlidG9vbCB3b3JrcyBvbiBic2RpIDQuMC4xCgkqIGRvYy9saWJ0b29sLnRleGkgKGxpYmx0ZGwpOiBsaWJsdGRsIHN1cHBvcnRzIEJlT1MKCSogbGlibHRkbC9sdGRsLmM6IHNobGliX2V4dCB3YXMgZGVjbGFyZWQgZXZlbiBpZiBMVERMX1NITElCX0VYVAoJICBkaWRuJ3QgZXhpc3QsIHBhcnRpYWxseSByZXZlcnRlZCBteSBwcmV2aW91cyBwYXRjaDogQmVPUyB3aWxsCgkgIGF1dG9tYXRpY2FsbHkgc2VhcmNoIGluIEFERE9OX1BBVEgKCSogbHRtYWluLmluOiBkb24ndCBhbGxvdyByZWxhdGl2ZSBydW4tcGF0aHMsIGZpeGVkIGEgdHlwbyBpbiBhIHdhcm5pbmcsCgkgIGlnbm9yZSAtZGxvcGVuIHNlbGYgZm9yIGxpYnJhcmllcyBhbmQgb2JqZWN0cywKCSAgb25seSBhY2NlcHQgLUwgcGF0aHMgdGhhdCBleGlzdCwgbWlub3IgY2xlYW51cHMsCgkgIGJ1Z2ZpeDogYWRkIC1sYyBmb3Igbm9ybWFsIGxpYnJhcmllcywgbm90IGNvbnZlbmljZW5jZSBsaWJyYXJpZXMKCSAgcmVtb3ZlZCBvZmZlbnNpdmUgd2FybmluZ3MvY29tbWVudHMKCjE5OTktMDMtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGxkX3NobGlicywgYW1pZ2FvcyopOiBkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMKCjE5OTktMDMtMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHRoZSBzZWQgZXhwcmVzc2lvbiBmb3IgZmluZGluZyB0aGUgc2hhcmVkCglsaWJyYXJ5IGV4dGVuc2lvbiB1c2VkIHRvIHRoaW5rIHRoZSAuIGluIFsuXSBmb3IgdGhlIGN5Z3dpbgoJc2hhcmVkX2xpYnJhcnlfbmFtZXNfc3BlYyB3YXMgdGhlIHN0YXJ0IG9mIHRoZSBleHRlbnNpb24hISAgV2Ugbm93CglyZW1vdmUgYW55dGhpbmcgaW4gc3F1YXJlIGJyYWNrZXRzIChhc3N1bWluZyB0aGF0IHRoZSBzcXVhcmUKCWJyYWNrZXRzIGRlbGltaXQgYSBzZWQgb3IgZXhwciBleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZQoJZXh0ZW5zaW9uKSBiZWZvcmUgbG9va2luZyBmb3IgdGhlIGV4dGVuc2lvbi4KCgkqIFRPRE8gKGN5Z3dpbik6ICBmb29kIGZvciB0aG91Z2h0IHJlOiBtdXR1YWxseSBkZXBlbmRhbnQgZGxscy4KCjE5OTktMDMtMjEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogdGVzdHMvYnVpbGQtcmVsaW5rLnRlc3Q6IGlmIHdlIHJlbGluayBhbmQgaGF2ZSBoYXJkY29kZV9kaXJlY3QsCglyZW1vdmluZyBhbiB1bmluc3RhbGxlZCBsaWJyYXJ5IGJyZWFrcyBhbiB1bmluc3RhbGxlZCBwcm9ncmFtCgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwoJKiBUT0RPOiByZW1vdmVkIGVudHJ5IGFib3V0IGl0CgoJKiB0ZXN0cy8qLXVuc3QudGVzdDogaWYgZGlyZWN0b3J5IGlzIG5vdCBjb25maWd1cmVkLCBza2lwIGl0CgkqIHRlc3RzL2RlbW8udGVzdCwgdGVzdHMvbWRlbW8udGVzdDogdW51c2VkLCByZW1vdmVkCgkqIHRlc3RzL2RlcGRlbW8udGVzdDogZGl0dG8KCjE5OTktMDMtMjAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChsaW5rIG1vZGUpOiBkb2N1bWVudGF0aW9uIGZvciAtbW9kdWxlIHVwZGF0ZWQKCSogbHRjb25maWcuaW46IGZhc3QtaW5zdGFsbCBtb2RlIGRvZXNuJ3Qgd29yayBmb3IKCSAgaGFyZGNvZGVfaW50b19saWJzPXllcwoJKiBsdG1haW4uaW46IGJ1Z2ZpeDogIi1kbG9wZW4gc2VsZiBbLWFsbF0tc3RhdGljIiB3b3VsZG4ndCB1c2UKCSAgZGxvcGVuX3NlbGZfc3RhdGljLCBhdXRvbWF0aWNhbGx5IGVuYWJsZSAtZXhwb3J0LWR5bmFtaWMgd2hlbgoJICB1c2luZyAiLWRsb3BlbiBzZWxmIiwJYWx3YXlzIG1ha2UgcnVuLXBhdGhzIGFic29sdXRlLAoJICBpZ25vcmUgLWxjIG9ubHkgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSBzdWNoIGEgbGlicmFyeSwKCSAgY2xlYW51cHMgaW4gdGhlIElMRCBjb2RlLCBmaW5kIGV2ZW4gaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCgkgIHRoYXQgd2VyZSBtb3ZlZCwgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIERMTC1pbXBvcnQgbGlicmFyeSB3ZSBuZWVkCgkgIHRvIHNldCBsaWJuYW1lLCBpbXByb3ZlZCBoYXJkY29kaW5nIG9mIHNobGlicGF0aCBmb3IgbGlicmFyaWVzLAoJICBkb24ndCBnZW5lcmF0ZSBhbiBpbnN0YWxsYWJsZSBwc2V1ZG8tbGlicmFyeSBmb3IgY29udmVuaWVuY2UKCSAgbGlicmFyaWVzLCBidWdmaXg6IGV4cG9ydF9zeW1ib2xzIHdvdWxkIGJlIHJlbW92ZWQgaW1tZWRpYXRlbHkKCSAgYmVmb3JlIGl0IGlzIHVzZWQKCjE5OTktMDMtMTkgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiB1c2UgdGhlIHNhbWUgaGVhZGVyIGluIGFsbCBjb25maWd1cmUuaW4ncyBhbmQgTWFrZWZpbGUuYW0ncwoJKiBORVdTOiBpbXByb3ZlZCBzdXBwb3J0IGZvciBCZU9TIGFuZCBDeWd3aW4KCSogVE9ETzogSUxEIGJyYW5jaCB3YXMgbWVyZ2VkLCBhbGwgaW50ZXJuYWwgdmFyaWFibGVzIGFuZCBtYWNyb3MKCSAgYXJlIG5vdyBkb2N1bWVudGVkCgkqIGRlbW8vTWFrZWZpbGUuYW06IHVzZSAkKExJQlMpIGluc3RlYWQgb2YgLWxtCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50ZWQgbmV3IHZhcmlhYmxlIGhhcmRjb2RlX2ludG9fbGlicwoJICBhbmQgdGhyZWFkX3NhZmVfZmxhZ19zcGVjLCByZW5hbWVkIGFsbCBBTV9FTkFCTEUvRElTQUJMRV8qIG1hY3JvcwoJICB0byBBQ18qLCBkb2N1bWVudGVkIEFDX0RJU0FCTEVfRkFTVF9JTlNUQUxMIGFuZCBBQ19MSUJUT09MX0RMT1BFTgoJKiBsaWJsdGRsL2x0ZGwuYzogYWRkZWQgdHdvIG5ldyBlcnJvciBtZXNzYWdlcyAoY2Fubm90X29wZW5fZXJyb3IsCgkgIGNhbm5vdF9jbG9zZV9lcnJvciksIHVzZSB0aGVtIHdoZXJlIGFwcHJvcmlhdGUsCgkgIEJlT1Mgc3VwcG9ydCAodGhhbmtzIHRvIFhhdmllciBQaWFuZXQpLCBvbiBCZU9TIHNlYXJjaCBtb2R1bGVzCgkgIGFkZGl0aW9uYWxseSBpbiBBRERPTl9QQVRICgkqIGxpYnRvb2wubTQ6IHJld3JvdGUgQUNfQ0hFQ0tfTElCTTogQmVPUyBhbmQgQ3lnd2luIGRvbid0IGhhdmUKCSAgbGlibSBhbmQgKi1uY3Itc3lzdjQuMyogcmVxdWlyZXMgbGlibXcKCSogbHRjb25maWcuaW46IGRvbid0IGNoZWNrIGZvciBMb2FkTGlicmFyeSwgaGFyZGNvZGUgZGxvcGVuCgkgIGNvbmZpZ3VyYXRpb24gZm9yIEJlT1MgYW5kIEN5Z3dpbgoJKiBsdG1haW4uaW46IGZpeCBzb3VyY2luZyBvZiAubGEgZmlsZXMgb24gU29sYXJpcwoJICAocGF0Y2ggYnkgUmFqYSBSIEhhcmluYXRoKQoKMTk5OS0wMy0xOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoc3Vub3M0Kiwgd2l0aF9nbnVfbGQsIGhhcmRjb2RlX21pbnVzX0wpOiByZW1vdmUsCXdlCgloYXZlIC1ycGF0aAoJKGFpeDQqLCB3aXRob3V0X2dudV9sZCwgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcik6IHVuc3VwcG9ydGVkIGlzCglkZWZhdWx0CgkoaHB1eDkqLCBocHV4MTAqLCBocHV4MTEqLCBhcmNoaXZlX2NtZHMpOiBkcm9wICtzLCB1bm5lZWRlZCBoZXJlCgkoaHB1eDkqLCBocHV4MTAqLCBocHV4MTEqLCBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjKTogYWRkICtzCgliZWZvcmUgK2IKCShocHV4OSosIGhwdXgxMCosIGhwdXgxMSosIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IHNpbmNlICtzCglhcHBlYXJzIGJlZm9yZSArYiwgc2V0IGl0IHRvIHllcwoJKGhhcmRjb2RlX3NobGlicGF0aF92YXIsIGhhcmRjb2RlX2FjdGlvbik6IGRvIG5vdCB1c2UKCXNobGlicGF0aF92YXIgdG8gc3BlY2lmeSB0aGUgY29tcGlsZS10aW1lIHNlYXJjaCBwYXRoOyBpdCBsb3NlcywKCWFuZCB3ZSBtYXkgZW5kIHVwIGxpbmtpbmcgd2l0aCBwcmUtaW5zdGFsbGVkIG9sZGVyIHZlcnNpb25zIG9mCglsaWJyYXJpZXMgaW5zdGVhZCBvZiB5ZXQtdG8tYmUtaW5zdGFsbGVkIG9uZXMKCSgqLCBoYXJkY29kZV9kaXJlY3QsIGhhcmRjb2RlX21pbnVzX0wpOiByZW1vdmUgZW50cmllcyB0aGF0IHNldAoJdGhlbSB0byBubywgdGhhdCBpcyBkZWZhdWx0CgoJKiBkZW1vL01ha2VmaWxlLmFtIChoYy1kaXJlY3QsIGhjLWxpYnBhdGgsIGhjLW1pbnVzTCk6IGxpbmsgd2l0aAoJJCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBpZiBhdmFpbGFibGUsIHdpdGggbGliZGlyPSQobGliZGlyKSwKCXRvIG1ha2Ugc3VyZSB0aGUgaGFyZGNvZGVfKiB2YXJpYWJsZXMgd2lsbCBwcm9kdWNlIHRoZSBleHBlY3RlZAoJcmVzdWx0cyBldmVuIGluIHRoZSBwcmVzZW5jZSBvZiBhIGhhcmRjb2RpbmcgZmxhZzsgZGVwZW5kIG9uCglsaWJoZWxsby5sYSBoYXZpbmcgYmVlbiBpbnN0YWxsZWQgYWxyZWFkeQoJKGhjLWxpYmZsYWcpOiBsaW5rIHdpdGggdGhlIGluc3RhbGxlZCBsaWJyYXJ5LCBidXQgdHJ5IHRvCgloYXJkLWNvZGUgdGhlIHVuaW5zdGFsbGVkIG9uZQoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCB0aGUgY2hhbmdlcwoKCSogdGVzdHMvKi50ZXN0OiB3aGVuIGEgdGVzdCBmYWlscywgc2tpcCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBpdC4KCUlmIGEgY2VydGFpbiBjb25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQsIHNraXAgYWxsIGl0cyB0ZXN0cy4KCgkqIGRvYy9saWJ0b29sLnRleGk6IHJlb3JkZXIgdGVzdHMgdG8gcmVmbGVjdCBleGVjdXRpb24gb3JkZXIKCgkqIHRlc3RzL25vaW5zdC1saW5rLnRlc3Q6IG5ldyB0ZXN0CgkqIHRlc3RzL01ha2VmaWxlLmFtIChURVNUUyk6IGFkZGVkIG5vaW5zdC1saW5rLnRlc3QKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnQgaXQKCjE5OTktMDMtMTkgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogbHRtYWluLmluIChkZXBlbmRlbmN5X2xpYnMpOiBUaGVyZSBpcyBubyByZWFzb24gdG8gaW5mZXIgdGhhdAoJdGhlIHBzZXVkbyBsaWJyYXJ5IGlzIGludmFsaWQgaWYgZGVwZW5kZW5jeV9saWJzPScnIGF0CglpbnN0YWxsLXRpbWUsIG9yIGVsc2UgbGlibHRkbC9saWJsdGRsLmxhIGlzIGludmFsaWQhIQoKMTk5OS0wMy0xOCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBtZXJnZWQgbXkgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgY29kZSBmcm9tIHRoZSBJTEQgYnJhbmNoOgoJKiBORVdTOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm93IHN1cHBvcnRlZAoJKiBjb25maWd1cmUuaW46IGFkZCB0aGUgZGVwZGVtbyBzdWJkaXJlY3RvcnkKCSogZGVwZGVtby8qOiBuZXcgZGVtbyB0byBkZW1vbnN0cmF0ZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcwoJKiB0ZXN0cy9kZXBkZW1vKjogbmV3IHRlc3RzIGZvciBkZXBkZW1vCgkqIGx0Y29uZmlnLmluOiBhZGRlZCBoYXJkY29kZV9pbnRvX2xpYnMgKHdoZXRoZXIgbGlicmFyeSBwYXRocwoJICBzaG91bGQgYmUgaGFyZGNvZGVkIGludG8gdGhlIGxpYnJhcmllcyksCgkgIGl0IGN1cnJlbnRseSBkZWZhdWx0cyB0byAnbm8nCgkqIGx0bWFpbi5pbjogbmV3IGludGVybmFsICdyZWxpbmsnIG1vZGUgdG8gcmVsaW5rIGxpYnJhcmllcwoJICBvbiBwbGF0Zm9ybXMgd2l0aCBoYXJkY29kZV9pbnRvX2xpYnM9eWVzLCBzYXZlIGNvbW1hbmQgbGluZQoJICBhcmd1bWVudHMgaW4gbGlidG9vbF9hcmdzLCBhY2NlcHQgcmVsYXRpdmUgLUwgZGlyZWN0b3JpZXMsCgkgIGlnbm9yZSAtbG0gb24gQmVPUyBhbmQgQ3lnd2luLCBhbHdheXMgaWdub3JlIC1sYywKCSAgaGFuZGxlIC1sLCAtTCBhbmQgLmxhIGFyZ3VtZW50cyBsYXRlciwgYWx3YXlzIG1ha2UgdGhlIGxpYnJhcnkKCSAgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAoLXJwYXRoKSBhYnNvbHV0ZSwgaW4gcmVsaW5rIG1vZGUgZG9uJ3QKCSAgZGVsZXRlIHRoZSBub3QtcmVsaW5rZWQgbGlicmFyeSBhbmQgZXhpdCBpbW1lZGlhdGVseSBhZnRlciByZWxpbmtpbmcsCgkgIHRyeSB0byBmaW5kIGFscmVhZHktaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzIHRoYXQgd2VyZSBzcGVjaWZpZWQKCSAgdXNpbmcgLWwsIHN1cHBvcnQgaGFyZGNvZGluZyBvZiBsaWJyYXJ5IHBhdGhzIGludG8gbGlicmFyaWVzIHRvbywKCSAgZXhwb3J0IHNobGlicGF0aCBiZWZvcmUgbGlua2luZyBsaWJyYXJpZXMsIGFuZCBhIGxvdCBvZiBvdGhlcgoJICBiaWcgY2hhbmdlcyB0aGF0IEkgZG9uJ3Qgd2FudCB0byBkZXNjcmliZSBoZXJlLi4uIHBsZWFzZSByZWFkCgkgIHRoZSBzb3VyY2UuCgoJKiBtZXJnZWQgR2FyeSdzIFdpbjMyIGNvZGUgZnJvbSB0aGUgSUxEIGJyYW5jaDoKCSogTkVXUzogV2luMzIgRExMcyBhcmUgbm93IHN1cHBvcnRlZAoJKiBUT0RPOiByZW1vdmVkIC5hIGxpYnJhcnkgbmFtZXNwYWNlIGNsYXNoIGZvciB3aW4zMi4gIEl0IGlzCgkgIG5vdyByZXNvbHZlZC4KCSogbHRjb25maWcuaW4gKGN5Z3dpbiwgbGlicmFyeV9uYW1lc19zcGVjKTogIHJlbW92ZWQgJGxpYm5hbWUuYS4KCSAgQ3JlYXRpbmcgYSBkbGwgd2l0aCBsaWJ0b29sIG5vIGxvbmdlciBjcmVhdGVzIGFuIGltcG9ydCBsaWJyYXJ5LgoJKiBsdGNvbmZpZy5pbiAoZXh0cmFjdF9leHBzeW1zX2NtZHMpOiBDcmVhdGUgJG9iamRpciBpZiBpdCBkb2VzCgkgIG5vdCBleGlzdCAtLSBpLmUuIHdlIG5lZWQgdG8gZ2VuZXJhdGUgaW1wb3J0IGFuIGltcG9ydCBsaWJyYXJ5CgkgIGluIGEgZGlyZWN0b3J5IHdoaWNoIGhhcyBubyBsaWJzIG9mIGl0cyBvd24uCgkqIGRvYy9saWJ0b29sLnRleGkgKG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzLAoJICBleHRyYWN0X2V4cHN5bXNfY21kcyk6IGRvY3VtZW50ZWQgdGhlc2UgbmV3IHZhcmlhYmxlcy4KCSogbHRjb25maWcuaW4gKGV4dHJhY3RfZXhwc3ltc19jbWRzKTogTmV3IHZhcmlhYmxlLiAgQ29tbWFuZHMgdG8KCSAgZXh0cmFjdCB0aGUgZXhwb3J0ZWQgc3ltYm9sIGxpc3QgZnJvbSBhIGRsbC4KCSAgKG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzKTogTmV3IHZhcmlhYmxlLiAgQ29tbWFuZHMgdG8gYnVpbGQKCSAgYW4gb2xkIGFyY2hpdmUgZnJvbSB0aGUgZXh0cmFjdGVkIGV4cHN5bXMgbGlzdC4KCSogbHRtYWluLmluOiBydW4gdGhlIGNtZHMgaW4gZXh0cmFjdF9leHBzeW1zX2NtZHMgYW5kCgkgIG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIGFzIG5lY2Vzc2FyeS4KCSogbHRjb25maWcuaW4gKGN5Z3dpbiwgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcyk6IG5vIGxvbmdlcgoJICByZXF1aXJlZC4KCSogbHRjb25maWcuaW4gKGN5Z3dpbiwgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoKTogSSdtIG5vdCBldmVuCgkgIHN1cmUgd2hldGhlciB3aW4zMiBob25vdXJzIHRoZSBydW5wYXRoIGF0IGFsbCB3aGVuIHNlYXJjaGluZyBmb3IKCSAgYSBkbGwgdG8gbG9hZCEgIEFueXdheSwgd2hlbiBzZXQgdG8geWVzIHRoaXMgcHJldmVudHMgYSBncmF0dWl0b3VzCgkgIHdhcm5pbmcuCgkqIGx0bWFpbi5pbiAoZGVwbGliKTogVGhlIGN5Z3dpbiBlbnZpcm9ubWVudCBkb2Vzbid0IGFjdHVhbGx5IGhhdmUKCSAgLWxtLCBhbmQgYWx0aG91Z2ggdGhlIGxpbmtlciBmYWtlcyBoYXZpbmcgb25lLCBzcGVjaWZpeWluZyBpdCB0bwoJICBsaWJ0b29sIHdpbGwgYnJlYWsgSUxELCBzbyB3ZSBpZ25vcmUgaXQgd2hlbiBnZW5lcmF0aW5nCgkgIGRlcGVuZGVuY2llcy4KCjE5OTktMDMtMTcgIEdhcnkgVi4gVmF1Z2hhbiAgPGd2dkB0ZWNoaWUuY29tPgoKCSogZG9jL1BMQVRGT1JNUzogVGhhbmtzIHRvIEFsZXhhbmRyZXMgY2hhbmdlcyBiZWxvdywgYm90aCBteQoJaHAgYm94ZXMgcGFzcyB0aGUgZW50aXJlIHRlc3Qgc3VpdGUuCgoxOTk5LTAzLTE3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChocHV4KiwgaGFyZGNvZGVfbWludXNfTCk6IHNob3VsZCBiZSBubywgd2UgaGF2ZSArYgoJKGhwdXgqLCBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yKTogc2V0IHRvIGNvbG9uCgoxOTk5LTAzLTE3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9QTEFURk9STVM6IGVnY3MgaXMgZ2NjOyB1cGRhdGVzIGZyb20gRXJleiBaYWRvawoKMTk5OS0wMy0xNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKGRlcGxpYnMsIGJlb3MqKTogZG9uJ3QgYXBwZW5kIC1sYwoJUmVwb3J0ZWQgYnkgWGF2aWVyIFBpYW5ldCA8eGF2aWVyQHhpbmdvLmNvbT4KCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0IChoYXJkY29kZV9hY3Rpb24pOiB3aGVuIHNldCB0byByZWxpbmssCglza2lwIHRoZSB0ZXN0IHdpdGggbHQtaGVsbAoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBhZGQgbWtzdGFtcAoJUmVwb3J0ZWQgYnkgWGF2aWVyIFBpYW5ldCA8eGF2aWVyQHhpbmdvLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogYWRkIENoYW5nZUxvZy4wCgoxOTk5LTAzLTE2ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGRvYy9saWJ0b29sLnRleGk6IHNvbWUgbWlub3IgY29ycmVjdGlvbnMgdG8gdGhlICItZGxvcGVuIHNlbGYiCgkgIGRvY3VtZW50YXRpb24KCSogdGVzdHMvTWFrZWZpbGUuYW06IHNvcnRlZCBieSBuYW1lLCBhZGRlZCBhc3NpZ24udGVzdAoJKiBDaGFuZ2VMb2c6IHN0YXJ0ZWQgbmV3IGZpbGUKCgkqIGx0Y29uZmlnLmluOiBzb21lIGNvc21ldGljYWwgY2hhbmdlcwoJKiBsdG1haW4uaW46IGRpdHRvCgpDb250aW51ZWQgaW4gQ2hhbmdlTG9nLjAKCgkkUmV2aXNpb24kICREYXRlJAo=