ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQVBJLmh0bWwgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0FQSS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiM2Q4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0FQSS5odG1sCkBAIC0wLDAgKzEsMzk5IEBACis8SFRNTD48SEVBRD4KKzxUSVRMRT5WaWRlbzRMaW51eCBLZXJuZWwgQVBJIFJlZmVyZW5jZSB2MC4xOjE5OTkwNDMwPC9USVRMRT4KKzwvSEVBRD4KKzwhIFJldmlzaW9uIEhpc3Rvcnk6ID4KKzwhICAgNC8zMC8xOTk5IC0gRnJlZCBHbGVhc29uIChmcmVkZ0B3YXZhLmNvbSk+Cis8ISBEb2N1bWVudGVkIGV4dGVuc2lvbnMgZm9yIHRoZSBSYWRpbyBEYXRhIFN5c3RlbSAoUkRTKSBleHRlbnNpb25zID4KKzxCT0RZIGJnY29sb3I9IiNmZmZmZmYiPgorPEgzPkRldmljZXM8L0gzPgorVmlkZW80TGludXggcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBzZXRzIG9mIGRldmljZSBmaWxlcy4gVGhlc2UgbGl2ZSBvbiB0aGUKK2NoYXJhY3RlciBkZXZpY2UgZm9ybWVybHkga25vd24gYXMgIi9kZXYvYnR0diIuIC9kZXYvYnR0diBzaG91bGQgYmUgYQorc3ltbGluayB0byAvZGV2L3ZpZGVvMCBmb3IgbW9zdCBwZW9wbGUuIAorPFA+Cis8VEFCTEU+Cis8VFI+PFRIPkRldmljZSBOYW1lPC9USD48VEg+TWlub3IgUmFuZ2U8L1RIPjxUSD5GdW5jdGlvbjwvVEg+Cis8VFI+PFREPi9kZXYvdmlkZW88L1REPjxURD4wLTYzPC9URD48VEQ+VmlkZW8gQ2FwdHVyZSBJbnRlcmZhY2U8L1REPgorPFRSPjxURD4vZGV2L3JhZGlvPC9URD48VEQ+NjQtMTI3PC9URD48VEQ+QU0vRk0gUmFkaW8gRGV2aWNlczwvVEQ+Cis8VFI+PFREPi9kZXYvdnR4PC9URD48VEQ+MTkyLTIyMzwvVEQ+PFREPlRlbGV0ZXh0IEludGVyZmFjZSBDaGlwczwvVEQ+Cis8VFI+PFREPi9kZXYvdmJpPC9URD48VEQ+MjI0LTIzOTwvVEQ+PFREPlJhdyBWQkkgRGF0YSAoSW50ZXJjYXN0L3RlbGV0ZXh0KTwvVEQ+Cis8L1RBQkxFPgorPFA+CitWaWRlbzRMaW51eCBwcm9ncmFtcyBvcGVuIGFuZCBzY2FuIHRoZSBkZXZpY2VzIHRvIGZpbmQgd2hhdCB0aGV5IGFyZSBsb29raW5nCitmb3IuIENhcGFiaWxpdHkgcXVlcmllcyBkZWZpbmUgd2hhdCBlYWNoIGludGVyZmFjZSBzdXBwb3J0cy4gVGhlIAorZGVzY3JpYmVkIEFQSSBpcyBvbmx5IGRlZmluZWQgZm9yIHZpZGVvIGNhcHR1cmUgY2FyZHMuIFRoZSByZWxldmFudCBzdWJzZXQKK2FwcGxpZXMgdG8gcmFkaW8gY2FyZHMuIFRlbGV0ZXh0IGludGVyZmFjZXMgdGFsayB0aGUgZXhpc3RpbmcgVlRYIEFQSS4KKzxQPgorPEgzPkNhcGFiaWxpdHkgUXVlcnkgSW9jdGw8L0gzPgorVGhlIDxCPlZJRElPQ0dDQVA8L0I+IGlvY3RsIGNhbGwgaXMgdXNlZCB0byBvYnRhaW4gdGhlIGNhcGFiaWxpdHkKK2luZm9ybWF0aW9uIGZvciBhIHZpZGVvIGRldmljZS4gVGhlIDxiPnN0cnVjdCB2aWRlb19jYXBhYmlsaXR5PC9iPiBvYmplY3QKK3Bhc3NlZCB0byB0aGUgaW9jdGwgaXMgY29tcGxldGVkIGFuZCByZXR1cm5lZC4gSXQgY29udGFpbnMgdGhlIGZvbGxvd2luZworaW5mb3JtYXRpb24KKzxQPgorPFRBQkxFPgorPFRSPjxURD48Yj5uYW1lWzMyXTwvYj48VEQ+Q2Fub25pY2FsIG5hbWUgZm9yIHRoaXMgaW50ZXJmYWNlPC9URD4KKzxUUj48VEQ+PGI+dHlwZTwvYj48VEQ+VHlwZSBvZiBpbnRlcmZhY2U8L1REPgorPFRSPjxURD48Yj5jaGFubmVsczwvYj48VEQ+TnVtYmVyIG9mIHJhZGlvL3R2IGNoYW5uZWxzIGlmIGFwcHJvcHJpYXRlPC9URD4KKzxUUj48VEQ+PGI+YXVkaW9zPC9iPjxURD5OdW1iZXIgb2YgYXVkaW8gZGV2aWNlcyBpZiBhcHByb3ByaWF0ZTwvVEQ+Cis8VFI+PFREPjxiPm1heHdpZHRoPC9iPjxURD5NYXhpbXVtIGNhcHR1cmUgd2lkdGggaW4gcGl4ZWxzPC9URD4KKzxUUj48VEQ+PGI+bWF4aGVpZ2h0PC9iPjxURD5NYXhpbXVtIGNhcHR1cmUgaGVpZ2h0IGluIHBpeGVsczwvVEQ+Cis8VFI+PFREPjxiPm1pbndpZHRoPC9iPjxURD5NaW5pbXVtIGNhcHR1cmUgd2lkdGggaW4gcGl4ZWxzPC9URD4KKzxUUj48VEQ+PGI+bWluaGVpZ2h0PC9iPjxURD5NaW5pbXVtIGNhcHR1cmUgaGVpZ2h0IGluIHBpeGVsczwvVEQ+Cis8L1RBQkxFPgorPFA+CitUaGUgdHlwZSBmaWVsZCBsaXN0cyB0aGUgY2FwYWJpbGl0eSBmbGFncyBmb3IgdGhlIGRldmljZS4gVGhlc2UgYXJlCithcyBmb2xsb3dzCis8UD4KKzxUQUJMRT4KKzxUUj48VEg+TmFtZTwvVEg+PFRIPkRlc2NyaXB0aW9uPC9USD4KKzxUUj48VEQ+PGI+VklEX1RZUEVfQ0FQVFVSRTwvYj48VEQ+Q2FuIGNhcHR1cmUgdG8gbWVtb3J5PC9URD4KKzxUUj48VEQ+PGI+VklEX1RZUEVfVFVORVI8L2I+PFREPkhhcyBhIHR1bmVyIG9mIHNvbWUgZm9ybTwvVEQ+Cis8VFI+PFREPjxiPlZJRF9UWVBFX1RFTEVURVhUPC9iPjxURD5IYXMgdGVsZXRleHQgY2FwYWJpbGl0eTwvVEQ+Cis8VFI+PFREPjxiPlZJRF9UWVBFX09WRVJMQVk8L2I+PFREPkNhbiBvdmVybGF5IGl0cyBpbWFnZSBvbnRvIHRoZSBmcmFtZSBidWZmZXI8L1REPgorPFRSPjxURD48Yj5WSURfVFlQRV9DSFJPTUFLRVk8L2I+PFREPk92ZXJsYXkgaXMgQ2hyb21ha2V5ZWQ8L1REPgorPFRSPjxURD48Yj5WSURfVFlQRV9DTElQUElORzwvYj48VEQ+T3ZlcmxheSBjbGlwcGluZyBpcyBzdXBwb3J0ZWQ8L1REPgorPFRSPjxURD48Yj5WSURfVFlQRV9GUkFNRVJBTTwvYj48VEQ+T3ZlcmxheSBvdmVyd3JpdGVzIGZyYW1lIGJ1ZmZlciBtZW1vcnk8L1REPgorPFRSPjxURD48Yj5WSURfVFlQRV9TQ0FMRVM8L2I+PFREPlRoZSBoYXJkd2FyZSBzdXBwb3J0cyBpbWFnZSBzY2FsaW5nPC9URD4KKzxUUj48VEQ+PGI+VklEX1RZUEVfTU9OT0NIUk9NRTwvYj48VEQ+SW1hZ2UgY2FwdHVyZSBpcyBncmV5IHNjYWxlIG9ubHk8L1REPgorPFRSPjxURD48Yj5WSURfVFlQRV9TVUJDQVBUVVJFPC9iPjxURD5DYXB0dXJlIGNhbiBiZSBvZiBvbmx5IHBhcnQgb2YgdGhlIGltYWdlPC9URD4KKzwvVEFCTEU+Cis8UD4KK1RoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHNpemVzIGxpc3RlZCBmb3IgYSBjYXB0dXJlIGRldmljZSBkbyBub3QgaW1wbHkgYWxsCit0aGF0IGFsbCBoZWlnaHQvd2lkdGggcmF0aW9zIG9yIHNpemVzIHdpdGhpbiB0aGUgcmFuZ2UgYXJlIHBvc3NpYmxlLiBBCityZXF1ZXN0IHRvIHNldCBhIHNpemUgd2lsbCBiZSBob25vdXJlZCBieSB0aGUgbGFyZ2VzdCBhdmFpbGFibGUgY2FwdHVyZQorc2l6ZSB3aG9zZSBjYXB0dXJlIGlzIG5vIGxhcmdlIHRoYW4gdGhlIHJlcXVlc3RlZCByZWN0YW5nbGUgaW4gZWl0aGVyCitkaXJlY3Rpb24uIEZvciBleGFtcGxlIHRoZSBxdWlja2NhbSBoYXMgMyBmaXhlZCBzZXR0aW5ncy4gCis8UD4KKzxIMz5GcmFtZSBCdWZmZXI8L0gzPgorQ2FwdHVyZSBjYXJkcyB0aGF0IGRyb3AgZGF0YSBkaXJlY3RseSBvbnRvIHRoZSBmcmFtZSBidWZmZXIgbXVzdCBiZSB0b2xkIHRoZQorYmFzZSBhZGRyZXNzIG9mIHRoZSBmcmFtZSBidWZmZXIsIGl0cyBzaXplIGFuZCBvcmdhbmlzYXRpb24uIFRoaXMgaXMgYSAKK3ByaXZpbGVnZWQgaW9jdGwgYW5kIG9uZSB0aGF0IGV2ZW50dWFsbHkgWCBpdHNlbGYgc2hvdWxkIHNldC4KKzxQPgorVGhlIDxiPlZJRElPQ1NGQlVGPC9iPiBpb2N0bCBzZXRzIHRoZSBmcmFtZSBidWZmZXIgcGFyYW1ldGVycyBmb3IgYSBjYXB0dXJlCitjYXJkLiBJZiB0aGUgY2FyZCBkb2VzIG5vdCBkbyBkaXJlY3Qgd3JpdGVzIHRvIHRoZSBmcmFtZSBidWZmZXIgdGhlbiB0aGlzCitpb2N0bCB3aWxsIGJlIHVuc3VwcG9ydGVkLiBUaGUgPGI+VklESU9DR0ZCVUY8L2I+IGlvY3RsIHJldHVybnMgdGhlCitjdXJyZW50bHkgdXNlZCBwYXJhbWV0ZXJzLiBUaGUgc3RydWN0dXJlIHVzZWQgaW4gYm90aCBjYXNlcyBpcyBhIAorPGI+c3RydWN0IHZpZGVvX2J1ZmZlcjwvYj4uCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+dm9pZCAqYmFzZTwvYj48L1REPjxURD5CYXNlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGJ1ZmZlcjwvVEQ+Cis8VFI+PFREPjxiPmludCBoZWlnaHQ8L2I+PC9URD48VEQ+SGVpZ2h0IG9mIHRoZSBmcmFtZSBidWZmZXI8L1REPgorPFRSPjxURD48Yj5pbnQgd2lkdGg8L2I+PC9URD48VEQ+V2lkdGggb2YgdGhlIGZyYW1lIGJ1ZmZlcjwvVEQ+Cis8VFI+PFREPjxiPmludCBkZXB0aDwvYj48L1REPjxURD5EZXB0aCBvZiB0aGUgZnJhbWUgYnVmZmVyPC9URD4KKzxUUj48VEQ+PGI+aW50IGJ5dGVzcGVybGluZTwvYj48L1REPjxURD5OdW1iZXIgb2YgYnl0ZXMgb2YgbWVtb3J5IGJldHdlZW4gdGhlIHN0YXJ0IG9mIHR3byBhZGphY2VudCBsaW5lczwvVEQ+Cis8L1RBQkxFPgorPFA+CitOb3RlIHRoYXQgdGhlc2UgdmFsdWVzIHJlZmxlY3QgdGhlIHBoeXNpY2FsIGxheW91dCBvZiB0aGUgZnJhbWUgYnVmZmVyLiAKK1RoZSB2aXNpYmxlIGFyZWEgbWF5IGJlIHNtYWxsZXIuIEluIGZhY3QgdW5kZXIgWEZyZWU4NiB0aGlzIGlzIGNvbW1vbmx5IHRoZQorY2FzZS4gWEZyZWU4NiBER0EgY2FuIHByb3ZpZGUgdGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgdG8gc2V0IHVwIHRoaXMgaW9jdGwuCitTZXR0aW5nIHRoZSBiYXNlIGFkZHJlc3MgdG8gTlVMTCBpbmRpY2F0ZXMgdGhlcmUgaXMgbm8gcGh5c2ljYWwgZnJhbWUgYnVmZmVyCithY2Nlc3MuCis8UD4KKzxIMz5DYXB0dXJlIFdpbmRvd3M8L0gzPgorVGhlIGNhcHR1cmUgYXJlYSBpcyBkZXNjcmliZWQgYnkgYSA8Yj5zdHJ1Y3QgdmlkZW9fd2luZG93PC9iPi4gVGhpcyBkZWZpbmVzCithIGNhcHR1cmUgYXJlYSBhbmQgdGhlIGNsaXBwaW5nIGluZm9ybWF0aW9uIGlmIHJlbGV2YW50LiBUaGUgCis8Yj5WSURJT0NHV0lOPC9iPiBpb2N0bCByZWNvdmVycyB0aGUgY3VycmVudCBzZXR0aW5ncyBhbmQgdGhlIAorPGI+VklESU9DU1dJTjwvYj4gc2V0cyBuZXcgdmFsdWVzLiBBIHN1Y2Nlc3NmdWwgY2FsbCB0byA8Yj5WSURJT0NTV0lOPC9iPiAKK2luZGljYXRlcyB0aGF0IGEgc3VpdGFibGUgc2V0IG9mIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGNob3Nlbi4gVGhleSBkbyBub3QKK2luZGljYXRlIHRoYXQgZXhhY3RseSB3aGF0IHdhcyByZXF1ZXN0ZWQgd2FzIGdyYW50ZWQuIFRoZSBwcm9ncmFtIHNob3VsZAorY2FsbCA8Yj5WSURJT0NHV0lOPC9iPiB0byBjaGVjayBpZiB0aGUgbmVhcmVzdCBtYXRjaCB3YXMgc3VpdGFibGUuIFRoZQorPGI+c3RydWN0IHZpZGVvX3dpbmRvdzwvYj4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBmaWVsZHMuCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+eDwvYj48VEQ+VGhlIFggY28tb3JkaW5hdGUgc3BlY2lmaWVkIGluIFggd2luZG93cyBmb3JtYXQuPC9URD4KKzxUUj48VEQ+PGI+eTwvYj48VEQ+VGhlIFkgY28tb3JkaW5hdGUgc3BlY2lmaWVkIGluIFggd2luZG93cyBmb3JtYXQuPC9URD4KKzxUUj48VEQ+PGI+d2lkdGg8L2I+PFREPlRoZSB3aWR0aCBvZiB0aGUgaW1hZ2UgY2FwdHVyZS48L1REPgorPFRSPjxURD48Yj5oZWlnaHQ8L2I+PFREPlRoZSBoZWlnaHQgb2YgdGhlIGltYWdlIGNhcHR1cmUuPC9URD4KKzxUUj48VEQ+PGI+Y2hyb21ha2V5PC9iPjxURD5BIGhvc3Qgb3JkZXIgUkdCMzIgdmFsdWUgZm9yIHRoZSBjaHJvbWEga2V5LjwvVEQ+Cis8VFI+PFREPjxiPmZsYWdzPC9iPjxURD5BZGRpdGlvbmFsIGNhcHR1cmUgZmxhZ3MuPC9URD4KKzxUUj48VEQ+PGI+Y2xpcHM8L2I+PFREPkEgbGlzdCBvZiBjbGlwcGluZyByZWN0YW5nbGVzLiA8ZW0+KFNldCBvbmx5KTwvZW0+PC9URD4KKzxUUj48VEQ+PGI+Y2xpcGNvdW50PC9iPjxURD5UaGUgbnVtYmVyIG9mIGNsaXBwaW5nIHJlY3RhbmdsZXMuIDxlbT4oU2V0IG9ubHkpPC9lbT48L1REPgorPC9UQUJMRT4KKzxQPgorQ2xpcHBpbmcgcmVjdGFuZ2xlcyBhcmUgcGFzc2VkIGFzIGFuIGFycmF5LiBFYWNoIGNsaXAgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZworZmllbGRzIGF2YWlsYWJsZSB0byB0aGUgdXNlci4KKzxQPgorPFRBQkxFPgorPFRSPjxURD48Yj54PC9iPjwvVEQ+PFREPlggY28tb3JkaW5hdGUgb2YgcmVjdGFuZ2xlIHRvIHNraXA8L1REPgorPFRSPjxURD48Yj55PC9iPjwvVEQ+PFREPlkgY28tb3JkaW5hdGUgb2YgcmVjdGFuZ2xlIHRvIHNraXA8L1REPgorPFRSPjxURD48Yj53aWR0aDwvYj48L1REPjxURD5XaWR0aCBvZiByZWN0YW5nbGUgdG8gc2tpcDwvVEQ+Cis8VFI+PFREPjxiPmhlaWdodDwvYj48L1REPjxURD5IZWlnaHQgb2YgcmVjdGFuZ2xlIHRvIHNraXA8L1REPgorPC9UQUJMRT4KKzxQPgorTWVyZWx5IHNldHRpbmcgdGhlIHdpbmRvdyBkb2VzIG5vdCBlbmFibGUgY2FwdHVyaW5nLiBPdmVybGF5IGNhcHR1cmluZworKGkuZS4gUENJLVBDSSB0cmFuc2ZlciB0byB0aGUgZnJhbWUgYnVmZmVyIG9mIHRoZSB2aWRlbyBjYXJkKQoraXMgYWN0aXZhdGVkIGJ5IHBhc3NpbmcgdGhlIDxiPlZJRElPQ0NBUFRVUkU8L2I+IGlvY3RsIGEgdmFsdWUgb2YgMSwgYW5kCitkaXNhYmxlZCBieSBwYXNzaW5nIGl0IGEgdmFsdWUgb2YgMC4gCis8UD4KK1NvbWUgY2FwdHVyZSBkZXZpY2VzIGNhbiBjYXB0dXJlIGEgc3ViZmllbGQgb2YgdGhlIGltYWdlIHRoZXkgYWN0dWFsbHkgc2VlLgorVGhpcyBpcyBpbmRpY2F0ZWQgd2hlbiBWSURFT19UWVBFX1NVQkNBUFRVUkUgaXMgZGVmaW5lZC4KK1RoZSB2aWRlb19jYXB0dXJlIGRlc2NyaWJlcyB0aGUgdGltZSBhbmQgc3BlY2lhbCBzdWJmaWVsZHMgdG8gY2FwdHVyZS4KK1RoZSB2aWRlb19jYXB0dXJlIHN0cnVjdHVyZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpZWxkcy4KKzxQPgorPFRBQkxFPgorPFRSPjxURD48Yj54PC9iPjwvVEQ+PFREPlggY28tb3JkaW5hdGUgb2Ygc291cmNlIHJlY3RhbmdsZSB0byBncmFiPC9URD4KKzxUUj48VEQ+PGI+eTwvYj48L1REPjxURD5ZIGNvLW9yZGluYXRlIG9mIHNvdXJjZSByZWN0YW5nbGUgdG8gZ3JhYjwvVEQ+Cis8VFI+PFREPjxiPndpZHRoPC9iPjwvVEQ+PFREPldpZHRoIG9mIHNvdXJjZSByZWN0YW5nbGUgdG8gZ3JhYjwvVEQ+Cis8VFI+PFREPjxiPmhlaWdodDwvYj48L1REPjxURD5IZWlnaHQgb2Ygc291cmNlIHJlY3RhbmdsZSB0byBncmFiPC9URD4KKzxUUj48VEQ+PGI+ZGVjaW1hdGlvbjwvYj48L1REPjxURD5EZWNpbWF0aW9uIHRvIGFwcGx5PC9URD4KKzxUUj48VEQ+PGI+ZmxhZ3M8L2I+PC9URD48VEQ+RmxhZyBzZXR0aW5ncyBmb3IgZ3JhYmJpbmc8L1REPgorPC9UQUJMRT4KK1RoZSBhdmFpbGFibGUgZmxhZ3MgYXJlCis8UD4KKzxUQUJMRT4KKzxUUj48VEg+TmFtZTwvVEg+PFRIPkRlc2NyaXB0aW9uPC9USD4KKzxUUj48VEQ+PGI+VklERU9fQ0FQVFVSRV9PREQ8L2I+PFREPkNhcHR1cmUgb25seSBvZGQgZnJhbWVzPC9URD4KKzxUUj48VEQ+PGI+VklERU9fQ0FQVFVSRV9FVkVOPC9iPjxURD5DYXB0dXJlIG9ubHkgZXZlbiBmcmFtZXM8L1REPgorPC9UQUJMRT4KKzxQPgorPEgzPlZpZGVvIFNvdXJjZXM8L0gzPgorRWFjaCB2aWRlbzRsaW51eCB2aWRlbyBvciBhdWRpbyBkZXZpY2UgY2FwdHVyZXMgZnJvbSBvbmUgb3IgbW9yZSAKK3NvdXJjZSA8Yj5jaGFubmVsczwvYj4uIEVhY2ggY2hhbm5lbCBjYW4gYmUgcXVlcmllcyB3aXRoIHRoZSAKKzxiPlZESU9DR0NIQU48L2I+IGlvY3RsIGNhbGwuIEJlZm9yZSBpbnZva2luZyB0aGlzIGZ1bmN0aW9uIHRoZSBjYWxsZXIKK211c3Qgc2V0IHRoZSBjaGFubmVsIGZpZWxkIHRvIHRoZSBjaGFubmVsIHRoYXQgaXMgYmVpbmcgcXVlcmllZC4gT24gcmV0dXJuCit0aGUgPGI+c3RydWN0IHZpZGVvX2NoYW5uZWw8L2I+IGlzIGZpbGxlZCBpbiB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZQorbmF0dXJlIG9mIHRoZSBjaGFubmVsIGl0c2VsZi4KKzxQPgorVGhlIDxiPlZJRElPQ1NDSEFOPC9iPiBpb2N0bCB0YWtlcyBhbiBpbnRlZ2VyIGFyZ3VtZW50IGFuZCBzd2l0Y2hlcyB0aGUKK2NhcHR1cmUgdG8gdGhpcyBpbnB1dC4gSXQgaXMgbm90IGRlZmluZWQgd2hldGhlciBwYXJhbWV0ZXJzIHN1Y2ggYXMgY29sb3VyCitzZXR0aW5ncyBvciB0dW5pbmcgYXJlIG1haW50YWluZWQgYWNyb3NzIGEgY2hhbm5lbCBzd2l0Y2guIFRoZSBjYWxsZXIgc2hvdWxkCittYWludGFpbiBzZXR0aW5ncyBhcyBkZXNpcmVkIGZvciBlYWNoIGNoYW5uZWwuIChUaGlzIGlzIHJlYXNvbmFibGUgYXMgCitkaWZmZXJlbnQgdmlkZW8gaW5wdXRzIG1heSBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzKS4KKzxQPgorVGhlIDxiPnN0cnVjdCB2aWRlb19jaGFubmVsPC9iPiBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+Y2hhbm5lbDwvYj48L1REPjxURD5UaGUgY2hhbm5lbCBudW1iZXI8L1REPgorPFRSPjxURD48Yj5uYW1lPC9iPjwvVEQ+PFREPlRoZSBpbnB1dCBuYW1lIC0gcHJlZmVyYWJseSByZWZsZWN0aW5nIHRoZSBsYWJlbAorb24gdGhlIGNhcmQgaW5wdXQgaXRzZWxmPC9URD4KKzxUUj48VEQ+PGI+dHVuZXJzPC9iPjwvVEQ+PFREPk51bWJlciBvZiB0dW5lcnMgZm9yIHRoaXMgaW5wdXQ8L1REPgorPFRSPjxURD48Yj5mbGFnczwvYj48L1REPjxURD5Qcm9wZXJ0aWVzIHRoZSB0dW5lciBoYXM8L1REPgorPFRSPjxURD48Yj50eXBlPC9iPjwvVEQ+PFREPklucHV0IHR5cGUgKGlmIGtub3duKTwvVEQ+Cis8VFI+PFREPjxiPm5vcm08L2I+PFREPlRoZSBub3JtIGZvciB0aGlzIGNoYW5uZWw8L1REPgorPC9UQUJMRT4KKzxQPgorVGhlIGZsYWdzIGRlZmluZWQgYXJlCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+VklERU9fVkNfVFVORVI8L2I+PFREPkNoYW5uZWwgaGFzIHR1bmVycy48L1REPgorPFRSPjxURD48Yj5WSURFT19WQ19BVURJTzwvYj48VEQ+Q2hhbm5lbCBoYXMgYXVkaW8uPC9URD4KKzxUUj48VEQ+PGI+VklERU9fVkNfTk9STTwvYj48VEQ+Q2hhbm5lbCBoYXMgbm9ybSBzZXR0aW5nLjwvVEQ+Cis8L1RBQkxFPgorPFA+CitUaGUgdHlwZXMgZGVmaW5lZCBhcmUKKzxQPgorPFRBQkxFPgorPFRSPjxURD48Yj5WSURFT19UWVBFX1RWPC9iPjxURD5UaGUgaW5wdXQgaXMgYSBUViBpbnB1dC48L1REPgorPFRSPjxURD48Yj5WSURFT19UWVBFX0NBTUVSQTwvYj48VEQ+VGhlIGlucHV0IGlzIGEgY2FtZXJhLjwvVEQ+Cis8L1RBQkxFPgorPFA+Cis8SDM+SW1hZ2UgUHJvcGVydGllczwvSDM+CitUaGUgaW1hZ2UgcHJvcGVydGllcyBvZiB0aGUgcGljdHVyZSBjYW4gYmUgcXVlcmllZCB3aXRoIHRoZSA8Yj5WSURJT0NHUElDVDwvYj4KK2lvY3RsIHdoaWNoIGZpbGxzIGluIGEgPGI+c3RydWN0IHZpZGVvX3BpY3R1cmU8L2I+LiBUaGUgPGI+VklESU9DU1BJQ1Q8L2I+IAoraW9jdGwgYWxsb3dzIHZhbHVlcyB0byBiZSBjaGFuZ2VkLiBBbGwgdmFsdWVzIGV4Y2VwdCBmb3IgdGhlIHBhbGV0dGUgdHlwZQorYXJlIHNjYWxlZCBiZXR3ZWVuIDAtNjU1MzUuIAorPFA+CitUaGUgPGI+c3RydWN0IHZpZGVvX3BpY3R1cmU8L2I+IGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+YnJpZ2h0bmVzczwvYj48VEQ+UGljdHVyZSBicmlnaHRuZXNzPC9URD4KKzxUUj48VEQ+PGI+aHVlPC9iPjxURD5QaWN0dXJlIGh1ZSAoY29sb3VyIG9ubHkpPC9URD4KKzxUUj48VEQ+PGI+Y29sb3VyPC9iPjxURD5QaWN0dXJlIGNvbG91ciAoY29sb3VyIG9ubHkpPC9URD4KKzxUUj48VEQ+PGI+Y29udHJhc3Q8L2I+PFREPlBpY3R1cmUgY29udHJhc3Q8L1REPgorPFRSPjxURD48Yj53aGl0ZW5lc3M8L2I+PFREPlRoZSB3aGl0ZW5lc3MgKGdyZXlzY2FsZSBvbmx5KTwvVEQ+Cis8VFI+PFREPjxiPmRlcHRoPC9iPjxURD5UaGUgY2FwdHVyZSBkZXB0aCAobWF5IG5lZWQgdG8gbWF0Y2ggdGhlIGZyYW1lIGJ1ZmZlciBkZXB0aCk8L1REPgorPFRSPjxURD48Yj5wYWxldHRlPC9iPjxURD5SZXBvcnRzIHRoZSBwYWxldHRlIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgaW1hZ2U8L1REPgorPC9UQUJMRT4KKzxQPgorVGhlIGZvbGxvd2luZyBwYWxldHRlcyBhcmUgZGVmaW5lZAorPFA+Cis8VEFCTEU+Cis8VFI+PFREPjxiPlZJREVPX1BBTEVUVEVfR1JFWTwvYj48VEQ+TGluZWFyIGludGVuc2l0eSBncmV5IHNjYWxlICgyNTUgaXMgYnJpZ2h0ZXN0KS48L1REPgorPFRSPjxURD48Yj5WSURFT19QQUxFVFRFX0hJMjQwPC9iPjxURD5UaGUgQlQ4NDggOGJpdCBjb2xvdXIgY3ViZS48L1REPgorPFRSPjxURD48Yj5WSURFT19QQUxFVFRFX1JHQjU2NTwvYj48VEQ+UkdCNTY1IHBhY2tlZCBpbnRvIDE2IGJpdCB3b3Jkcy48L1REPgorPFRSPjxURD48Yj5WSURFT19QQUxFVFRFX1JHQjU1NTwvYj48VEQ+UkdWNTU1IHBhY2tlZCBpbnRvIDE2IGJpdCB3b3JkcywgdG9wIGJpdCB1bmRlZmluZWQuPC9URD4KKzxUUj48VEQ+PGI+VklERU9fUEFMRVRURV9SR0IyNDwvYj48VEQ+UkdCODg4IHBhY2tlZCBpbnRvIDI0Yml0IHdvcmRzLjwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX1BBTEVUVEVfUkdCMzI8L2I+PFREPlJHQjg4OCBwYWNrZWQgaW50byB0aGUgbG93IDMgYnl0ZXMgb2YgMzJiaXQgd29yZHMuIFRoZSB0b3AgOGJpdHMgYXJlIHVuZGVmaW5lZC48L1REPgorPFRSPjxURD48Yj5WSURFT19QQUxFVFRFX1lVVjQyMjwvYj48VEQ+VmlkZW8gc3R5bGUgWVVWNDIyIC0gOGJpdHMgcGFja2VkIDRiaXRzIFkgMmJpdHMgVSAyYml0cyBWPC9URD4KKzxUUj48VEQ+PGI+VklERU9fUEFMRVRURV9ZVVlWPC9iPjxURD5EZXNjcmliZSBtZTwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX1BBTEVUVEVfVVlWWTwvYj48VEQ+RGVzY3JpYmUgbWU8L1REPgorPFRSPjxURD48Yj5WSURFT19QQUxFVFRFX1lVVjQyMDwvYj48VEQ+WVVWNDIwIGNhcHR1cmU8L1REPgorPFRSPjxURD48Yj5WSURFT19QQUxFVFRFX1lVVjQxMTwvYj48VEQ+WVVWNDExIGNhcHR1cmU8L1REPgorPFRSPjxURD48Yj5WSURFT19QQUxFVFRFX1JBVzwvYj48VEQ+UkFXIGNhcHR1cmUgKEJUODQ4KTwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX1BBTEVUVEVfWVVWNDIyUDwvYj48VEQ+WVVWIDQ6MjoyIFBsYW5hcjwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX1BBTEVUVEVfWVVWNDExUDwvYj48VEQ+WVVWIDQ6MToxIFBsYW5hcjwvVEQ+Cis8L1RBQkxFPgorPFA+Cis8SDM+VHVuaW5nPC9IMz4KK0VhY2ggdmlkZW8gaW5wdXQgY2hhbm5lbCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSB0dW5lcnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBNYW55CitkZXZpY2VzIHdpbGwgbm90IGhhdmUgdHVuZXJzLiBUViBjYXJkcyBhbmQgcmFkaW8gY2FyZHMgd2lsbCBoYXZlIG9uZSBvciBtb3JlCit0dW5lcnMgYXR0YWNoZWQuCis8UD4KK1R1bmVycyBhcmUgZGVzY3JpYmVkIGJ5IGEgPGI+c3RydWN0IHZpZGVvX3R1bmVyPC9iPiB3aGljaCBjYW4gYmUgb2J0YWluZWQgYnkKK3RoZSA8Yj5WSURJT0NHVFVORVI8L2I+IGlvY3RsLiBGaWxsIGluIHRoZSB0dW5lciBudW1iZXIgaW4gdGhlIHN0cnVjdHVyZQordGhlbiBwYXNzIHRoZSBzdHJ1Y3R1cmUgdG8gdGhlIGlvY3RsIHRvIGhhdmUgdGhlIGRhdGEgZmlsbGVkIGluLiBUaGUgCit0dW5lciBjYW4gYmUgc3dpdGNoZWQgdXNpbmcgPGI+VklESU9DU1RVTkVSPC9iPiB3aGljaCB0YWtlcyBhbiBpbnRlZ2VyIGFyZ3VtZW50CitnaXZpbmcgdGhlIHR1bmVyIHRvIHVzZS4gQSBzdHJ1Y3QgdHVuZXIgaGFzIHRoZSBmb2xsb3dpbmcgZmllbGRzCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+dHVuZXI8L2I+PFREPk51bWJlciBvZiB0aGUgdHVuZXI8L1REPgorPFRSPjxURD48Yj5uYW1lPC9iPjxURD5DYW5vbmljYWwgbmFtZSBmb3IgdGhpcyB0dW5lciAoZWcgRk0vQU0vVFYpPC9URD4KKzxUUj48VEQ+PGI+cmFuZ2Vsb3c8L2I+PFREPkxvd2VzdCB0dW5hYmxlIGZyZXF1ZW5jeTwvVEQ+Cis8VFI+PFREPjxiPnJhbmdlaGlnaDwvYj48VEQ+SGlnaGVzdCB0dW5hYmxlIGZyZXF1ZW5jeTwvVEQ+Cis8VFI+PFREPjxiPmZsYWdzPC9iPjxURD5GbGFncyBkZXNjcmliaW5nIHRoZSB0dW5lcjwvVEQ+Cis8VFI+PFREPjxiPm1vZGU8L2I+PFREPlRoZSB2aWRlbyBzaWduYWwgbW9kZSBpZiByZWxldmFudDwvVEQ+Cis8VFI+PFREPjxiPnNpZ25hbDwvYj48VEQ+U2lnbmFsIHN0cmVuZ3RoIGlmIGtub3duIC0gYmV0d2VlbiAwLTY1NTM1PC9URD4KKzwvVEFCTEU+Cis8UD4KK1RoZSBmb2xsb3dpbmcgZmxhZ3MgZXhpc3QKKzxQPgorPFRBQkxFPgorPFRSPjxURD48Yj5WSURFT19UVU5FUl9QQUw8L2I+PFREPlBBTCB0dW5pbmcgaXMgc3VwcG9ydGVkPC9URD4KKzxUUj48VEQ+PGI+VklERU9fVFVORVJfTlRTQzwvYj48VEQ+TlRTQyB0dW5pbmcgaXMgc3VwcG9ydGVkPC9URD4KKzxUUj48VEQ+PGI+VklERU9fVFVORVJfU0VDQU08L2I+PFREPlNFQ0FNIHR1bmluZyBpcyBzdXBwb3J0ZWQ8L1REPgorPFRSPjxURD48Yj5WSURFT19UVU5FUl9MT1c8L2I+PFREPkZyZXF1ZW5jeSBpcyBpbiBhIGxvd2VyIHJhbmdlPC9URD4KKzxUUj48VEQ+PGI+VklERU9fVFVORVJfTk9STTwvYj48VEQ+VGhlIG5vcm0gZm9yIHRoaXMgdHVuZXIgaXMgc2V0dGFibGU8L1REPgorPFRSPjxURD48Yj5WSURFT19UVU5FUl9TVEVSRU9fT048L2I+PFREPlRoZSB0dW5lciBpcyBzZWVpbmcgc3RlcmVvIGF1ZGlvPC9URD4KKzxUUj48VEQ+PGI+VklERU9fVFVORVJfUkRTX09OPC9iPjxURD5UaGUgdHVuZXIgaXMgc2VlaW5nIGEgUkRTIGRhdGFzdHJlYW08L1REPgorPFRSPjxURD48Yj5WSURFT19UVU5FUl9NQlNfT048L2I+PFREPlRoZSB0dW5lciBpcyBzZWVpbmcgYSBNQlMgZGF0YXN0cmVhbTwvVEQ+Cis8L1RBQkxFPgorPFA+CitUaGUgZm9sbG93aW5nIG1vZGVzIGFyZSBkZWZpbmVkCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+VklERU9fTU9ERV9QQUw8L2I+PFREPlRoZSB0dW5lciBpcyBpbiBQQUwgbW9kZTwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX01PREVfTlRTQzwvYj48VEQ+VGhlIHR1bmVyIGlzIGluIE5UU0MgbW9kZTwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX01PREVfU0VDQU08L2I+PFREPlRoZSB0dW5lciBpcyBpbiBTRUNBTSBtb2RlPC9URD4KKzxUUj48VEQ+PGI+VklERU9fTU9ERV9BVVRPPC9iPjxURD5UaGUgdHVuZXIgYXV0byBzd2l0Y2hlcywgb3IgbW9kZSBkb2VzIG5vdCBhcHBseTwvVEQ+Cis8L1RBQkxFPgorPFA+CitUdW5pbmcgZnJlcXVlbmNpZXMgYXJlIGFuIHVuc2lnbmVkIDMyYml0IHZhbHVlIGluIDEvMTZ0aCBNSHogb3IgaWYgdGhlCis8Yj5WSURFT19UVU5FUl9MT1c8L2I+IGZsYWcgaXMgc2V0IHRoZXkgYXJlIGluIDEvMTZ0aCBLSHouIFRoZSBjdXJyZW50CitmcmVxdWVuY3kgaXMgb2J0YWluZWQgYXMgYW4gdW5zaWduZWQgbG9uZyB2aWEgdGhlIDxiPlZJRElPQ0dGUkVRPC9iPiBpb2N0bCBhbmQKK3NldCBieSB0aGUgPGI+VklESU9DU0ZSRVE8L2I+IGlvY3RsLgorPFA+Cis8SDM+QXVkaW88L0gzPgorVFYgYW5kIFJhZGlvIGRldmljZXMgaGF2ZSBvbmUgb3IgbW9yZSBhdWRpbyBpbnB1dHMgdGhhdCBtYXkgYmUgc2VsZWN0ZWQuIAorVGhlIGF1ZGlvIHByb3BlcnRpZXMgYXJlIHF1ZXJpZWQgYnkgcGFzc2luZyBhIDxiPnN0cnVjdCB2aWRlb19hdWRpbzwvYj4gdG8gPGI+VklESU9DR0FVRElPPC9iPiBpb2N0bC4gVGhlCis8Yj5WSURJT0NTQVVESU88L2I+IGlvY3RsIHNldHMgYXVkaW8gcHJvcGVydGllcy4KKzxQPgorVGhlIHN0cnVjdHVyZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpZWxkcworPFA+Cis8VEFCTEU+Cis8VFI+PFREPjxiPmF1ZGlvPC9iPjxURD5UaGUgY2hhbm5lbCBudW1iZXI8L1REPgorPFRSPjxURD48Yj52b2x1bWU8L2I+PFREPlRoZSB2b2x1bWUgbGV2ZWw8L1REPgorPFRSPjxURD48Yj5iYXNzPC9iPjxURD5UaGUgYmFzcyBsZXZlbDwvVEQ+Cis8VFI+PFREPjxiPnRyZWJsZTwvYj48VEQ+VGhlIHRyZWJsZSBsZXZlbDwvVEQ+Cis8VFI+PFREPjxiPmZsYWdzPC9iPjxURD5GbGFncyBkZXNjcmliaW5nIHRoZSBhdWRpbyBjaGFubmVsPC9URD4KKzxUUj48VEQ+PGI+bmFtZTwvYj48VEQ+Q2Fub25pY2FsIG5hbWUgZm9yIHRoZSBhdWRpbyBpbnB1dDwvVEQ+Cis8VFI+PFREPjxiPm1vZGU8L2I+PFREPlRoZSBtb2RlIHRoZSBhdWRpbyBpbnB1dCBpcyBpbjwvVEQ+Cis8VFI+PFREPjxiPmJhbGFuY2U8L2I+PFREPlRoZSBsZWZ0L3JpZ2h0IGJhbGFuY2U8L1REPgorPFRSPjxURD48Yj5zdGVwPC9iPjxURD5BY3R1YWwgc3RlcCB1c2VkIGJ5IHRoZSBoYXJkd2FyZTwvVEQ+Cis8L1RBQkxFPgorPFA+CitUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSBkZWZpbmVkCis8UD4KKzxUQUJMRT4KKzxUUj48VEQ+PGI+VklERU9fQVVESU9fTVVURTwvYj48VEQ+VGhlIGF1ZGlvIGlzIG11dGVkPC9URD4KKzxUUj48VEQ+PGI+VklERU9fQVVESU9fTVVUQUJMRTwvYj48VEQ+QXVkaW8gbXV0aW5nIGlzIHN1cHBvcnRlZDwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX0FVRElPX1ZPTFVNRTwvYj48VEQ+VGhlIHZvbHVtZSBpcyBjb250cm9sbGFibGU8L1REPgorPFRSPjxURD48Yj5WSURFT19BVURJT19CQVNTPC9iPjxURD5UaGUgYmFzcyBpcyBjb250cm9sbGFibGU8L1REPgorPFRSPjxURD48Yj5WSURFT19BVURJT19UUkVCTEU8L2I+PFREPlRoZSB0cmVibGUgaXMgY29udHJvbGxhYmxlPC9URD4KKzxUUj48VEQ+PGI+VklERU9fQVVESU9fQkFMQU5DRTwvYj48VEQ+VGhlIGJhbGFuY2UgaXMgY29udHJvbGxhYmxlPC9URD4KKzwvVEFCTEU+Cis8UD4KK1RoZSBmb2xsb3dpbmcgZGVjb2RpbmcgbW9kZXMgYXJlIGRlZmluZWQKKzxQPgorPFRBQkxFPgorPFRSPjxURD48Yj5WSURFT19TT1VORF9NT05PPC9iPjxURD5Nb25vIHNpZ25hbDwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX1NPVU5EX1NURVJFTzwvYj48VEQ+U3RlcmVvIHNpZ25hbCAoTklDQU0gZm9yIFRWKTwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX1NPVU5EX0xBTkcxPC9iPjxURD5FdXJvcGVhbiBUViBhbHRlcm5hdGUgbGFuZ3VhZ2UgMTwvVEQ+Cis8VFI+PFREPjxiPlZJREVPX1NPVU5EX0xBTkcyPC9iPjxURD5FdXJvcGVhbiBUViBhbHRlcm5hdGUgbGFuZ3VhZ2UgMjwvVEQ+Cis8L1RBQkxFPgorPFA+Cis8SDM+UmVhZGluZyBJbWFnZXM8L0gzPgorRWFjaCBjYWxsIHRvIHRoZSA8Yj5yZWFkPC9iPiBzeXNjYWxsIHJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIGltYWdlCitmcm9tIHRoZSBkZXZpY2UuIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gc2V0IGZvcm1hdCBhbmQgc2l6ZSAodXNpbmcKK3RoZSBWSURJT0NTUElDVCBhbmQgVklESU9DU1dJTiBpb2N0bHMpIGFuZCB0aGVuIHRvIHBhc3MgYSBzdWl0YWJsZQorc2l6ZSBidWZmZXIgYW5kIGxlbmd0aCB0byB0aGUgZnVuY3Rpb24uIE5vdCBhbGwgZGV2aWNlcyB3aWxsIHN1cHBvcnQKK3JlYWQgb3BlcmF0aW9ucy4KKzxQPgorQSBzZWNvbmQgd2F5IHRvIGhhbmRsZSBpbWFnZSBjYXB0dXJlIGlzIHZpYSB0aGUgbW1hcCBpbnRlcmZhY2UgaWYgc3VwcG9ydGVkLgorVG8gdXNlIHRoZSBtbWFwIGludGVyZmFjZSBhIHVzZXIgZmlyc3Qgc2V0cyB0aGUgZGVzaXJlZCBpbWFnZSBzaXplIGFuZCBkZXB0aAorcHJvcGVydGllcy4gTmV4dCB0aGUgVklESU9DR01CVUYgaW9jdGwgaXMgaXNzdWVkLiBUaGlzIHJlcG9ydHMgdGhlIHNpemUKK29mIGJ1ZmZlciB0byBtbWFwIGFuZCB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgYnVmZmVyIGZvciBlYWNoIGZyYW1lLiBUaGUKK251bWJlciBvZiBmcmFtZXMgc3VwcG9ydGVkIGlzIGRldmljZSBkZXBlbmRlbnQgYW5kIG1heSBvbmx5IGJlIG9uZS4gCis8UD4KK1RoZSB2aWRlb19tYnVmIHN0cnVjdHVyZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpZWxkcworPFA+Cis8VEFCTEU+Cis8VFI+PFREPjxiPnNpemU8L2I+PFREPlRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbWFwPC9URD4KKzxUUj48VEQ+PGI+ZnJhbWVzPC9iPjxURD5UaGUgbnVtYmVyIG9mIGZyYW1lczwvVEQ+Cis8VFI+PFREPjxiPm9mZnNldHM8L2I+PFREPlRoZSBvZmZzZXQgb2YgZWFjaCBmcmFtZTwvVEQ+Cis8L1RBQkxFPgorPFA+CitPbmNlIHRoZSBtbWFwIGhhcyBiZWVuIG1hZGUgdGhlIFZJRElPQ01DQVBUVVJFIGlvY3RsIHN0YXJ0cyB0aGUKK2NhcHR1cmUgdG8gYSBmcmFtZSB1c2luZyB0aGUgZm9ybWF0IGFuZCBpbWFnZSBzaXplIHNwZWNpZmllZCBpbiB0aGUKK3ZpZGVvX21tYXAgKHdoaWNoIHNob3VsZCBtYXRjaCBvciBiZSBiZWxvdyB0aGUgaW5pdGlhbCBxdWVyeSBzaXplKS4KK1doZW4gdGhlIFZJRElPQ01DQVBUVVJFIGlvY3RsIHJldHVybnMgdGhlIGZyYW1lIGlzIDxlbT5ub3Q8L2VtPgorY2FwdHVyZWQgeWV0LCB0aGUgZHJpdmVyIGp1c3QgaW5zdHJ1Y3RlZCB0aGUgaGFyZHdhcmUgdG8gc3RhcnQgdGhlCitjYXB0dXJlLiAgVGhlIGFwcGxpY2F0aW9uIGhhcyB0byB1c2UgdGhlIFZJRElPQ1NZTkMgaW9jdGwgdG8gd2FpdAordW50aWwgdGhlIGNhcHR1cmUgb2YgYSBmcmFtZSBpcyBmaW5pc2hlZC4gIFZJRElPQ1NZTkMgdGFrZXMgdGhlIGZyYW1lCitudW1iZXIgeW91IHdhbnQgdG8gd2FpdCBmb3IgYXMgYXJndW1lbnQuCis8cD4KK0l0IGlzIGFsbG93ZWQgdG8gY2FsbCBWSURJT0NNQ0FQVFVSRSBtdWx0aXBsZSB0aW1lcyAod2l0aCBkaWZmZXJlbnQKK2ZyYW1lIG51bWJlcnMgaW4gdmlkZW9fbW1hcC0+ZnJhbWUgb2YgY291cnNlKSBhbmQgdGh1cyBoYXZlIG11bHRpcGxlCitvdXRzdGFuZGluZyBjYXB0dXJlIHJlcXVlc3RzLiAgQSBzaW1wbGUgd2F5IGRvIHRvIGRvdWJsZS1idWZmZXJpbmcKK3VzaW5nIHRoaXMgZmVhdHVyZSBsb29rcyBsaWtlIHRoaXM6Cis8cHJlPgorLyogc2V0dXAgZXZlcnl0aGluZyAqLworVklESU9DTUNBUFRVUkUoMCkKK3doaWxlICh3aGF0ZXZlcikgeworICAgVklESU9DTUNBUFRVUkUoMSkKKyAgIFZJRElPQ1NZTkMoMCkKKyAgIC8qIHByb2Nlc3MgZnJhbWUgMCB3aGlsZSB0aGUgaGFyZHdhcmUgY2FwdHVyZXMgZnJhbWUgMSAqLworICAgVklESU9DTUNBUFRVUkUoMCkKKyAgIFZJRElPQ1NZTkMoMSkKKyAgIC8qIHByb2Nlc3MgZnJhbWUgMSB3aGlsZSB0aGUgaGFyZHdhcmUgY2FwdHVyZXMgZnJhbWUgMCAqLworfQorPC9wcmU+CitOb3RlIHRoYXQgeW91IGFyZSA8ZW0+bm90PC9lbT4gbGltaXRlZCB0byBvbmx5IHR3byBmcmFtZXMuICBUaGUgQVBJCithbGxvd3MgdXAgdG8gMzIgZnJhbWVzLCB0aGUgVklESU9DR01CVUYgaW9jdGwgcmV0dXJucyB0aGUgbnVtYmVyIG9mCitmcmFtZXMgdGhlIGRyaXZlciBncmFudGVkLiAgVGh1cyBpdCBpcyBwb3NzaWJsZSB0byBidWlsZCBkZWVwZXIgcXVldWVzCit0byBhdm9pZCBsb29zaW5nIGZyYW1lcyBvbiBsb2FkIHBlYWtzLgorPHA+CitXaGlsZSBjYXB0dXJpbmcgdG8gbWVtb3J5IHRoZSBkcml2ZXIgd2lsbCBtYWtlIGEgImJlc3QgZWZmb3J0IiBhdHRlbXB0Cit0byBjYXB0dXJlIHRvIHNjcmVlbiBhcyB3ZWxsIGlmIHJlcXVlc3RlZC4gVGhpcyBub3JtYWxseSBtZWFucyBhbGwKK2ZyYW1lcyB0aGF0ICJtaXNzIiBtZW1vcnkgbWFwcGVkIGNhcHR1cmUgd2lsbCBnbyB0byB0aGUgZGlzcGxheS4KKzxQPgorQSBmaW5hbCBpb2N0bCBleGlzdHMgdG8gYWxsb3cgYSBkZXZpY2UgdG8gb2J0YWluIHJlbGF0ZWQgZGV2aWNlcyBpZiBhCitkcml2ZXIgaGFzIG11bHRpcGxlIGNvbXBvbmVudHMgKGZvciBleGFtcGxlIHZpZGVvMCBtYXkgbm90IGJlIGFzc29jaWF0ZWQKK3dpdGggdmJpMCB3aGljaCB3b3VsZCBjYXVzZSBhbiBpbnRlcmNhc3QgZGlzcGxheSBwcm9ncmFtIHRvIG1ha2UgYSBiYWQKK21pc3Rha2UpLiBUaGUgVklESU9DR1VOSVQgaW9jdGwgcmVwb3J0cyB0aGUgdW5pdCBudW1iZXJzIG9mIHRoZSBhc3NvY2lhdGVkCitkZXZpY2VzIGlmIGFueSBleGlzdC4gVGhlIHZpZGVvX3VuaXQgc3RydWN0dXJlIGhhcyB0aGUgZm9sbG93aW5nIGZpZWxkcy4KKzxQPgorPFRBQkxFPgorPFRSPjxURD48Yj52aWRlbzwvYj48VEQ+VmlkZW8gY2FwdHVyZSBkZXZpY2U8L1REPgorPFRSPjxURD48Yj52Ymk8L2I+PFREPlZCSSBjYXB0dXJlIGRldmljZTwvVEQ+Cis8VFI+PFREPjxiPnJhZGlvPC9iPjxURD5SYWRpbyBkZXZpY2U8L1REPgorPFRSPjxURD48Yj5hdWRpbzwvYj48VEQ+QXVkaW8gbWl4ZXI8L1REPgorPFRSPjxURD48Yj50ZWxldGV4dDwvYj48VEQ+VGVsZXRleHQgZGV2aWNlPC9URD4KKzwvVEFCTEU+Cis8UD4KKzxIMz5SRFMgRGF0YXN0cmVhbXM8L0gzPgorRm9yIHJhZGlvIGRldmljZXMgdGhhdCBzdXBwb3J0IGl0LCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaXZlIFJhZGlvIERhdGEKK1N5c3RlbSAoUkRTKSBkYXRhIGJ5IG1lYW5zIG9mIGEgcmVhZCgpIG9uIHRoZSBkZXZpY2UuICBUaGUgZGF0YSBpcyBwYWNrZWQgaW4KK2dyb3VwcyBvZiB0aHJlZSwgYXMgZm9sbG93czoKKzxUQUJMRT4KKzxUUj48VEQ+Rmlyc3QgT2N0ZXQ8L1REPjxURD5MZWFzdCBTaWduaWZpY2FudCBCeXRlIG9mIFJEUyBCbG9jazwvVEQ+PC9UUj4KKzxUUj48VEQ+U2Vjb25kIE9jdGV0PC9URD48VEQ+TW9zdCBTaWduaWZpY2FudCBCeXRlIG9mIFJEUyBCbG9jaworPFRSPjxURD5UaGlyZCBPY3RldDwvVEQ+PFREPkJpdCA3OjwvVEQ+PFREPkVycm9yIGJpdC4gIEluZGljYXRlcyB0aGF0CithbiB1bmNvcnJlY3RhYmxlIGVycm9yIG9jY3VycmVkIGR1cmluZyByZWNlcHRpb24gb2YgdGhpcyBibG9jay48L1REPjwvVFI+Cis8VFI+PFREPiZuYnNwOzwvVEQ+PFREPkJpdCA2OjwvVEQ+PFREPkNvcnJlY3RlZCBiaXQuICBJbmRpY2F0ZXMgdGhhdCAgCithbiBlcnJvciB3YXMgY29ycmVjdGVkIGZvciB0aGlzIGRhdGEgYmxvY2suPC9URD48L1RSPgorPFRSPjxURD4mbmJzcDs8L1REPjxURD5CaXRzIDUtMzo8L1REPjxURD5SZWNlaXZlZCBPZmZzZXQuICBJbmRpY2F0ZXMgdGhlICAKK29mZnNldCByZWNlaXZlZCBieSB0aGUgc3luYyBzeXN0ZW0uPC9URD48L1RSPgorPFRSPjxURD4mbmJzcDs8L1REPjxURD5CaXRzIDItMDo8L1REPjxURD5PZmZzZXQgTmFtZS4gIEluZGljYXRlcyB0aGUgIAorb2Zmc2V0IGFwcGxpZWQgdG8gdGhpcyBkYXRhLjwvVEQ+PC9UUj4KKzwvVEFCTEU+Cis8L0JPRFk+Cis8L0hUTUw+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULmJ0dHYgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULmJ0dHYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ2NzYxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuYnR0dgpAQCAtMCwwICsxLDEyMSBAQAorY2FyZD0wIC0gICoqKiBVTktOT1dOL0dFTkVSSUMgKioqIAorY2FyZD0xIC0gTUlSTyBQQ1RWCitjYXJkPTIgLSBIYXVwcGF1Z2UgKGJ0ODQ4KQorY2FyZD0zIC0gU1RCLCBHYXRld2F5IFAvTiA2MDAwNjk5IChidDg0OCkKK2NhcmQ9NCAtIEludGVsIENyZWF0ZSBhbmQgU2hhcmUgUENJLyBTbWFydCBWaWRlbyBSZWNvcmRlciBJSUkKK2NhcmQ9NSAtIERpYW1vbmQgRFRWMjAwMAorY2FyZD02IC0gQVZlck1lZGlhIFRWUGhvbmUKK2NhcmQ9NyAtIE1BVFJJWC1WaXNpb24gTVYtRGVsdGEKK2NhcmQ9OCAtIExpZmV2aWV3IEZseVZpZGVvIElJIChCdDg0OCkgTFIyNiAvIE1BWEkgVFYgVmlkZW8gUENJMiBMUjI2CitjYXJkPTkgLSBJTVMvSVhtaWNybyBUdXJib1RWCitjYXJkPTEwIC0gSGF1cHBhdWdlIChidDg3OCkKK2NhcmQ9MTEgLSBNSVJPIFBDVFYgcHJvCitjYXJkPTEyIC0gQURTIFRlY2hub2xvZ2llcyBDaGFubmVsIFN1cmZlciBUViAoYnQ4NDgpCitjYXJkPTEzIC0gQVZlck1lZGlhIFRWQ2FwdHVyZSA5OAorY2FyZD0xNCAtIEFpbXNsYWIgVmlkZW8gSGlnaHdheSBYdHJlbWUgKFZIWCkKK2NhcmQ9MTUgLSBab2x0cml4IFRWLU1heAorY2FyZD0xNiAtIFByb2xpbmsgUGl4ZWx2aWV3IFBsYXlUViAoYnQ4NzgpCitjYXJkPTE3IC0gTGVhZHRlayBXaW5WaWV3IDYwMQorY2FyZD0xOCAtIEFWRUMgSW50ZXJjYXB0dXJlCitjYXJkPTE5IC0gTGlmZXZpZXcgRmx5VmlkZW8gSUkgRVogL0ZseUtpdCBMUjM4IEJ0ODQ4IChjYXB0dXJlIG9ubHkpCitjYXJkPTIwIC0gQ0VJIFJhZmZsZXMgQ2FyZAorY2FyZD0yMSAtIExpZmV2aWV3IEZseVZpZGVvIDk4LyBMdWNreSBTdGFyIEltYWdlIFdvcmxkIENvbmZlcmVuY2VUViBMUjUwCitjYXJkPTIyIC0gQXNrZXkgQ1BIMDUwLyBQaG9lYmUgVHYgTWFzdGVyICsgRk0KK2NhcmQ9MjMgLSBNb2R1bGFyIFRlY2hub2xvZ3kgTU0yMDEvTU0yMDIvTU0yMDUvTU0yMTAvTU0yMTUgUENUViwgYnQ4NzgKK2NhcmQ9MjQgLSBBc2tleSBDUEgwNVgvMDZYIChidDg3OCkgW21hbnkgdmVuZG9yc10KK2NhcmQ9MjUgLSBUZXJyYXRlYyBUZXJyYVRWKyBWZXJzaW9uIDEuMCAoQnQ4NDgpLyBUZXJyYSBUVmFsdWUgVmVyc2lvbiAxLjAvIFZvYmlzIFRWLUJvb3N0YXIKK2NhcmQ9MjYgLSBIYXVwcGF1Z2UgV2luQ2FtIG5ld2VyIChidDg3OCkKK2NhcmQ9MjcgLSBMaWZldmlldyBGbHlWaWRlbyA5OC8gTUFYSSBUViBWaWRlbyBQQ0kyIExSNTAKK2NhcmQ9MjggLSBUZXJyYXRlYyBUZXJyYVRWKyBWZXJzaW9uIDEuMSAoYnQ4NzgpCitjYXJkPTI5IC0gSW1hZ2VuYXRpb24gUFhDMjAwCitjYXJkPTMwIC0gTGlmZXZpZXcgRmx5VmlkZW8gOTggTFI1MAorY2FyZD0zMSAtIEZvcm1hYyBpUHJvVFYsIEZvcm1hYyBQcm9UViBJIChidDg0OCkKK2NhcmQ9MzIgLSBJbnRlbCBDcmVhdGUgYW5kIFNoYXJlIFBDSS8gU21hcnQgVmlkZW8gUmVjb3JkZXIgSUlJCitjYXJkPTMzIC0gVGVycmF0ZWMgVGVycmFUVmFsdWUgVmVyc2lvbiBCdDg3OAorY2FyZD0zNCAtIExlYWR0ZWsgV2luRmFzdCAyMDAwLyBXaW5GYXN0IDIwMDAgWFAKK2NhcmQ9MzUgLSBMaWZldmlldyBGbHlWaWRlbyA5OCBMUjUwIC8gQ2hyb25vcyBWaWRlbyBTaHV0dGxlIElJCitjYXJkPTM2IC0gTGlmZXZpZXcgRmx5VmlkZW8gOThGTSBMUjUwIC8gVHlwaG9vbiBUVmlldyBUVi9GTSBUdW5lcgorY2FyZD0zNyAtIFByb2xpbmsgUGl4ZWxWaWV3IFBsYXlUViBwcm8KK2NhcmQ9MzggLSBBc2tleSBDUEgwNlggVFZpZXc5OQorY2FyZD0zOSAtIFBpbm5hY2xlIFBDVFYgU3R1ZGlvL1JhdmUKK2NhcmQ9NDAgLSBTVEIgVFYgUENJIEZNLCBHYXRld2F5IFAvTiA2MDAwNzA0IChidDg3OCksIDNEZnggVm9vZG9vVFYgMTAwCitjYXJkPTQxIC0gQVZlck1lZGlhIFRWUGhvbmUgOTgKK2NhcmQ9NDIgLSBQcm9WaWRlbyBQVjk1MQorY2FyZD00MyAtIExpdHRsZSBPbkFpciBUVgorY2FyZD00NCAtIFNpZ21hIFRWSUktRk0KK2NhcmQ9NDUgLSBNQVRSSVgtVmlzaW9uIE1WLURlbHRhIDIKK2NhcmQ9NDYgLSBab2x0cml4IEdlbmllIFRWL0ZNCitjYXJkPTQ3IC0gVGVycmF0ZWMgVFYvUmFkaW8rCitjYXJkPTQ4IC0gQXNrZXkgQ1BIMDN4LyBEeW5hbGluayBNYWdpYyBUVmlldworY2FyZD00OSAtIElPREFUQSBHVi1CQ1RWMy9QQ0kKK2NhcmQ9NTAgLSBQcm9saW5rIFBWLUJUODc4UCs0RSAvIFBpeGVsVmlldyBQbGF5VFYgUEFLIC8gTGVuY28gTVhUVi05NTc4IENQCitjYXJkPTUxIC0gRWFnbGUgV2lyZWxlc3MgQ2Fwcmljb3JuMiAoYnQ4NzhBKQorY2FyZD01MiAtIFBpbm5hY2xlIFBDVFYgU3R1ZGlvIFBybworY2FyZD01MyAtIFR5cGhvb24gVFZpZXcgUkRTICsgRk0gU3RlcmVvIC8gS05DMSBUViBTdGF0aW9uIFJEUworY2FyZD01NCAtIExpZmV2aWV3IEZseVZpZGVvIDIwMDAgL0ZseVZpZGVvIEEyLyBMaWZldGVjIExUIDk0MTUgVFYgW0xSOTBdCitjYXJkPTU1IC0gQXNrZXkgQ1BIMDMxLyBCRVNUQlVZIEVhc3kgVFYKK2NhcmQ9NTYgLSBMaWZldmlldyBGbHlWaWRlbyA5OEZNIExSNTAKK2NhcmQ9NTcgLSBHcmFuZFRlYyAnR3JhbmQgVmlkZW8gQ2FwdHVyZScgKEJ0ODQ4KQorY2FyZD01OCAtIEFza2V5IENQSDA2MC8gUGhvZWJlIFRWIE1hc3RlciBPbmx5IChObyBGTSkKK2NhcmQ9NTkgLSBBc2tleSBDUEgwM3ggVFYgQ2FwdHVyZXIKK2NhcmQ9NjAgLSBNb2R1bGFyIFRlY2hub2xvZ3kgTU0xMDBQQ1RWCitjYXJkPTYxIC0gQUcgRWxlY3Ryb25pY3MgR01WMQorY2FyZD02MiAtIEFza2V5IENQSDA2MS8gQkVTVEJVWSBFYXN5IFRWIChidDg3OCkKK2NhcmQ9NjMgLSBBVEkgVFYtV29uZGVyCitjYXJkPTY0IC0gQVRJIFRWLVdvbmRlciBWRQorY2FyZD02NSAtIExpZmV2aWV3IEZseVZpZGVvIDIwMDBTIExSOTAKK2NhcmQ9NjYgLSBUZXJyYXRlYyBUVmFsdWVSYWRpbworY2FyZD02NyAtIElPREFUQSBHVi1CQ1RWNC9QQ0kKK2NhcmQ9NjggLSAzRGZ4IFZvb2Rvb1RWIEZNIChFdXJvKSwgVm9vZG9vVFYgMjAwIChVU0EpCitjYXJkPTY5IC0gQWN0aXZlIEltYWdpbmcgQUlNTVMKK2NhcmQ9NzAgLSBQcm9saW5rIFBpeGVsdmlldyBQVi1CVDg3OFArIChSZXYuNEMsOEUpCitjYXJkPTcxIC0gTGlmZXZpZXcgRmx5VmlkZW8gOThFWiAoY2FwdHVyZSBvbmx5KSBMUjUxCitjYXJkPTcyIC0gUHJvbGluayBQaXhlbHZpZXcgUFYtQlQ4NzhQKzlCIChQbGF5VFYgUHJvIHJldi45QiBGTStOSUNBTSkKK2NhcmQ9NzMgLSBTZW5zb3JheSAzMTEKK2NhcmQ9NzQgLSBSZW1vdGVWaXNpb24gTVggKFJWNjA1KQorY2FyZD03NSAtIFBvd2VyY29sb3IgTVRWODc4LyBNVFY4NzhSLyBNVFY4NzhGCitjYXJkPTc2IC0gQ2Fub3B1cyBXaW5EVlIgUENJIChDT01QQVEgUHJlc2FyaW8gMzUyNEpQLCA1MTEySlApCitjYXJkPTc3IC0gR3JhbmRUZWMgTXVsdGkgQ2FwdHVyZSBDYXJkIChCdDg3OCkKK2NhcmQ9NzggLSBKZXR3YXkgVFYvQ2FwdHVyZSBKVy1UVjg3OC1GQkssIEt3b3JsZCBLVy1UVjg3OFJGCitjYXJkPTc5IC0gRFNQIERlc2lnbiBUQ1ZJREVPCitjYXJkPTgwIC0gSGF1cHBhdWdlIFdpblRWIFBWUgorY2FyZD04MSAtIElPREFUQSBHVi1CQ1RWNS9QQ0kKK2NhcmQ9ODIgLSBPc3ByZXkgMTAwLzE1MCAoODc4KQorY2FyZD04MyAtIE9zcHJleSAxMDAvMTUwICg4NDgpCitjYXJkPTg0IC0gT3NwcmV5IDEwMSAoODQ4KQorY2FyZD04NSAtIE9zcHJleSAxMDEvMTUxCitjYXJkPTg2IC0gT3NwcmV5IDEwMS8xNTEgdy8gc3ZpZAorY2FyZD04NyAtIE9zcHJleSAyMDAvMjAxLzI1MC8yNTEKK2NhcmQ9ODggLSBPc3ByZXkgMjAwLzI1MAorY2FyZD04OSAtIE9zcHJleSAyMTAvMjIwCitjYXJkPTkwIC0gT3NwcmV5IDUwMAorY2FyZD05MSAtIE9zcHJleSA1NDAKK2NhcmQ9OTIgLSBPc3ByZXkgMjAwMAorY2FyZD05MyAtIElEUyBFYWdsZQorY2FyZD05NCAtIFBpbm5hY2xlIFBDVFYgU2F0CitjYXJkPTk1IC0gRm9ybWFjIFByb1RWIElJIChidDg3OCkKK2NhcmQ9OTYgLSBNYWNoVFYKK2NhcmQ9OTcgLSBFdXJlc3lzIFBpY29sbworY2FyZD05OCAtIFByb1ZpZGVvIFBWMTUwCitjYXJkPTk5IC0gQUQtVFZLNTAzCitjYXJkPTEwMCAtIEhlcmN1bGVzIFNtYXJ0IFRWIFN0ZXJlbworY2FyZD0xMDEgLSBQYWNlIFRWICYgUmFkaW8gQ2FyZAorY2FyZD0xMDIgLSBJVkMtMjAwCitjYXJkPTEwMyAtIEdyYW5kIFgtR3VhcmQgLyBUcnVzdCA4MTRQQ0kKK2NhcmQ9MTA0IC0gTmVidWxhIEVsZWN0cm9uaWNzIERpZ2lUVgorY2FyZD0xMDUgLSBQcm9WaWRlbyBQVjE0MworY2FyZD0xMDYgLSBQSFlURUMgVkQtMDA5LVgxIE1pbmlESU4gKGJ0ODc4KQorY2FyZD0xMDcgLSBQSFlURUMgVkQtMDA5LVgxIENvbWJpIChidDg3OCkKK2NhcmQ9MTA4IC0gUEhZVEVDIFZELTAwOSBNaW5pRElOIChidDg3OCkKK2NhcmQ9MTA5IC0gUEhZVEVDIFZELTAwOSBDb21iaSAoYnQ4NzgpCitjYXJkPTExMCAtIElWQy0xMDAKK2NhcmQ9MTExIC0gSVZDLTEyMEcKK2NhcmQ9MTEyIC0gcGNIRFRWIEhELTIwMDAgVFYKK2NhcmQ9MTEzIC0gVHdpbmhhbiBEU1QgKyBjbG9uZXMKK2NhcmQ9MTE0IC0gV2luZmFzdCBWQzEwMAorY2FyZD0xMTUgLSBUZXBwcm8gVEVWLTU2MC9JbnRlclZpc2lvbiBJVi01NjAKK2NhcmQ9MTE2IC0gU0lNVVMgR1ZDMTEwMAorY2FyZD0xMTcgLSBOR1MgTkdTVFYrCitjYXJkPTExOCAtIExNTEJUNAorY2FyZD0xMTkgLSBUZWtyYW0gTTIwNSBQUk8KK2NhcmQ9MTIwIC0gQ29uY2VwdHJvbmljIENPTlRWRk1pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnNhYTcxMzQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnNhYTcxMzQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZjODJmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1Quc2FhNzEzNApAQCAtMCwwICsxLDM1IEBACisgIDAgLT4gVU5LTk9XTi9HRU5FUklDICAgICAgICAgICAgICAgICAgICAgICAgIAorICAxIC0+IFByb3RldXMgUHJvIFtwaGlsaXBzIHJlZmVyZW5jZSBkZXNpZ25dICAgWzExMzE6MjAwMSwxMTMxOjIwMDFdCisgIDIgLT4gTGlmZVZpZXcgRmx5VklERU8zMDAwICAgICAgICAgICAgICAgICAgICBbNTE2ODowMTM4LDRlNDI6MDEzOF0KKyAgMyAtPiBMaWZlVmlldyBGbHlWSURFTzIwMDAgICAgICAgICAgICAgICAgICAgIFs1MTY4OjAxMzhdCisgIDQgLT4gRU1QUkVTUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTEzMTo2NzUyXQorICA1IC0+IFNLTmV0IE1vbnN0ZXIgVFYgICAgICAgICAgICAgICAgICAgICAgICAgWzExMzE6NGU4NV0KKyAgNiAtPiBUZXZpb24gTUQgOTcxNyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIDcgLT4gS05DIE9uZSBUVi1TdGF0aW9uIFJEUyAvIFR5cGhvb24gVFYgVHVuZXIgUkRTIFsxMTMxOmZlMDEsMTg5NDpmZTAxXQorICA4IC0+IFRlcnJhdGVjIENpbmVyZ3kgNDAwIFRWICAgICAgICAgICAgICAgICAgWzE1M0I6MTE0Ml0KKyAgOSAtPiBNZWRpb24gNTA0NAorIDEwIC0+IEt3b3JsZC9LdXJvdXRvU2hpa291IFNBQTcxMzAtVFZQQ0kKKyAxMSAtPiBUZXJyYXRlYyBDaW5lcmd5IDYwMCBUViAgICAgICAgICAgICAgICAgIFsxNTNCOjExNDNdCisgMTIgLT4gTWVkaW9uIDcxMzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTZiZTowMDAzXQorIDEzIC0+IFR5cGhvb24gVFYrUmFkaW8gOTAwMzEKKyAxNCAtPiBFTFNBIEVYLVZJU0lPTiAzMDBUViAgICAgICAgICAgICAgICAgICAgIFsxMDQ4OjIyNmJdCisgMTUgLT4gRUxTQSBFWC1WSVNJT04gNTAwVFYgICAgICAgICAgICAgICAgICAgICBbMTA0ODoyMjZiXQorIDE2IC0+IEFTVVMgVFYtRk0gNzEzNCAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwNDM6NDg0MiwxMDQzOjQ4MzAsMTA0Mzo0ODQwXQorIDE3IC0+IEFPUEVOIFZBMTAwMCBQT1dFUiAgICAgICAgICAgICAgICAgICAgICAgWzExMzE6NzEzM10KKyAxOCAtPiBCTUsgTVBFWCBObyBUdW5lcgorIDE5IC0+IENvbXBybyBWaWRlb01hdGUgVFYgICAgICAgICAgICAgICAgICAgICAgWzE4NWI6YzEwMF0KKyAyMCAtPiBNYXRyb3ggQ3Jvbm9zUGx1cyAgICAgICAgICAgICAgICAgICAgICAgIFsxMDJCOjQ4ZDBdCisgMjEgLT4gMTBNT09OUyBQQ0kgVFYgQ0FQVFVSRSBDQVJEICAgICAgICAgICAgICBbMTEzMToyMDAxXQorIDIyIC0+IE1lZGlvbiAyODE5LyBBdmVyTWVkaWEgTTE1NiAgICAgICAgICAgICAgWzE0NjE6YTcwYiwxNDYxOjIxMTVdCisgMjMgLT4gQk1LIE1QRVggVHVuZXIKKyAyNCAtPiBLTkMgT25lIFRWLVN0YXRpb24gRFZSICAgICAgICAgICAgICAgICAgIFsxODk0OmEwMDZdCisgMjUgLT4gQVNVUyBUVi1GTSA3MTMzICAgICAgICAgICAgICAgICAgICAgICAgICBbMTA0Mzo0ODQzXQorIDI2IC0+IFBpbm5hY2xlIFBDVFYgU3RlcmVvIChzYWE3MTM0KSAgICAgICAgICAgWzExYmQ6MDAyYl0KKyAyNyAtPiBNYW5saSBNdWNoVFYgTS1UVjAwMgorIDI4IC0+IE1hbmxpIE11Y2hUViBNLVRWMDAxCisgMjkgLT4gTmFnYXNlIFNhbmd5byBUcmFuc0dlYXIgMzAwMFRWICAgICAgICAgICBbMTQ2MTowNTBjXQorIDMwIC0+IEVsaXRlZ3JvdXAgRUNTIFRWUDNYUCBGTTEyMTYgVHVuZXIgQ2FyZChQQUwtQkcsRk0pICBbMTAxOTo0Y2I0XQorIDMxIC0+IEVsaXRlZ3JvdXAgRUNTIFRWUDNYUCBGTTEyMzYgVHVuZXIgQ2FyZCAoTlRTQyxGTSkgWzEwMTk6NGNiNV0KKyAzMiAtPiBBVkFDUyBTbWFydFRWCisgMzMgLT4gQVZlck1lZGlhIERWRCBFWk1ha2VyICAgICAgICAgICAgICAgICAgICBbMTQ2MToxMGZmXQorIDM0IC0+IExpZmVWaWV3IEZseVRWIFBsYXRpbnVtMzMgbWluaSAgICAgICAgICAgWzUxNjg6MDIxMl0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QudHVuZXIgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnR1bmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YmFmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnR1bmVyCkBAIC0wLDAgKzEsNDYgQEAKK3R1bmVyPTAgLSBUZW1pYyBQQUwgKDQwMDIgRkg1KQordHVuZXI9MSAtIFBoaWxpcHMgUEFMX0kgKEZJMTI0NiBhbmQgY29tcGF0aWJsZXMpCit0dW5lcj0yIC0gUGhpbGlwcyBOVFNDIChGSTEyMzYsRk0xMjM2IGFuZCBjb21wYXRpYmxlcykKK3R1bmVyPTMgLSBQaGlsaXBzIChTRUNBTStQQUxfQkcpIChGSTEyMTZNRiwgRk0xMjE2TUYsIEZSMTIxNk1GKQordHVuZXI9NCAtIE5vVHVuZXIKK3R1bmVyPTUgLSBQaGlsaXBzIFBBTF9CRyAoRkkxMjE2IGFuZCBjb21wYXRpYmxlcykKK3R1bmVyPTYgLSBUZW1pYyBOVFNDICg0MDMyIEZZNSkKK3R1bmVyPTcgLSBUZW1pYyBQQUxfSSAoNDA2MiBGWTUpCit0dW5lcj04IC0gVGVtaWMgTlRTQyAoNDAzNiBGWTUpCit0dW5lcj05IC0gQWxwcyBIU0JIMQordHVuZXI9MTAgLSBBbHBzIFRTQkUxCit0dW5lcj0xMSAtIEFscHMgVFNCQjUKK3R1bmVyPTEyIC0gQWxwcyBUU0JFNQordHVuZXI9MTMgLSBBbHBzIFRTQkM1Cit0dW5lcj0xNCAtIFRlbWljIFBBTF9CRyAoNDAwNkZINSkKK3R1bmVyPTE1IC0gQWxwcyBUU0NINgordHVuZXI9MTYgLSBUZW1pYyBQQUxfREsgKDQwMTYgRlk1KQordHVuZXI9MTcgLSBQaGlsaXBzIE5UU0NfTSAoTUsyKQordHVuZXI9MTggLSBUZW1pYyBQQUxfSSAoNDA2NiBGWTUpCit0dW5lcj0xOSAtIFRlbWljIFBBTCogYXV0byAoNDAwNiBGTjUpCit0dW5lcj0yMCAtIFRlbWljIFBBTF9CRyAoNDAwOSBGUjUpIG9yIFBBTF9JICg0MDY5IEZSNSkKK3R1bmVyPTIxIC0gVGVtaWMgTlRTQyAoNDAzOSBGUjUpCit0dW5lcj0yMiAtIFRlbWljIFBBTC9TRUNBTSBtdWx0aSAoNDA0NiBGTTUpCit0dW5lcj0yMyAtIFBoaWxpcHMgUEFMX0RLIChGSTEyNTYgYW5kIGNvbXBhdGlibGVzKQordHVuZXI9MjQgLSBQaGlsaXBzIFBBTC9TRUNBTSBtdWx0aSAoRlExMjE2TUUpCit0dW5lcj0yNSAtIExHIFBBTF9JK0ZNIChUQVBDLUkwMDFEKQordHVuZXI9MjYgLSBMRyBQQUxfSSAoVEFQQy1JNzAxRCkKK3R1bmVyPTI3IC0gTEcgTlRTQytGTSAoVFBJOE5TUjAxRikKK3R1bmVyPTI4IC0gTEcgUEFMX0JHK0ZNIChUUEk4UFNCMDFEKQordHVuZXI9MjkgLSBMRyBQQUxfQkcgKFRQSThQU0IxMUQpCit0dW5lcj0zMCAtIFRlbWljIFBBTCogYXV0byArIEZNICg0MDA5IEZONSkKK3R1bmVyPTMxIC0gU0hBUlAgTlRTQ19KUCAoMlU1SkY1NTQwKQordHVuZXI9MzIgLSBTYW1zdW5nIFBBTCBUQ1BNOTA5MVBEMjcKK3R1bmVyPTMzIC0gTVQyMHh4IHVuaXZlcnNhbAordHVuZXI9MzQgLSBUZW1pYyBQQUxfQkcgKDQxMDYgRkg1KQordHVuZXI9MzUgLSBUZW1pYyBQQUxfREsvU0VDQU1fTCAoNDAxMiBGWTUpCit0dW5lcj0zNiAtIFRlbWljIE5UU0MgKDQxMzYgRlk1KQordHVuZXI9MzcgLSBMRyBQQUwgKG5ld2VyIFRBUEMgc2VyaWVzKQordHVuZXI9MzggLSBQaGlsaXBzIFBBTC9TRUNBTSBtdWx0aSAoRk0xMjE2TUUgTUszKQordHVuZXI9MzkgLSBMRyBOVFNDIChuZXdlciBUQVBDIHNlcmllcykKK3R1bmVyPTQwIC0gSElUQUNISSBWNy1KMTgwQVQKK3R1bmVyPTQxIC0gUGhpbGlwcyBQQUxfTUsgKEZJMTIxNiBNSykKK3R1bmVyPTQyIC0gUGhpbGlwcyAxMjM2RCBBVFNDL05UU0MgZGF1bCBpbgordHVuZXI9NDMgLSBQaGlsaXBzIE5UU0MgTUszIChGTTEyMzZNSzMgb3IgRk0xMjM2L0YpCit0dW5lcj00NCAtIFBoaWxpcHMgNCBpbiAxIChBVEkgVFYgV29uZGVyIFByby9Db25leGFudCkKK3R1bmVyPTQ1IC0gTWljcm90dW5lIDQwNDkgRk01CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NRY2FtLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ1FjYW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MTVlMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NRY2FtLnR4dApAQCAtMCwwICsxLDQxMiBAQAorYy1xY2FtIC0gQ29ubmVjdGl4IENvbG9yIFF1aWNrQ2FtIHZpZGVvNGxpbnV4IGtlcm5lbCBkcml2ZXIKKworQ29weXJpZ2h0IChDKSAxOTk5ICBEYXZlIEZvcnJlc3QgIDxkcmY1bkB2aXJnaW5pYS5lZHU+CisgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VkIHVuZGVyIEdOVSBHUEwuCisKKzE5OTktMTItMDggRGF2ZSBGb3JyZXN0LCB3cml0dGVuIHdpdGgga2VybmVsIHZlcnNpb24gMi4yLjEyIGluIG1pbmQKKworCitUYWJsZSBvZiBDb250ZW50cworCisxLjAgSW50cm9kdWN0aW9uCisyLjAgQ29tcGlsYXRpb24sIEluc3RhbGxhdGlvbiwgYW5kIENvbmZpZ3VyYXRpb24KKzMuMCBUcm91Ymxlc2hvb3RpbmcKKzQuMCBGdXR1cmUgV29yayAvIGN1cnJlbnQgd29yayBhcm91bmRzCis5LjAgU2FtcGxlIFByb2dyYW0sIHY0bGdyYWIKKzEwLjAgT3RoZXIgSW5mb3JtYXRpb24KKworCisxLjAgSW50cm9kdWN0aW9uCisKKyAgVGhlIGZpbGUgLi4vZHJpdmVycy9jaGFyL2MtcWNhbS5jIGlzIGEgZGV2aWNlIGRyaXZlciBmb3IgdGhlCitMb2dpdGVjaCAobmVlIENvbm5lY3RpeCkgcGFyYWxsZWwgcG9ydCBpbnRlcmZhY2UgY29sb3IgQ0NEIGNhbWVyYS4KK1RoaXMgaXMgYSBmYWlybHkgaW5leHBlbnNpdmUgZGV2aWNlIGZvciBjYXB0dXJpbmcgaW1hZ2VzLiAgTG9naXRlY2gKK2RvZXMgbm90IGN1cnJlbnRseSBwcm92aWRlIGluZm9ybWF0aW9uIGZvciBkZXZlbG9wZXJzLCBidXQgbWFueSBwZW9wbGUKK2hhdmUgZW5naW5lZXJlZCBzZXZlcmFsIHNvbHV0aW9ucyBmb3Igbm9uLU1pY3Jvc29mdCB1c2Ugb2YgdGhlIENvbG9yCitRdWlja2NhbS4KKworMS4xIE1vdGl2YXRpb24KKworICBJIHNwZW50IGEgbnVtYmVyIG9mIGhvdXJzIHRyeWluZyB0byBnZXQgbXkgY2FtZXJhIHRvIHdvcmssIGFuZCBJCitob3BlIHRoaXMgZG9jdW1lbnQgc2F2ZXMgeW91IHNvbWUgdGltZS4gIE15IGNhbWVyYSB3aWxsIG5vdCB3b3JrIHdpdGgKK3RoZSAyLjIuMTMga2VybmVsIGFzIGRpc3RyaWJ1dGVkLCBidXQgd2l0aCBhIGZldyBwYXRjaGVzIHRvIHRoZQorbW9kdWxlLCBJIHdhcyBhYmxlIHRvIGdyYWIgc29tZSBmcmFtZXMuIFNlZSA0LjAsIEZ1dHVyZSBXb3JrLgorCisKKworMi4wIENvbXBpbGF0aW9uLCBJbnN0YWxsYXRpb24sIGFuZCBDb25maWd1cmF0aW9uCisKKyAgVGhlIGMtcWNhbSBkZXBlbmRzIG9uIHBhcmFsbGVsIHBvcnQgc3VwcG9ydCwgdmlkZW80bGludXgsIGFuZCB0aGUKK0NvbG9yIFF1aWNrY2FtLiAgSXQgaXMgYWxzbyBuaWNlIHRvIGhhdmUgdGhlIHBhcmFsbGVsIHBvcnQgcmVhZGJhY2sKK3N1cHBvcnQgZW5hYmxlZC4gSSBlbmFibGVkIHRoZXNlIGFzIG1vZHVsZXMgZHVyaW5nIHRoZSBrZXJuZWwKK2NvbmZpZ3VyYXRpb24uICBUaGUgYXBwcm9wcmlhdGUgZmxhZ3MgYXJlOgorCisgICAgQ09ORklHX1BSSU5URVIgICAgICAgTSAgICBmb3IgbHAubywgcGFycG9ydC5vIHBhcnBvcnRfcGMubyBtb2R1bGVzCisgICAgQ09ORklHX1BOUF9QQVJQT1JUICAgTSBmb3IgYXV0b3Byb2JlLm8gSUVFRTEyODQgcmVhZGJhY2sgbW9kdWxlCisgICAgQ09ORklHX1BSSU5URVJfUkVBREJBQ0sgTSBmb3IgcGFycG9ydF9wcm9iZS5vIElFRUUxMjg0IHJlYWRiYWNrIG1vZHVsZQorICAgIENPTkZJR19WSURFT19ERVYgICAgIE0gICAgZm9yIHZpZGVvZGV2Lm8gdmlkZW80bGludXggbW9kdWxlCisgICAgQ09ORklHX1ZJREVPX0NRQ0FNICAgTSAgICBmb3IgYy1xY2FtLm8gIENvbG9yIFF1aWNrY2FtIG1vZHVsZSAKKworICBXaXRoIHRoZXNlIGZsYWdzLCB0aGUga2VybmVsIHNob3VsZCBjb21waWxlIGFuZCBpbnN0YWxsIHRoZSBtb2R1bGVzLgorVG8gcmVjb3JkIGFuZCBtb25pdG9yIHRoZSBjb21waWxhdGlvbiwgSSB1c2U6CisKKyAobWFrZSB6bGlsbyA7IFwKKyAgbWFrZSBtb2R1bGVzOyBcCisgIG1ha2UgbW9kdWxlc19pbnN0YWxsIDsgCisgIGRlcG1vZCAtYSApICY+bG9nICYKKyBsZXNzIGxvZyAgIyB0aGVuIGEgY2FwaXRhbCAnRicgdG8gd2F0Y2ggdGhlIHByb2dyZXNzCisgIAorQnV0IHRoYXQgaXMgbXkgcGVyc29uYWwgcHJlZmVyZW5jZS4KKworMi4yIENvbmZpZ3VyYXRpb24KKyAKKyAgVGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZXMgbW9kdWxlIGNvbmZpZ3VyYXRpb24gYW5kIGRldmljZQorY29uZmlndXJhdGlvbi4gIEkgbGlrZSBrbW9kIG9yIGtlcm5lbGQgcHJvY2VzcyB3aXRoIHRoZQorL2V0Yy9tb2Rwcm9iZS5jb25mIGZpbGUgc28gdGhlIG1vZHVsZXMgY2FuIGF1dG9tYXRpY2FsbHkgbG9hZC91bmxvYWQgYXMKK3RoZXkgYXJlIHVzZWQuICBUaGUgdmlkZW8gZGV2aWNlcyBjb3VsZCBhbHJlYWR5IGV4aXN0LCBiZSBnZW5lcmF0ZWQKK3VzaW5nIE1BS0VERVYsIG9yIG5lZWQgdG8gYmUgY3JlYXRlZC4gIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGV0YWlsCit0aGVzZSBwcm9jZWR1cmVzLgorCisKKzIuMSBNb2R1bGUgQ29uZmlndXJhdGlvbiAgCisKKyAgVXNpbmcgbW9kdWxlcyByZXF1aXJlcyBhIGJpdCBvZiB3b3JrIHRvIGluc3RhbGwgYW5kIHBhc3MgdGhlCitwYXJhbWV0ZXJzLiAgVW5kZXJzdGFuZCB0aGF0IGVudHJpZXMgaW4gL2V0Yy9tb2Rwcm9iZS5jb25mIG9mOgorCisgICBhbGlhcyBwYXJwb3J0X2xvd2xldmVsIHBhcnBvcnRfcGMKKyAgIG9wdGlvbnMgcGFycG9ydF9wYyBpbz0weDM3OCBpcnE9bm9uZQorICAgYWxpYXMgY2hhci1tYWpvci04MSB2aWRlb2RldgorICAgYWxpYXMgY2hhci1tYWpvci04MS0wIGMtcWNhbQorCit3aWxsIGNhdXNlIHRoZSBrbW9kL21vZHByb2JlIHRvIGRvIGNlcnRhaW4gdGhpbmdzLiAgSWYgeW91IGFyZQordXNpbmcga21vZCwgdGhlbiBhIHJlcXVlc3QgZm9yIGEgJ2NoYXItbWFqb3ItODEtMCcgd2lsbCBjYXVzZQordGhlICdjLXFjYW0nIG1vZHVsZSB0byBsb2FkLiAgSWYgeW91IGhhdmUgb3RoZXIgdmlkZW8gc291cmNlcyB3aXRoCittb2R1bGVzLCB5b3UgbWlnaHQgd2FudCB0byBhc3NpZ24gdGhlIGRpZmZlcmVudCBtaW5vciBudW1iZXJzIHRvCitkaWZmZXJlbnQgbW9kdWxlcy4KKworMi4yIERldmljZSBDb25maWd1cmF0aW9uCisKKyAgQXQgdGhpcyBwb2ludCwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZGV2aWNlIGZpbGVzIGV4aXN0LgorVmlkZW80bGludXggdXNlZCB0aGUgL2Rldi92aWRlbyogZmlsZXMsIGFuZCB3ZSB3YW50IHRvIGF0dGFjaCB0aGUKK1F1aWNrY2FtIHRvIG9uZSBvZiB0aGVzZS4KKworICAgbHMgLWxhZCAvZGV2L3ZpZGVvKiAgIyBzaG91bGQgcHJvZHVjZSBhIGxpc3Qgb2YgdGhlIHZpZGVvIGRldmljZXMKKworSWYgdGhlIHZpZGVvIGRldmljZXMgZG8gbm90IGV4aXN0LCB5b3UgY2FuIGNyZWF0ZSB0aGVtIHdpdGg6CisKKyAgc3UKKyAgY2QgL2RldgorICBmb3IgaWkgaW4gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiA7IGRvCisgICAgbWtub2QgdmlkZW8kaWkgYyA4MSAkaWkgICAjIGNoYXItbWFqb3ItODEtWzAtMTZdCisgICAgY2hvd24gcm9vdC5yb290IHZpZGVvJGlpICAjIG93bmVkIGJ5IHJvb3QKKyAgICBjaG1vZCA2MDAgdmlkZW8kaWkgICAgICAgICMgcmVhZC93cml0YWJsZSBieSByb290IG9ubHkKKyAgZG9uZQorCisgIExvdHMgb2YgcGVvcGxlIGNvbm5lY3QgdmlkZW8wIHRvIHZpZGVvIGFuZCBidHR2LCBidXQgeW91IG1pZ2h0IHdhbnQKK3lvdXIgYy1xY2FtIHRvIG1lYW4gc29tZXRoaW5nIG1vcmU6CisKKyAgIGxuIC1zIHZpZGVvMCBjLXFjYW0gICMgbWFrZSAvZGV2L2MtcWNhbSBhIHdvcmtpbmcgZmlsZQorICAgbG4gLXMgYy1xY2FtIHZpZGVvICAgIyBtYWtlIC9kZXYvYy1xY2FtIHlvdXIgZGVmYXVsdCB2aWRlbyBzb3VyY2UKKworICBCdXQgdGhlc2UgYXJlIGNvbnZlbmllbmNlcy4gIFRoZSBpbXBvcnRhbnQgcGFydCBpcyB0byBtYWtlIHRoZSBwcm9wZXIKK3NwZWNpYWwgY2hhcmFjdGVyIGZpbGVzIHdpdGggdGhlIHJpZ2h0IG1ham9yIGFuZCBtaW5vciBudW1iZXJzLiAgQWxsCitvZiB0aGUgc3BlY2lhbCBkZXZpY2UgZmlsZXMgYXJlIGxpc3RlZCBpbiAuLi9kZXZpY2VzLnR4dC4gIElmIHlvdQord291bGQgbGlrZSB0aGUgYy1xY2FtIHJlYWRhYmxlIGJ5IG5vbi1yb290IHVzZXJzLCB5b3Ugd2lsbCBuZWVkIHRvCitjaGFuZ2UgdGhlIHBlcm1pc3Npb25zLgorCiszLjAgVHJvdWJsZXNob290aW5nCisKKyAgSWYgdGhlIHNhbXBsZSBwcm9ncmFtIGJlbG93LCB2NGxncmFiLCBnaXZlcyB5b3Ugb3V0cHV0IHRoZW4KK2V2ZXJ5dGhpbmcgaXMgd29ya2luZy4KKworICAgIHY0bGdyYWIgfCB3YyAjIHNob3VsZCBnaXZlIHlvdSBhIGNvdW50IG9mIGNoYXJhY3RlcnMKKworICBPdGhlcndpc2UsIHlvdSBoYXZlIHNvbWUgcHJvYmxlbS4KKworICBUaGUgYy1xY2FtIGlzIElFRUUxMjg0IGNvbXBhdGlibGUsIHNvIGlmIHlvdSBhcmUgdXNpbmcgdGhlIHByb2MgZmlsZQorc3lzdGVtIChDT05GSUdfUFJPQ19GUyksIHRoZSBwYXJhbGxlbCBwcmludGVyIHN1cHBvcnQKKyhDT05GSUdfUFJJTlRFUiksIHRoZSBJRUVFIDEyODQgc3lzdGVtLChDT05GSUdfUFJJTlRFUl9SRUFEQkFDSyksIHlvdQorc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBzb21lIGlkZW50aWZpY2F0aW9uIGZyb20geW91ciBxdWlja2NhbSB3aXRoCisKKyAgICAgICAgIG1vZHByb2JlIC12IHBhcnBvcnQKKyAgICAgICAgIG1vZHByb2JlIC12IHBhcnBvcnRfcHJvYmUKKyAgICAgICAgIGNhdCAvcHJvYy9wYXJwb3J0L1BPUlROVU1CRVIvYXV0b3Byb2JlCitSZXR1cm5zOgorICBDTEFTUzpNRURJQTsKKyAgTU9ERUw6Q29sb3IgUXVpY2tDYW0gMi4wOworICBNQU5VRkFDVFVSRVI6Q29ubmVjdGl4OworCisgIEEgZ29vZCByZXNwb25zZSB0byB0aGlzIGluZGljYXRlcyB0aGF0IHlvdXIgY29sb3IgcXVpY2tjYW0gaXMgYWxpdmUKK2FuZCB3ZWxsLiAgQSBjb21tb24gcHJvYmxlbSBpcyB0aGF0IHRoZSBjdXJyZW50IGRyaXZlciBkb2VzIG5vdAorcmVsaWFibHkgZGV0ZWN0IGEgYy1xY2FtLCBldmVuIHRob3VnaCBvbmUgaXMgYXR0YWNoZWQuICBJbiB0aGlzIGNhc2UsCisKKyAgICAgbW9kcHJvYmUgLXYgYy1xY2FtICAgICAKK29yCisgICAgIGluc21vZCAtdiBjLXFjYW0KKworICBSZXR1cm5zIGEgbWVzc2FnZSBzYXlpbmcgIkRldmljZSBvciByZXNvdXJjZSBidXN5IiAgRGV2ZWxvcG1lbnQgaXMKK2N1cnJlbnRseSB1bmRlcndheSwgYnV0IGEgd29ya2Fyb3VuZCBpcyB0byBwYXRjaCB0aGUgbW9kdWxlIHRvIHNraXAKK3RoZSBkZXRlY3Rpb24gY29kZSBhbmQgYXR0YWNoIHRvIGEgZGVmaW5lZCBwb3J0LiAgQ2hlY2sgdGhlCit2aWRlbzRsaW51eCBtYWlsaW5nIGxpc3QgYW5kIGFyY2hpdmUgZm9yIG1vcmUgY3VycmVudCBpbmZvcm1hdGlvbi4KKworMy4xIENoZWNrbGlzdDoKKworICBDYW4geW91IGdldCBhbiBpbWFnZT8KKyAgICAgICAgICAgIHY0bGdyYWIgPnFjYW0ucHBtIDsgd2MgcWNhbS5wcG0gOyB4diBxY2FtLnBwbQorCisgIElzIGEgd29ya2luZyBjLXFjYW0gY29ubmVjdGVkIHRvIHRoZSBwb3J0PyAKKyAgICAgICAgICAgIGdyZXAgXiAvcHJvYy9wYXJwb3J0Lz8vYXV0b3Byb2JlCisKKyAgRG8gdGhlIC9kZXYvdmlkZW8qIGZpbGVzIGV4aXN0PyAgCisgICAgICAgICAgICBscyAtbGFkIC9kZXYvdmlkZW8KKworICBJcyB0aGUgYy1xY2FtIG1vZHVsZSBsb2FkZWQ/ICAgICAKKyAgICAgICAgICAgIG1vZHByb2JlIC12IGMtcWNhbSA7IGxzbW9kCisKKyAgRG9lcyB0aGUgY2FtZXJhIHdvcmsgd2l0aCBhbHRlcm5hdGUgcHJvZ3JhbXM/IGNxY2FtLCBldGM/CisKKworCisKKzQuMCBGdXR1cmUgV29yayAvIGN1cnJlbnQgd29ya2Fyb3VuZHMKKworICBJdCBpcyBob3BlZCB0aGF0IHRoaXMgc2VjdGlvbiB3aWxsIHNvb24gYmVjb21lIG9ic29sZXRlLCBidXQgaWYgaXQKK2lzbid0LCB5b3UgbWlnaHQgdHJ5IHBhdGNoaW5nIHRoZSBjLXFjYW0gbW9kdWxlIHRvIGFkZCBhIHBhcnBvcnQ9eHh4CitvcHRpb24gYXMgaW4gdGhlIGJ3LXFjYW0gbW9kdWxlIHNvIHlvdSBjYW4gc3BlY2lmeSB0aGUgcGFyYWxsZWwgcG9ydDoKKworICAgICAgIGluc21vZCAtdiBjLXFjYW0gcGFycG9ydD0wICAKKworQW5kIGJ5cGFzcyB0aGUgZGV0ZWN0aW9uIGNvZGUsIHNlZSAuLi8uLi9kcml2ZXJzL2NoYXIvYy1xY2FtLmMgYW5kCitsb29rIGZvciB0aGUgJ3FjX2RldGVjdCcgY29kZSBhbmQgY2FsbC4KKworICBOb3RlIHRoYXQgdGhlcmUgaXMgd29yayBpbiBwcm9ncmVzcyB0byBjaGFuZ2UgdGhlIHZpZGVvNGxpbnV4IEFQSSwKK3RoaXMgd29yayBpcyBkb2N1bWVudGVkIGF0IHRoZSB2aWRlbzRsaW51eDIgc2l0ZSBsaXN0ZWQgYmVsb3cuCisKKworOS4wIC0tLSBBIHNhbXBsZSBwcm9ncmFtIHVzaW5nIHY0bGdyYWJiZXIsIAorCitUaGlzIHByb2dyYW0gaXMgYSBzaW1wbGUgaW1hZ2UgZ3JhYmJlciB0aGF0IHdpbGwgY29weSBhIGZyYW1lIGZyb20gdGhlCitmaXJzdCB2aWRlbyBkZXZpY2UsIC9kZXYvdmlkZW8wIHRvIHN0YW5kYXJkIG91dHB1dCBpbiBwb3J0YWJsZSBwaXhtYXAKK2Zvcm1hdCAoLnBwbSkgIFVzaW5nIHRoaXMgbGlrZTogJ3Y0bGdyYWIgfCBjb252ZXJ0IC0gYy1xY2FtLmpwZycKK3Byb2R1Y2VkIHRoaXMgcGljdHVyZSBvZiBtZSBhdCAKKyAgICBodHRwOi8vbXVnLnN5cy52aXJnaW5pYS5lZHUvfmRyZjVuL2V4dHJhcy9jLXFjYW0uanBnCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tIDg8IC0tLS0tLS0tLS0tLS0tLS0gODwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyogU2ltcGxlIFZpZGVvNExpbnV4IGltYWdlIGdyYWJiZXIuICovCisvKgorICoJVmlkZW80TGludXggRHJpdmVyIFRlc3QvRXhhbXBsZSBGcmFtZWdyYWJiaW5nIFByb2dyYW0KKyAqCisgKglDb21waWxlIHdpdGg6CisgKgkJZ2NjIC1zIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgdjRsZ3JhYi5jIC1vIHY0bGdyYWIKKyAqICAgICAgVXNlIGFzOgorICogICAgICAgICAgICAgIHY0bGdyYWIgPmltYWdlLnBwbQorICoKKyAqCUNvcHlyaWdodCAoQykgMTk5OC0wNS0wMywgUGhpbCBCbHVuZGVsbCA8cGhpbGJAZ251Lm9yZz4gIAorICogICAgICBDb3BpZWQgZnJvbSBodHRwOi8vd3d3LnRhemVuZGEuZGVtb24uY28udWsvcGhpbC92Z3JhYmJlci5jIAorICogICAgICB3aXRoIG1pbm9yIG1vZGlmaWNhdGlvbnMgKERhdmUgRm9ycmVzdCwgZHJmNW5AdmlyZ2luaWEuZWR1KS4KKyAqCisgKi8KKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb2Rldi5oPgorCisjZGVmaW5lIEZJTEUgIi9kZXYvdmlkZW8wIgorCisvKiBTdG9sZSB0aGlzIGZyb20gdHZzZXQuYyAqLworCisjZGVmaW5lIFJFQURfVklERU9fUElYRUwoYnVmLCBmb3JtYXQsIGRlcHRoLCByLCBnLCBiKSAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN3aXRjaCAoZm9ybWF0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgY2FzZSBWSURFT19QQUxFVFRFX0dSRVk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlcHRoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIpID0gKGcpID0gKGIpID0gKCpidWYrKyA8PCA4KTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIpID0gKGcpID0gKGIpID0gICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKCh1bnNpZ25lZCBzaG9ydCAqKSBidWYpOyAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYgKz0gMjsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjYXNlIFZJREVPX1BBTEVUVEVfUkdCNTY1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHRtcCA9ICoodW5zaWduZWQgc2hvcnQgKilidWY7ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChyKSA9IHRtcCYweEY4MDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChnKSA9ICh0bXA8PDUpJjB4RkMwMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiKSA9ICh0bXA8PDExKSYweEY4MDA7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjYXNlIFZJREVPX1BBTEVUVEVfUkdCNTU1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChyKSA9IChidWZbMF0mMHhGOCk8PDg7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChnKSA9ICgoYnVmWzBdIDw8IDUgfCBidWZbMV0gPj4gMykmMHhGOCk8PDg7ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiKSA9ICgoYnVmWzFdIDw8IDIgKSAmIDB4RjgpPDw4OyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjYXNlIFZJREVPX1BBTEVUVEVfUkdCMjQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChyKSA9IGJ1ZlswXSA8PCA4OyAoZykgPSBidWZbMV0gPDwgODsgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiKSA9IGJ1ZlsyXSA8PCA4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZvcm1hdCAlZCBub3QgeWV0IHN1cHBvcnRlZFxuIiwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCitpbnQgZ2V0X2JyaWdodG5lc3NfYWRqKHVuc2lnbmVkIGNoYXIgKmltYWdlLCBsb25nIHNpemUsIGludCAqYnJpZ2h0bmVzcykgeworICBsb25nIGksIHRvdCA9IDA7CisgIGZvciAoaT0wO2k8c2l6ZSozO2krKykKKyAgICB0b3QgKz0gaW1hZ2VbaV07CisgICpicmlnaHRuZXNzID0gKDEyOCAtIHRvdC8oc2l6ZSozKSkvMzsKKyAgcmV0dXJuICEoKHRvdC8oc2l6ZSozKSkgPj0gMTI2ICYmICh0b3QvKHNpemUqMykpIDw9IDEzMCk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCit7CisgIGludCBmZCA9IG9wZW4oRklMRSwgT19SRE9OTFkpLCBmOworICBzdHJ1Y3QgdmlkZW9fY2FwYWJpbGl0eSBjYXA7CisgIHN0cnVjdCB2aWRlb193aW5kb3cgd2luOworICBzdHJ1Y3QgdmlkZW9fcGljdHVyZSB2cGljOworCisgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgKnNyYzsKKyAgaW50IGJwcCA9IDI0LCByLCBnLCBiOworICB1bnNpZ25lZCBpbnQgaSwgc3JjX2RlcHRoOworCisgIGlmIChmZCA8IDApIHsKKyAgICBwZXJyb3IoRklMRSk7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIGlmIChpb2N0bChmZCwgVklESU9DR0NBUCwgJmNhcCkgPCAwKSB7CisgICAgcGVycm9yKCJWSURJT0dDQVAiKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIigiIEZJTEUgIiBub3QgYSB2aWRlbzRsaW51eCBkZXZpY2U/KVxuIik7CisgICAgY2xvc2UoZmQpOworICAgIGV4aXQoMSk7CisgIH0KKworICBpZiAoaW9jdGwoZmQsIFZJRElPQ0dXSU4sICZ3aW4pIDwgMCkgeworICAgIHBlcnJvcigiVklESU9DR1dJTiIpOworICAgIGNsb3NlKGZkKTsKKyAgICBleGl0KDEpOworICB9CisKKyAgaWYgKGlvY3RsKGZkLCBWSURJT0NHUElDVCwgJnZwaWMpIDwgMCkgeworICAgIHBlcnJvcigiVklESU9DR1BJQ1QiKTsKKyAgICBjbG9zZShmZCk7CisgICAgZXhpdCgxKTsKKyAgfQorCisgIGlmIChjYXAudHlwZSAmIFZJRF9UWVBFX01PTk9DSFJPTUUpIHsKKyAgICB2cGljLmRlcHRoPTg7CisgICAgdnBpYy5wYWxldHRlPVZJREVPX1BBTEVUVEVfR1JFWTsgICAgLyogOGJpdCBncmV5ICovCisgICAgaWYoaW9jdGwoZmQsIFZJRElPQ1NQSUNULCAmdnBpYykgPCAwKSB7CisgICAgICB2cGljLmRlcHRoPTY7CisgICAgICBpZihpb2N0bChmZCwgVklESU9DU1BJQ1QsICZ2cGljKSA8IDApIHsKKyAgICAgICAgdnBpYy5kZXB0aD00OworICAgICAgICBpZihpb2N0bChmZCwgVklESU9DU1BJQ1QsICZ2cGljKSA8IDApIHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBmaW5kIGEgc3VwcG9ydGVkIGNhcHR1cmUgZm9ybWF0LlxuIik7CisgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAgdnBpYy5kZXB0aD0yNDsKKyAgICB2cGljLnBhbGV0dGU9VklERU9fUEFMRVRURV9SR0IyNDsKKyAgICAKKyAgICBpZihpb2N0bChmZCwgVklESU9DU1BJQ1QsICZ2cGljKSA8IDApIHsKKyAgICAgIHZwaWMucGFsZXR0ZT1WSURFT19QQUxFVFRFX1JHQjU2NTsKKyAgICAgIHZwaWMuZGVwdGg9MTY7CisgICAgICAKKyAgICAgIGlmKGlvY3RsKGZkLCBWSURJT0NTUElDVCwgJnZwaWMpPT0tMSkgeworICAgICAgICB2cGljLnBhbGV0dGU9VklERU9fUEFMRVRURV9SR0I1NTU7CisgICAgICAgIHZwaWMuZGVwdGg9MTU7CisgICAgICAgIAorICAgICAgICBpZihpb2N0bChmZCwgVklESU9DU1BJQ1QsICZ2cGljKT09LTEpIHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBmaW5kIGEgc3VwcG9ydGVkIGNhcHR1cmUgZm9ybWF0LlxuIik7CisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisgIAorICBidWZmZXIgPSBtYWxsb2Mod2luLndpZHRoICogd2luLmhlaWdodCAqIGJwcCk7CisgIGlmICghYnVmZmVyKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJPdXQgb2YgbWVtb3J5LlxuIik7CisgICAgZXhpdCgxKTsKKyAgfQorICAKKyAgZG8geworICAgIGludCBuZXdicmlnaHQ7CisgICAgcmVhZChmZCwgYnVmZmVyLCB3aW4ud2lkdGggKiB3aW4uaGVpZ2h0ICogYnBwKTsKKyAgICBmID0gZ2V0X2JyaWdodG5lc3NfYWRqKGJ1ZmZlciwgd2luLndpZHRoICogd2luLmhlaWdodCwgJm5ld2JyaWdodCk7CisgICAgaWYgKGYpIHsKKyAgICAgIHZwaWMuYnJpZ2h0bmVzcyArPSAobmV3YnJpZ2h0IDw8IDgpOworICAgICAgaWYoaW9jdGwoZmQsIFZJRElPQ1NQSUNULCAmdnBpYyk9PS0xKSB7CisgICAgICAgIHBlcnJvcigiVklESU9TUElDVCIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0gd2hpbGUgKGYpOworCisgIGZwcmludGYoc3Rkb3V0LCAiUDZcbiVkICVkIDI1NVxuIiwgd2luLndpZHRoLCB3aW4uaGVpZ2h0KTsKKworICBzcmMgPSBidWZmZXI7CisKKyAgZm9yIChpID0gMDsgaSA8IHdpbi53aWR0aCAqIHdpbi5oZWlnaHQ7IGkrKykgeworICAgIFJFQURfVklERU9fUElYRUwoc3JjLCB2cGljLnBhbGV0dGUsIHNyY19kZXB0aCwgciwgZywgYik7CisgICAgZnB1dGMocj4+OCwgc3Rkb3V0KTsKKyAgICBmcHV0YyhnPj44LCBzdGRvdXQpOworICAgIGZwdXRjKGI+PjgsIHN0ZG91dCk7CisgIH0KKyAgICAKKyAgY2xvc2UoZmQpOworICByZXR1cm4gMDsKK30KKy0tLS0tLS0tLS0tLS0tLS0tLS0tIDg8IC0tLS0tLS0tLS0tLS0tLS0gODwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisxMC4wIC0tLSBPdGhlciBJbmZvcm1hdGlvbgorCitVc2UgdGhlIC4uLy4uL01haW50YWluZXJzIGZpbGUsIHBhcnRpY3VsYXJseSB0aGUgIFZJREVPIEZPUiBMSU5VWCBhbmQgUEFSQUxMRUwKK1BPUlQgU1VQUE9SVCBzZWN0aW9ucworCitUaGUgdmlkZW80bGludXggcGFnZToKKyAgaHR0cDovL3JvYWRydW5uZXIuc3dhbnNlYS5saW51eC5vcmcudWsvdjRsLnNodG1sCisKK1RoZSB2aWRlbzRsaW51eDIgcGFnZToKKyAgaHR0cDovL21pbGxlbm5pdW0uZGlhZHMuY29tL2JkaXJrcy92NGwyLmh0bQorCitTb21lIHdlYiBwYWdlcyBhYm91dCB0aGUgcXVpY2tjYW1zOgorICAgaHR0cDovL3d3dy5ka2Z6LWhlaWRlbGJlcmcuZGUvTWFjcm9tb2wvd2VkZW1hbm4vbWluaS1IT1dUTy1jcWNhbS5odG1sCisKKyAgIGh0dHA6Ly93d3cuY3J5bndyLmNvbS9xY3BjLyAgICAgICAgICAgIFF1aWNrQ2FtIFRoaXJkLVBhcnR5IERyaXZlcnMKKyAgIGh0dHA6Ly93d3cuY3J5bndyLmNvbS9xY3BjL3JlLmh0bWwgICAgIFNvbWUgUmV2ZXJzZSBFbmdpbmVlcmluZworICAgaHR0cDovL2NzZS51bmwuZWR1L35jbHVlbmluZy9ncWNhbS8gICAgdjRsIGNsaWVudAorICAgaHR0cDovL3Bob2Jvcy5pbGx0ZWwuZGVudmVyLmNvLnVzL3B1Yi9xY3JlYWQvIGRvZXNuJ3QgdXNlIHY0bAorICAgZnRwOi8vZnRwLmNzLnVubS5lZHUvcHViL2NocmlzL3F1aWNrY2FtLyAgIEhhcyBsb3RzIG9mIGRyaXZlcnMKKyAgIGh0dHA6Ly93d3cuY3MuZHVrZS5lZHUvfnJleW5vbGRzL3F1aWNrY2FtLyBIYXMgbG90cyBvZiBpbmZvcm1hdGlvbgorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmNwaWEgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5jcGlhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NWU3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5jcGlhCkBAIC0wLDAgKzEsMTkxIEBACitUaGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgQ1BpQSBQUEMyIGRyaXZlbiBwYXJhbGxlbCBjb25uZWN0ZWQKK0NhbWVyYS4gRm9yIGV4YW1wbGUgdGhlIENyZWF0aXZlIFdlYmNhbUlJIGlzIENQaUEgZHJpdmVuLgorCisgICApIFsxXVBldGVyIFByZWdsZXIsIExpbnogMjAwMCwgcHVibGlzaGVkIHVuZGVyIHRoZSBbMl1HTlUgR1BMCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVU0FHRToKKworR2VuZXJhbDoKKz09PT09PT09CisKKzEpIE1ha2Ugc3VyZSB5b3UgaGF2ZSBjcmVhdGVkIHRoZSB2aWRlbyBkZXZpY2VzICgvZGV2L3ZpZGVvKik6CisKKy0gaWYgeW91IGhhdmUgYSByZWNlbnQgTUFLRURFViBkbyBhICdjZCAvZGV2Oy4vTUFLRURFViB2aWRlbycKKy0gb3RoZXJ3aXNlIGRvIGE6CisKK2NkIC9kZXYKK21rbm9kIHZpZGVvMCBjIDgxIDAKK2xuIC1zIHZpZGVvMCB2aWRlbworCisyKSBDb21waWxlIHRoZSBrZXJuZWwgKHNlZSBiZWxvdyBmb3IgdGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byB1c2UpLAorICAgY29uZmlndXJlIHlvdXIgcGFycG9ydCBhbmQgcmVib290LgorCiszKSBJZiBhbGwgd29ya2VkIHdlbGwgeW91IHNob3VsZCBnZXQgbWVzc2FnZXMgc2ltaWxhcgorICAgdG8gdGhlIGZvbGxvd2luZyAoeW91ciB2ZXJzaW9ucyBtYXkgYmUgZGlmZmVyZW50KSBvbiB0aGUgY29uc29sZToKKworVjRMLURyaXZlciBmb3IgVmlzaW9uIENQaUEgYmFzZWQgY2FtZXJhcyB2MC43LjQKK3BhcnBvcnQwOiByZWFkMiB0aW1lb3V0LgorcGFycG9ydDA6IE11bHRpbWVkaWEgZGV2aWNlLCBWTFNJIFZpc2lvbiBMdGQgUFBDMgorUGFyYWxsZWwgcG9ydCBkcml2ZXIgZm9yIFZpc2lvbiBDUGlBIGJhc2VkIGNhbWVyYQorICBDUElBIFZlcnNpb246IDEuMjAgKDIuMCkKKyAgQ1BJQSBQblAtSUQ6IDA1NTM6MDAwMjowMTAwCisgIFZQLVZlcnNpb246IDEuMCAwMTAwCisgIDEgY2FtZXJhKHMpIGZvdW5kCisKKworQXMgbW9kdWxlczoKKz09PT09PT09PT09CisKK01ha2Ugc3VyZSB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUgZm9sbG93aW5nIGtlcm5lbCBvcHRpb25zICh5b3UgY2FuCitzZWxlY3QgYWxsIHN0dWZmIGFzIG1vZHVsZXMpOgorCitUaGUgY3BpYS1zdHVmZiBpcyBpbiB0aGUgc2VjdGlvbiAnQ2hhcmFjdGVyIGRldmljZXMgLT4gVmlkZW8gRm9yIExpbnV4Jy4KKworQ09ORklHX1BBUlBPUlQ9bQorQ09ORklHX1BBUlBPUlRfUEM9bQorQ09ORklHX1BBUlBPUlRfUENfRklGTz15CitDT05GSUdfUEFSUE9SVF8xMjg0PXkKK0NPTkZJR19WSURFT19ERVY9bQorQ09ORklHX1ZJREVPX0NQSUE9bQorQ09ORklHX1ZJREVPX0NQSUFfUFA9bQorCitGb3IgYXV0b2xvYWRpbmcgb2YgYWxsIHRob3NlIG1vZHVsZXMgeW91IG5lZWQgdG8gdGVsbCBtb2R1bGUtaW5pdC10b29scworc29tZSBzdHVmZi4gQWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB5b3VyIG1vZHVsZS1pbml0LXRvb2xzIGNvbmZpZy1maWxlCisoZS5nLiAvZXRjL21vZHByb2JlLmNvbmYgb3Igd2hlcmV2ZXIgeW91ciBkaXN0cmlidXRpb24gZG9lcyBzdG9yZSB0aGF0CitzdHVmZik6CisKK29wdGlvbnMgcGFycG9ydF9wYyBpbz0weDM3OCBpcnE9NyBkbWE9MworYWxpYXMgY2hhci1tYWpvci04MSBjcGlhX3BwCisKK1RoZSBmaXJzdCBsaW5lIHRlbGxzIHRoZSBkbWEvaXJxIGNoYW5uZWxzIHRvIHVzZS4gVGhvc2UgX211c3RfIG1hdGNoCit0aGUgc2V0dGluZ3Mgb2YgeW91ciBCSU9TLiBEbyBOT1Qgc2ltcGx5IHVzZSB0aGUgdmFsdWVzIGFib3ZlLiAgU2VlCitEb2N1bWVudGF0aW9uL3BhcnBvcnQudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMuIFRoZSBzZWNvbmQKK2xpbmUgYXNzb2NpYXRlcyB0aGUgdmlkZW8tZGV2aWNlIGZpbGUgd2l0aCB0aGUgZHJpdmVyLiBPZiBjYXVzZSB5b3UKK2NhbiBhbHNvIGxvYWQgdGhlIG1vZHVsZXMgb25jZSB1cG9uIGJvb3QgKHVzdWFsbHkgZG9uZSBpbiAvZXRjL21vZHVsZXMpLgorCitMaW5rZWQgaW50byB0aGUga2VybmVsOgorPT09PT09PT09PT09PT09PT09PT09PT0KKworTWFrZSBzdXJlIHlvdSBoYXZlIHNlbGVjdGVkIHRoZSBmb2xsb3dpbmcga2VybmVsIG9wdGlvbnMuIE5vdGUgdGhhdAoreW91IGNhbm5vdCBjb21waWxlIHRoZSBwYXJwb3J0LXN0dWZmIGFzIG1vZHVsZXMgYW5kIHRoZSBjcGlhLWRyaXZlcgorc3RhdGljYWxseSAodGhlIG90aGVyIHdheSByb3VuZCBpcyBva2F5IHRob3VnaCkuCisKK1RoZSBjcGlhLXN0dWZmIGlzIGluIHRoZSBzZWN0aW9uICdDaGFyYWN0ZXIgZGV2aWNlcyAtPiBWaWRlbyBGb3IgTGludXgnLgorCitDT05GSUdfUEFSUE9SVD15CitDT05GSUdfUEFSUE9SVF9QQz15CitDT05GSUdfUEFSUE9SVF9QQ19GSUZPPXkKK0NPTkZJR19QQVJQT1JUXzEyODQ9eQorQ09ORklHX1ZJREVPX0RFVj15CitDT05GSUdfVklERU9fQ1BJQT15CitDT05GSUdfVklERU9fQ1BJQV9QUD15CisKK1RvIHVzZSBETUEvaXJxIHlvdSB3aWxsIG5lZWQgdG8gdGVsbCB0aGUga2VybmVsIHVwb24gYm9vdCB0aW1lIHRoZQoraGFyZHdhcmUgY29uZmlndXJhdGlvbiBvZiB0aGUgcGFycG9ydC4gWW91IGNhbiBnaXZlIHRoZSBib290LXBhcmFtZXRlcgorYXQgdGhlIExJTE8tcHJvbXB0IG9yIHNwZWNpZnkgaXQgaW4gbGlsby5jb25mLiBJIHVzZSB0aGUgZm9sbG93aW5nCithcHBlbmQtbGluZSBpbiBsaWxvLmNvbmY6CisKKyAgICAgICAgYXBwZW5kPSJwYXJwb3J0PTB4Mzc4LDcsMyIKKworU2VlIERvY3VtZW50YXRpb24vcGFycG9ydC50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCitjb25maWd1cmF0aW9uIG9mIHRoZSBwYXJwb3J0IGFuZCB0aGUgdmFsdWVzIGdpdmVuIGFib3ZlLiBEbyBub3Qgc2ltcGx5Cit1c2UgdGhlIHZhbHVlcyBnaXZlbiBhYm92ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGRUFUVVJFUzoKKworLSBtbWFwL3JlYWQgdjRsLWludGVyZmFjZSAoYnV0IG5vIG92ZXJsYXkpCistIGltYWdlIGZvcm1hdHM6IENJRi9RQ0lGLCBTSUYvUVNJRiwgdmFyaW91cyBvdGhlcnMgdXNlZCBieSBpc2FiZWw7CisgIG5vdGU6IGFsbCBzaXplcyBleGNlcHQgQ0lGL1FDSUYgYXJlIGltcGxlbWVudGVkIGJ5IGNsaXBwaW5nLCBpLmUuCisgIHBpeGVscyBhcmUgbm90IHVwbG9hZGVkIGZyb20gdGhlIGNhbWVyYQorLSBwYWxldHRlczogVklERU9fUEFMRVRURV9HUkFZLCBWSURFT19QQUxFVFRFX1JHQjU2NSwgVklERU9fUEFMRVRURV9SR0I1NTUsCisgIFZJREVPX1BBTEVUVEVfUkdCMjQsIFZJREVPX1BBTEVUVEVfUkdCMzIsIFZJREVPX1BBTEVUVEVfWVVZViwKKyAgVklERU9fUEFMRVRURV9VWVZZLCBWSURFT19QQUxFVFRFX1lVVjQyMgorLSBzdGF0ZSBpbmZvcm1hdGlvbiAoY29sb3IgYmFsYW5jZSwgZXhwb3N1cmUsIC4uLikgaXMgcHJlc2VydmVkIGJldHdlZW4KKyAgZGV2aWNlIG9wZW5zCistIGNvbXBsZXRlIGNvbnRyb2wgb3ZlciBjYW1lcmEgdmlhIHByb2MtaW50ZXJmYWNlIChfYWxsXyBjYW1lcmEgc2V0dGluZ3MgYXJlCisgIHN1cHBvcnRlZCksIHRoZXJlIGlzIGFsc28gYSBweXRob24tZ3RrIGFwcGxpY2F0aW9uIGF2YWlsYWJsZSBmb3IgdGhpcyBbM10KKy0gd29ya3MgdW5kZXIgU01QIChidXQgdGhlIGRyaXZlciBpcyBjb21wbGV0ZWx5IHNlcmlhbGl6ZWQgYW5kIHN5bmNocm9ub3VzKQorICBzbyB5b3UgZ2V0IG5vIGJlbmVmaXQgZnJvbSBTTVAsIGJ1dCBhdCBsZWFzdCBpdCBkb2VzIG5vdCBjcmFzaCB5b3VyIGJveAorLSBtaWdodCB3b3JrIGZvciBub24tSW50ZWwgYXJjaGl0ZWN0dXJlLCBsZXQgdXMga25vdyBhYm91dCB0aGlzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVEVTVEVEIEFQUExJQ0FUSU9OUzoKKworLSBhIHNpbXBsZSB0ZXN0IGFwcGxpY2F0aW9uIGJhc2VkIG9uIFh0IGlzIGF2YWlsYWJsZSBhdCBbM10KKy0gYW5vdGhlciB0ZXN0LWFwcGxpY2F0aW9uIGJhc2VkIG9uIGdxY2FtLTAuNCAodXNlcyBHVEspCistIGdxY2FtLTAuNiBzaG91bGQgd29yaworLSB4YXd0di0zLnggKGFsc28gdGhlIHdlYmNhbSBzb2Z0d2FyZSkKKy0geGF3dHYtMi40NgorLSB3M2NhbSAoY2dpLWludGVyZmFjZSBhbmQgdmlkY2F0LCBlLmcuIHlvdSBtYXkgdHJ5IG91dCAndmlkY2F0ICB8eHYKKyAgLW1heHBlY3QgLXJvb3QgLXF1aXQgK25vcmVzZXRyb290IC1ybW9kZSA1IC0nKQorLSB2aWMsIHRoZSBNQk9ORSB2aWRlbyBjb25mZXJlbmNpbmcgdG9vbCAodmVyc2lvbiAyLjh1Y2w0LTEpCistIGlzYWJlbCAzUjRiZXRhIChiYXJlbHkgd29ya2luZywgYnV0IEFGQUlDVCBhbGwgdGhlIHByb2JsZW1zIGFyZSBvbgorICB0aGVpciBzaWRlKQorLSBjYW1zZXJ2LTAuNDAKKworU2VlIFszXSBmb3IgcG9pbnRlcnMgdG8gdjRsLWFwcGxpY2F0aW9ucy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitLTk9XTiBQUk9CTEVNUzoKKworLSBzb21lIGFwcGxpY2F0aW9ucyBkbyBub3QgaGFuZGxlIHRoZSBpbWFnZSBmb3JtYXQgY29ycmVjdGx5LCB5b3Ugd2lsbAorICBzZWUgc3RyYW5nZSBob3Jpem9udGFsIHN0cmlwZXMgaW5zdGVhZCBvZiBhIG5pY2UgcGljdHVyZSAtPiBtYWtlIHN1cmUKKyAgeW91ciBhcHBsaWNhdGlvbiBkb2VzIHVzZSBhIHN1cHBvcnRlZCBpbWFnZSBzaXplIG9yIHF1ZXJpZXMgdGhlIGRyaXZlcgorICBmb3IgdGhlIGFjdHVhbGx5IHVzZWQgc2l6ZSAocmVhc29uIGJlaGluZCB0aGlzOiB0aGUgY2FtZXJhIGNhbm5vdAorICBwcm92aWRlIGFueSBpbWFnZSBmb3JtYXQsIHNvIGlmIHNpemUgTnhNIGlzIHJlcXVlc3RlZCB0aGUgZHJpdmVyIHdpbGwKKyAgdXNlIGEgZm9ybWF0IHRvIHRoZSBjbG9zZXN0IGZpdHRpbmcgTjF4TTEsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgbm93CisgIHF1ZXJ5IGZvciB0aGlzIGdyYW50ZWQgc2l6ZSwgbW9zdCBhcHBsaWNhdGlvbnMgZG8gbm90KS4KKy0gYWxsIHRoZSB0b2RvIDspCistIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbGlnaHQgYW5kIHRoZSBwaWN0dXJlIGlzIHRvbyBkYXJrIHRyeSB0bworICBhZGp1c3QgdGhlIFNldFNlbnNvckZQUyBzZXR0aW5nLCBhdXRvbWF0aWMgZnJhbWUgcmF0ZSBhZGp1c3RtZW50CisgIGhhcyBpdHMgcHJpY2UKKy0gZG8gbm90IHRyeSBvdXQgaXNhYmVsIDNSNGJldGEgKGJ1aWx0IDEzNSksIHlvdSB3aWxsIGJlIGRpc2FwcG9pbnRlZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RPRE86CisKKy0gbXVsdGlwbGUgY2FtZXJhIHN1cHBvcnQgKHN0cnVjdCBjYW1lcmEgb3Igc29tZXRoaW5nKSAtIFRoaXMgc2hvdWxkIHdvcmssCisgIGJ1dCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0LgorLSBhcmNoaXRlY3R1cmUgaW5kZXBlbmRlbmNlPworLSBTTVAtc2FmZSBhc3luY2hyb25vdXMgbW1hcCBpbnRlcmZhY2UKKy0gbmliYmxlIG1vZGUgZm9yIG9sZCBwYXJwb3J0IGludGVyZmFjZXMKKy0gc3RyZWFtaW5nIGNhcHR1cmUsIHRoaXMgc2hvdWxkIGdpdmUgYSBwZXJmb3JtYW5jZSBnYWluCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSU1QTEVNRU5UQVRJT04gTk9URVM6CisKK1RoZSBjYW1lcmEgY2FuIGFjdCBpbiB0d28gbW9kZXMsIHN0cmVhbWluZyBvciBncmFiYmluZy4gUmlnaHQgbm93IGEKK3BvbGxpbmcgZ3JhYi1zY2hlbWUgaXMgdXNlZC4gTWF5YmUgaW50ZXJydXB0IGRyaXZlbiBzdHJlYW1pbmcgd2lsbCBiZQordXNlZCBmb3IgYSBhc3luY2hyb25vdXMgbW1hcCBpbnRlcmZhY2UgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZSBvZiB0aGUKK2RyaXZlci4gVGhpcyBtaWdodCBnaXZlIGEgYmV0dGVyIGZyYW1lIHJhdGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVEhBTktTIChpbiBubyBwYXJ0aWN1bGFyIG9yZGVyKToKKworLSBTY290dCBKLiBCZXJ0aW4gPHNiZXJ0aW5AbWluZHNwcmluZy5jb20+IGZvciBjbGVhbnVwcywgdGhlIHByb2MtZmlsZXN5c3RlbQorICBhbmQgbXVjaCBtb3JlCistIEhlbnJ5IEJydWNlIDx3aGJAdnZsLmNvLnVrPiBmb3IgcHJvdmlkaW5nIGRldmVsb3BlcnMgaW5mb3JtYXRpb24gYWJvdXQKKyAgdGhlIENQaUEgY2hpcCwgSSB3aXNoIGFsbCBjb21wYW5pZXMgd291bGQgdHJlYXQgTGludXggYXMgc2VyaW91c2x5CistIEthcm9seSBFcmRlaSA8S2Fyb2x5LkVyZGVpQHJpc2MudW5pLWxpbnouYWMuYXQ+IGFuZCBSSVNDLUxpbnogZm9yIGJlaW5nCisgIG15IGJvc3MgOykgcmVzcC4gbXkgZW1wbG95ZXIgYW5kIGZvciBwcm92aWRpbmcgbWUgdGhlIGhhcmR3YXJlIGFuZAorICBhbGxvdyBtZSB0byBkZXZvdGUgc29tZSB3b3JraW5nIHRpbWUgdG8gdGhpcyBwcm9qZWN0CistIE1hbnVlbCBKLiBQZXRpdCBkZSBHYWJyaWVsIDxtcGV0aXRAZGl0LnVwbS5lcz4gZm9yIHByb3ZpZGluZyBoZWxwCisgIHdpdGggSXNhYmVsIChodHRwOi8vaXNhYmVsLmRpdC51cG0uZXMvKQorLSBCYXMgSHVpc21hbiA8Ymh1aXNtQGNzLnV0d2VudGUubmw+IGZvciB3cml0aW5nIHRoZSBpbml0aWFsIHBhcnBvcnQgY29kZQorLSBKYXJsIFRvdGxhbmQgPEphcmwuVG90bGFuZEBiZGMubm8+IGZvciBzZXR0aW5nIHVwIHRoZSBtYWlsaW5nIGxpc3QgCisgIGFuZCBtYWludGFpbmluZyB0aGUgd2ViLXNlcnZlclszXQorLSBDaHJpcyBXaGl0ZWZvcmQgPENocmlzQGluZm9ybWludGVyYWN0aXZlLmNvbT4gZm9yIGZpeGVzIHJlbGF0ZWQgdG8gdGhlCisgIDEuMDIgZmlybXdhcmUKKy0gc3BlY2lhbCBrdWRvcyB0byBhbGwgdGhlIHRlc3RlciB3aG9zZSBtYWNoaW5lcyBjcmFzaGVkIGFuZC9vcgorICB3aWxsIGNyYXNoLiA6KQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JFRkVSRU5DRVMKKworICAgMS4gaHR0cDovL3d3dy5yaXNjLnVuaS1saW56LmFjLmF0L3Blb3BsZS9wcHJlZ2xlcgorICAgICAgbWFpbHRvOlBldGVyX1ByZWdsZXJAZW1haWwuY29tCisgICAyLiBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgdG9wIGRpcmVjdG9yeSBvZiB0aGUga2VybmVsIHRyZWUKKyAgIDMuIGh0dHA6Ly93ZWJjYW0uc291cmNlZm9yZ2UubmV0LwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUuY3g4OCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmN4ODgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk3YWI4MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmN4ODgKQEAgLTAsMCArMSw2OSBAQAorCitjeDg4MDAgcmVsZWFzZSBub3RlcworPT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyBhIHY0bDIgZGV2aWNlIGRyaXZlciBmb3IgdGhlIGN4MjM4OHggY2hpcC4KKworCitjdXJyZW50IHN0YXR1cworPT09PT09PT09PT09PT0KKwordmlkZW8KKwktIEJhc2ljYWxseSB3b3Jrcy4KKwktIFNvbWUgbWlub3IgaW1hZ2UgcXVhbGl0eSBnbGl0Y2hlcy4KKwktIEZvciBub3cgb25seSBjYXB0dXJlLCBvdmVybGF5IHN1cHBvcnQgaXNuJ3QgY29tcGxldGVkIHlldC4KKworYXVkaW8KKwktIFRoZSBjaGlwIHNwZWNzIGZvciB0aGUgb24tY2hpcCBUViBzb3VuZCBkZWNvZGVyIGFyZSBuZXh0CisJICB0byB1c2VsZXNzIDotLworCS0gTmV2ZXJsZXNzIHRoZSBidWlsdGluIFRWIHNvdW5kIGRlY29kZXIgc3RhcnRzIHdvcmtpbmcgbm93LAorICAgICAgICAgIGF0IGxlYXN0IGZvciBQQUwtQkcuICBPdGhlciBUViBub3JtcyBuZWVkIG90aGVyIGNvZGUgLi4uCisgICAgICAgICAgRk9SIEFOWSBSRVBPUlRTIE9OIFRISVMgUExFQVNFIE1FTlRJT04gVEhFIFRWIE5PUk0gWU9VIEFSRQorICAgICAgICAgIFVTSU5HLgorCS0gTW9zdCB0dW5lciBjaGlwcyBkbyBwcm92aWRlIG1vbm8gc291bmQsIHdoaWNoIG1heSBvciBtYXkgbm90CisJICBiZSB1c2VhYmxlIGRlcGVuZGluZyBvbiB0aGUgYm9hcmQgZGVzaWduLiAgV2l0aCB0aGUgSGF1cHBhdWdlCisJICBjYXJkcyBpdCB3b3Jrcywgc28gdGhlcmUgaXMgbW9ubyBzb3VuZCBhdmFpbGFibGUgYXMgZmFsbGJhY2suCisJLSBhdWRpbyBkYXRhIGRtYSAoaS5lLiByZWNvcmRpbmcgd2l0aG91dCBsb29wYmFjayBjYWJsZSB0byB0aGUKKwkgIHNvdW5kIGNhcmQpIHNob3VsZCBiZSBwb3NzaWJsZSwgYnV0IHRoZXJlIGlzIG5vIGNvZGUgeWV0IC4uLgorCit2YmkKKwktIHNvbWUgY29kZSBwcmVzZW50LiAgRG9lc24ndCBjcmFzaCBhbnkgbW9yZSwgYnV0IGFsc28gZG9lc24ndAorCSAgd29yayB5ZXQgLi4uCisKKworaG93IHRvIGFkZCBzdXBwb3J0IGZvciBuZXcgY2FyZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkcml2ZXIgbmVlZHMgc29tZSBjb25maWcgaW5mbyBmb3IgdGhlIFRWIGNhcmRzLiAgVGhpcyBzdHVmZiBpcyBpbgorY3g4OC1jYXJkcy5jLiAgSWYgdGhlIGRyaXZlciBkb2Vzbid0IHdvcmsgd2VsbCB5b3UgbGlrZWx5IG5lZWQgYSBuZXcKK2VudHJ5IGZvciB5b3VyIGNhcmQgaW4gdGhhdCBmaWxlLiAgQ2hlY2sgdGhlIGtlcm5lbCBsb2cgKHVzaW5nIGRtZXNnKQordG8gc2VlIHdoZW5ldmVyIHRoZSBkcml2ZXIga25vd3MgeW91ciBjYXJkIG9yIG5vdC4gIFRoZXJlIGlzIGEgbGluZQorbGlrZSB0aGlzIG9uZToKKworCWN4ODgwMFswXTogc3Vic3lzdGVtOiAwMDcwOjM0MDAsIGJvYXJkOiBIYXVwcGF1Z2UgV2luVFYgXAorCQkzNHh4eCBtb2RlbHMgW2NhcmQ9MSxhdXRvZGV0ZWN0ZWRdCisKK0lmIHlvdXIgY2FyZCBpcyBsaXN0ZWQgYXMgImJvYXJkOiBVTktOT1dOL0dFTkVSSUMiIGl0IGlzIHVua25vd24gdG8KK3RoZSBkcml2ZXIuICBXaGF0IHRvIGRvIHRoZW4/CisKKyAoMSkgVHJ5IHVwZ3JhZGluZyB0byB0aGUgbGF0ZXN0IHNuYXBzaG90LCBtYXliZSBpdCBoYXMgYmVlbiBhZGRlZAorICAgICBtZWFud2hpbGUuCisgKDIpIFlvdSBjYW4gdHJ5IHRvIGNyZWF0ZSBhIG5ldyBlbnRyeSB5b3Vyc2VsZiwgaGF2ZSBhIGxvb2sgYXQKKyAgICAgY3g4OC1jYXJkcy5jLiAgSWYgdGhhdCB3b3JrZWQsIG1haWwgbWUgeW91ciBjaGFuZ2VzIGFzIHVuaWZpZWQKKyAgICAgZGlmZiAoImRpZmYgLXUiKS4KKyAoMykgT3IgeW91IGNhbiBtYWlsIG1lIHRoZSBjb25maWcgaW5mb3JtYXRpb24uICBJIG5lZWQgYXQgbGVhc3QgdGhlCisgICAgIGZvbGxvd2luZyBpbmZvcm1hdGlvbnMgdG8gYWRkIHRoZSBjYXJkOgorCisgICAgICogdGhlIFBDSSBTdWJzeXN0ZW0gSUQgKCIwMDcwOjM0MDAiIGZyb20gdGhlIGxpbmUgYWJvdmUsCisgICAgICAgImxzcGNpIC12IiBvdXRwdXQgaXMgZmluZSB0b28pLgorICAgICAqIHRoZSB0dW5lciB0eXBlIHVzZWQgYnkgdGhlIGNhcmQuICBZb3UgY2FuIHRyeSB0byBmaW5kIG9uZSBieQorICAgICAgIHRyaWFsLWFuZC1lcnJvciB1c2luZyB0aGUgdHVuZXI9PG4+IGluc21vZCBvcHRpb24uICBJZiB5b3UKKyAgICAgICBrbm93IHdoaWNoIG9uZSB0aGUgY2FyZCBoYXMgeW91IGNhbiBhbHNvIGhhdmUgYSBsb29rIGF0IHRoZQorICAgICAgIGxpc3QgaW4gQ0FSRExJU1QudHVuZXIKKworSGF2ZSBmdW4sCisKKyAgR2VyZAorCistLSAKK0dlcmQgS25vcnIgPGtyYXhlbEBieXRlc2V4Lm9yZz4gW1N1U0UgTGFic10KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmlyIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUuaXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRhNDdhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmlyCkBAIC0wLDAgKzEsNzIgQEAKKworaW5mcmFyZWQgcmVtb3RlIGNvbnRyb2wgc3VwcG9ydCBpbiB2aWRlbzRsaW51eCBkcml2ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitiYXNpY3MKKy0tLS0tLQorCitDdXJyZW50IHZlcnNpb25zIHVzZSB0aGUgbGludXggaW5wdXQgbGF5ZXIgdG8gc3VwcG9ydCBpbmZyYXJlZAorcmVtb3RlIGNvbnRyb2xzLiAgSSBzdWdnZXN0IHRvIGRvd25sb2FkIG15IGlucHV0IGxheWVyIHRvb2xzCitmcm9tIGh0dHA6Ly9ieXRlc2V4Lm9yZy9zbmFwc2hvdC9pbnB1dC08ZGF0ZT4udGFyLmd6CisKK01vZHVsZXMgeW91IGhhdmUgdG8gbG9hZDoKKworICBzYWE3MTM0CXN0YXRpY2FsbHkgYnVpbHQgaW4sIGkuZS4ganVzdCB0aGUgZHJpdmVyIDopCisgIGJ0dHYJCWlyLWtiZC1ncGlvIG9yIGlyLWtiZC1pMmMgZGVwZW5kaW5nIG9uIHlvdXIKKwkJY2FyZC4KKworaXIta2JkLWdwaW8gYW5kIGlyLWtiZC1pMmMgZG9uJ3Qgc3VwcG9ydCBhbGwgY2FyZHMgbGlyYyBzdXBwb3J0cworKHlldCksIG1haW5seSBmb3IgdGhlIHJlYXNvbiB0aGF0IHRoZSBjb2RlIG9mIGxpcmNfaTJjIGFuZCBsaXJjX2dwaW8KK3dhcyB2ZXJ5IGNvbmZ1c2luZyBhbmQgSSBkZWNpZGVkIHRvIGJhc2ljYWxseSBzdGFydCBvdmVyIGZyb20gc2NyYXRjaC4KK0ZlZWwgZnJlZSB0byBjb250YWN0IG1lIGluIGNhc2Ugb2YgdHJvdWJsZS4gIE5vdGUgdGhhdCB0aGUgaXIta2JkLSoKK21vZHVsZXMgd29yayBvbiAyLjYueCBrZXJuZWxzIG9ubHkgdGhyb3VnaCAuLi4KKworCitob3cgaXQgd29ya3MKKy0tLS0tLS0tLS0tLQorCitUaGUgbW9kdWxlcyByZWdpc3RlciB0aGUgcmVtb3RlIGFzIGtleWJvYXJkIHdpdGhpbiB0aGUgbGludXggaW5wdXQKK2xheWVyLCBpLmUuIHlvdSdsbCBzZWUgdGhlIGtleXMgb2YgdGhlIHJlbW90ZSBhcyBub3JtYWwga2V5IHN0cm9rZXMKKyhpZiBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgZW5hYmxlZCkuCisKK1VzaW5nIHRoZSBldmVudCBkZXZpY2VzIChDT05GSUdfSU5QVVRfRVZERVYpIGl0IGlzIHBvc3NpYmxlIGZvcgorYXBwbGljYXRpb25zIHRvIGFjY2VzcyB0aGUgcmVtb3RlIHZpYSAvZGV2L2lucHV0L2V2ZW50PG4+IGRldmljZXMuCitZb3UgbWlnaHQgaGF2ZSB0byBjcmVhdGUgdGhlIHNwZWNpYWwgZmlsZXMgdXNpbmcgIi9zYmluL01BS0VERVYKK2lucHV0Ii4gIFRoZSBpbnB1dCBsYXllciB0b29scyBtZW50aW9uZWQgYWJvdmUgdXNlIHRoZSBldmVudCBkZXZpY2UuCisKK1RoZSBpbnB1dCBsYXllciB0b29scyBhcmUgbmljZSBmb3IgdHJvdWJsZSBzaG9vdGluZywgaS5lLiB0byBjaGVjaword2hlbmV2ZXIgdGhlIGlucHV0IGRldmljZSBpcyByZWFsbHkgcHJlc2VudCwgd2hpY2ggb2YgdGhlIGRldmljZXMgaXQKK2lzLCBjaGVjayB3aGVuZXZlciBwcmVzc2luZyBrZXlzIG9uIHRoZSByZW1vdGUgYWN0dWFsbHkgZ2VuZXJhdGVzCitldmVudHMgYW5kIHRoZSBsaWtlLiAgWW91IGNhbiBhbHNvIHVzZSB0aGUga2JkIHV0aWxpdHkgdG8gY2hhbmdlIHRoZQora2V5bWFwcyAoMi42Lngga2VybmVscyBvbmx5IHRocm91Z2gpLgorCisKK3VzaW5nIHdpdGggbGlyY2QKKz09PT09PT09PT09PT09PT0KKworVGhlIGN2cyB2ZXJzaW9uIG9mIHRoZSBsaXJjZCBkYWVtb24gc3VwcG9ydHMgcmVhZGluZyBldmVudHMgZnJvbSB0aGUKK2xpbnV4IGlucHV0IGxheWVyICh2aWEgZXZlbnQgZGV2aWNlKS4gIFRoZSBpbnB1dCBsYXllciB0b29scyB0YXJiYWxsCitjb21lcyB3aXRoIGEgbGlyY2QgY29uZmlnIGZpbGUuCisKKwordXNpbmcgd2l0aG91dCBsaXJjZAorPT09PT09PT09PT09PT09PT09PQorCitYRnJlZTg2IGxpa2VseSBjYW4gYmUgY29uZmlndXJlZCB0byByZWNvZ25pc2UgdGhlIHJlbW90ZSBrZXlzLiAgT25jZSBJCitzaW1wbHkgdHJpZWQgdG8gY29uZmlndXJlIG9uZSBvZiB0aGUgbXVsdGltZWRpYSBrZXlib2FyZHMgYXMgaW5wdXQKK2RldmljZSwgd2hpY2ggaGFkIHRoZSBlZmZlY3QgdGhhdCBYRnJlZTg2IHJlY29nbmlzZWQgc29tZSBvZiB0aGUga2V5cworb2YgbXkgcmVtb3RlIGNvbnRyb2wgYW5kIHBhc3NlZCB2b2x1bWUgdXAvZG93biBrZXkgcHJlc3NlcyBhcworWEY4NkF1ZGlvUmFpc2VWb2x1bWUgYW5kIFhGODZBdWRpb0xvd2VyVm9sdW1lIGtleSBldmVudHMgdG8gdGhlIFgxMQorY2xpZW50cy4KKworSXQgbGlrZWx5IGlzIHBvc3NpYmxlIHRvIG1ha2UgdGhhdCBmbHkgd2l0aCBhIG5pY2UgeGtiIGNvbmZpZyBmaWxlLAorSSBrbm93IG5leHQgdG8gbm90aGluZyBhYm91dCB0aGF0IHRocm91Z2guCisKKworSGF2ZSBmdW4sCisKKyAgR2VyZAorCistLQorR2VyZCBLbm9yciA8a3JheGVsQGJ5dGVzZXgub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUuc2FhNzEzNCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLnNhYTcxMzQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE0NDZjNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLnNhYTcxMzQKQEAgLTAsMCArMSw3MyBAQAorCisKK1doYXQgaXMgaXQ/Cis9PT09PT09PT09PQorCitUaGlzIGlzIGEgdjRsMi9vc3MgZGV2aWNlIGRyaXZlciBmb3Igc2FhNzEzMC8zMy8zNC8zNSBiYXNlZCBjYXB0dXJlIC8gVFYKK2JvYXJkcy4gIFNlZSBodHRwOi8vd3d3LnNlbWljb25kdWN0b3JzLnBoaWxpcHMuY29tL3BpcC9zYWE3MTM0aGwgZm9yIGEKK2Rlc2NyaXB0aW9uLgorCisKK1N0YXR1cworPT09PT09CisKK0FsbW9zdCBldmVyeXRoaW5nIGlzIHdvcmtpbmcuICB2aWRlbywgc291bmQsIHR1bmVyLCByYWRpbywgbXBlZyB0cywgLi4uCisKK0FzIHdpdGggYnR0diwgY2FyZC1zcGVjaWZpYyB0d2Vha3MgYXJlIG5lZWRlZC4gIENoZWNrIENBUkRMSVNUIGZvciBhCitsaXN0IG9mIGtub3duIFRWIGNhcmRzIGFuZCBzYWE3MTM0LWNhcmRzLmMgZm9yIHRoZSBkcml2ZXJzIGNhcmQKK2NvbmZpZ3VyYXRpb24gaW5mby4KKworCitCdWlsZAorPT09PT0KKworUGljayB1cCB2aWRlb2RldiArIHY0bDIgcGF0Y2hlcyBmcm9tIGh0dHA6Ly9ieXRlc2V4Lm9yZy9wYXRjaGVzLy4KK0NvbmZpZ3VyZSwgYnVpbGQsIGluc3RhbGwgKyBib290IHRoZSBuZXcga2VybmVsLiAgWW91J2xsIG5lZWQgYXQgbGVhc3QKK3RoZXNlIGNvbmZpZyBvcHRpb25zOgorCisJQ09ORklHX0kyQz1tCisJQ09ORklHX1ZJREVPX0RFVj1tCisKK1R5cGUgIm1ha2UiIHRvIGJ1aWxkIHRoZSBkcml2ZXIgbm93LiAgIm1ha2UgaW5zdGFsbCIgaW5zdGFsbHMgdGhlCitkcml2ZXIuICAibW9kcHJvYmUgc2FhNzEzNCIgc2hvdWxkIGxvYWQgaXQuICBEZXBlbmRpbmcgb24gdGhlIGNhcmQgeW91CittaWdodCBoYXZlIHRvIHBhc3MgY2FyZD08bnI+IGFzIGluc21vZCBvcHRpb24sIGNoZWNrIENBUkRMSVNUIGZvcgordmFsaWQgY2hvaWNlcy4KKworCitDaGFuZ2VzIC8gRml4ZXMKKz09PT09PT09PT09PT09PQorCitQbGVhc2UgbWFpbCBtZSB1bmlmaWVkIGRpZmZzICgiZGlmZiAtdSIpIHdpdGggeW91ciBjaGFuZ2VzLCBhbmQgZG9uJ3QKK2ZvcmdldCB0byB0ZWxsIG1lIHdoYXQgaXQgY2hhbmdlcyAvIHdoaWNoIHByb2JsZW0gaXQgZml4ZXMgLyB3aGF0ZXZlcgoraXQgaXMgZ29vZCBmb3IgLi4uCisKKworS25vd24gUHJvYmxlbXMKKz09PT09PT09PT09PT09CisKKyogVGhlIHR1bmVyIGZvciB0aGUgZmx5dmlkZW9zIGlzbid0IGRldGVjdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHRoZQorICBkZWZhdWx0IG1pZ2h0IG5vdCB3b3JrIGZvciB5b3UgZGVwZW5kaW5nIG9uIHdoaWNoIHZlcnNpb24geW91IGhhdmUuCisgIFRoZXJlIGlzIGEgdHVuZXI9IGluc21vZCBvcHRpb24gdG8gb3ZlcnJpZGUgdGhlIGRyaXZlcidzIGRlZmF1bHQuCisKK0NhcmQgVmFyaWF0aW9uczoKKz09PT09PT09PT09PT09PT0KKworQ2FyZHMgY2FuIHVzZSBlaXRoZXIgb2YgdGhlc2UgdHdvIGNyeXN0YWxzICh4dGFsKToKKyAtIDMyLjExIE1IeiAtPiAuYXVkaW9fY2xvY2s9MHgxODdkZTcKKyAtIDI0LjU3Nk1IeiAtPiAuYXVkaW9fY2xvY2s9MHgyMDAwMDAKKyh4dGFsICogLmF1ZGlvX2Nsb2NrID0gNTE1Mzk2MDApCisKKworQ3JlZGl0cworPT09PT09PQorCithbmRyZXcuc3RldmVuc0BwaGlsaXBzLmNvbSArIHdlcm5lci5sZWViQHBoaWxpcHMuY29tIGZvciBwcm92aWRpbmcKK3NhYTcxMzQgaGFyZHdhcmUgc3BlY3MgYW5kIHNhbXBsZSBib2FyZC4KKworCitIYXZlIGZ1biwKKworICBHZXJkCisKKy0tIAorR2VyZCBLbm9yciA8a3JheGVsQGJ5dGVzZXgub3JnPiBbU3VTRSBMYWJzXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9ab3JhbiBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvWm9yYW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE0MjVjMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvWm9yYW4KQEAgLTAsMCArMSw1NTcgQEAKK0ZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CitzdWJqZWN0OiB1bmlmaWVkIHpvcmFuIGRyaXZlciAoenIzNjB4Nywgem9yYW4sIGJ1eiwgZGMxMCgrKSwgZGMzMCgrKSwgbG1sMzMpCit3ZWJzaXRlOiBodHRwOi8vbWpwZWcuc291cmNlZm9yZ2UubmV0L2RyaXZlci16b3Jhbi8KKworMS4gV2hhdCBjYXJkcyBhcmUgc3VwcG9ydGVkCisxLjEgV2hhdCB0aGUgVFYgZGVjb2RlciBjYW4gZG8gYW4gd2hhdCBub3QKKzEuMiBXaGF0IHRoZSBUViBlbmNvZGVyIGNhbiBkbyBhbiB3aGF0IG5vdAorMi4gSG93IGRvIEkgZ2V0IHRoaXMgZGFtbiB0aGluZyB0byB3b3JrCiszLiBXaGF0IG1haW5ib2FyZCBzaG91bGQgSSB1c2UgKG9yIHdoeSBkb2Vzbid0IG15IGNhcmQgd29yaykKKzQuIFByb2dyYW1taW5nIGludGVyZmFjZQorNS4gQXBwbGljYXRpb25zCis2LiBDb25jZXJuaW5nIGJ1ZmZlciBzaXplcywgcXVhbGl0eSwgb3V0cHV0IHNpemUgZXRjLgorNy4gSXQgaGFuZ3MvY3Jhc2hlcy9mYWlscy93aGF0ZXZlcnMhIEhlbHAhCis4LiBNYWludGFpbmVycy9Db250YWN0aW5nCis5LiBMaWNlbnNlCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBXaGF0IGNhcmRzIGFyZSBzdXBwb3J0ZWQKKworSW9tZWdhIEJ1eiwgTGludXggTWVkaWEgTGFicyBMTUwzMy9MTUwzM1IxMCwgUGlubmFjbGUvTWlybworREMxMC9EQzEwKy9EQzMwL0RDMzArIGFuZCByZWxhdGVkIGJvYXJkcyAoYXZhaWxhYmxlIHVuZGVyIHZhcmlvdXMgbmFtZXMpLgorCitJb21lZ2EgQnV6OgorKiBab3JhbiB6cjM2MDY3IFBDSSBjb250cm9sbGVyCisqIFpvcmFuIHpyMzYwNjAgTUpQRUcgY29kZWMKKyogUGhpbGlwcyBzYWE3MTExIFRWIGRlY29kZXIKKyogUGhpbGlwcyBzYWE3MTg1IFRWIGVuY29kZXIKK0RyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKKyAgICAgICAgICAgICAgICB2aWRlb2NvZGVjLCBzYWE3MTExLCBzYWE3MTg1LCB6cjM2MDYwLCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlIGFuZCBTLXZpZGVvCitOb3JtczogUEFMLCBTRUNBTSAoNzIweDU3NiBAIDI1IGZwcyksIE5UU0MgKDcyMHg0ODAgQCAyOS45NyBmcHMpCitDYXJkIG51bWJlcjogNworCitMaW51eCBNZWRpYSBMYWJzIExNTDMzOgorKiBab3JhbiB6cjM2MDY3IFBDSSBjb250cm9sbGVyCisqIFpvcmFuIHpyMzYwNjAgTUpQRUcgY29kZWMKKyogQnJvb2t0cmVlIGJ0ODE5IFRWIGRlY29kZXIKKyogQnJvb2t0cmVlIGJ0ODU2IFRWIGVuY29kZXIKK0RyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKKyAgICAgICAgICAgICAgICB2aWRlb2NvZGVjLCBidDgxOSwgYnQ4NTYsIHpyMzYwNjAsIHpyMzYwNjcKK0lucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUgYW5kIFMtdmlkZW8KK05vcm1zOiBQQUwgKDcyMHg1NzYgQCAyNSBmcHMpLCBOVFNDICg3MjB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDUKKworTGludXggTWVkaWEgTGFicyBMTUwzM1IxMDoKKyogWm9yYW4genIzNjA2NyBQQ0kgY29udHJvbGxlcgorKiBab3JhbiB6cjM2MDYwIE1KUEVHIGNvZGVjCisqIFBoaWxpcHMgc2FhNzExNCBUViBkZWNvZGVyCisqIEFuYWxvZyBEZXZpY2VzIGFkdjcxNzAgVFYgZW5jb2RlcgorRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAorICAgICAgICAgICAgICAgIHZpZGVvY29kZWMsIHNhYTcxMTQsIGFkdjcxNzAsIHpyMzYwNjAsIHpyMzYwNjcKK0lucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUgYW5kIFMtdmlkZW8KK05vcm1zOiBQQUwgKDcyMHg1NzYgQCAyNSBmcHMpLCBOVFNDICg3MjB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDYKKworUGlubmFjbGUvTWlybyBEQzEwKG5ldyk6CisqIFpvcmFuIHpyMzYwNTcgUENJIGNvbnRyb2xsZXIKKyogWm9yYW4genIzNjA2MCBNSlBFRyBjb2RlYworKiBQaGlsaXBzIHNhYTcxMTBhIFRWIGRlY29kZXIKKyogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCitEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCisgICAgICAgICAgICAgICAgdmlkZW9jb2RlYywgc2FhNzExMCwgYWR2NzE3NSwgenIzNjA2MCwgenIzNjA2NworSW5wdXRzL291dHB1dHM6IENvbXBvc2l0ZSwgUy12aWRlbyBhbmQgSW50ZXJuYWwKK05vcm1zOiBQQUwsIFNFQ0FNICg3Njh4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNjQweDQ4MCBAIDI5Ljk3IGZwcykKK0NhcmQgbnVtYmVyOiAxCisKK1Bpbm5hY2xlL01pcm8gREMxMCs6CisqIFpvcmFuIHpyMzYwNjcgUENJIGNvbnRyb2xsZXIKKyogWm9yYW4genIzNjA2MCBNSlBFRyBjb2RlYworKiBQaGlsaXBzIHNhYTcxMTBhIFRWIGRlY29kZXIKKyogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCitEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCisJCXZpZGVvY29kZWMsIHNhNzExMCwgYWR2NzE3NSwgenIzNjA2MCwgenIzNjA2NworSW5wdXRzL291dHB1dHM6IENvbXBvc2l0ZSwgUy12aWRlbyBhbmQgSW50ZXJuYWwKK05vcm1zOiBQQUwsIFNFQ0FNICg3Njh4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNjQweDQ4MCBAIDI5Ljk3IGZwcykKK0NhcmQgbnVtYmVyOiAyCisKK1Bpbm5hY2xlL01pcm8gREMxMChvbGQpOiAqCisqIFpvcmFuIHpyMzYwNTcgUENJIGNvbnRyb2xsZXIKKyogWm9yYW4genIzNjA1MCBNSlBFRyBjb2RlYworKiBab3JhbiB6cjM2MDE2IFZpZGVvIEZyb250IEVuZCBvciBGdWppIG1kMDIxMSBWaWRlbyBGcm9udCBFbmQgKGNsb25lPykKKyogTWljcm9uYXMgdnB4MzIyMGEgVFYgZGVjb2RlcgorKiBtc2UzMDAwIFRWIGVuY29kZXIgb3IgQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyICoKK0RyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKKyAgICAgICAgICAgICAgICB2aWRlb2NvZGVjLCB2cHgzMjIwLCBtc2UzMDAwL2FkdjcxNzUsIHpyMzYwNTAsIHpyMzYwMTYsIHpyMzYwNjcKK0lucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUsIFMtdmlkZW8gYW5kIEludGVybmFsCitOb3JtczogUEFMLCBTRUNBTSAoNzY4eDU3NiBAIDI1IGZwcyksIE5UU0MgKDY0MHg0ODAgQCAyOS45NyBmcHMpCitDYXJkIG51bWJlcjogMAorCitQaW5uYWNsZS9NaXJvIERDMzA6ICoKKyogWm9yYW4genIzNjA1NyBQQ0kgY29udHJvbGxlcgorKiBab3JhbiB6cjM2MDUwIE1KUEVHIGNvZGVjCisqIFpvcmFuIHpyMzYwMTYgVmlkZW8gRnJvbnQgRW5kCisqIE1pY3JvbmFzIHZweDMyMjVkL3ZweDMyMjBhL3ZweDMyMTZiIFRWIGRlY29kZXIKKyogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCitEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCisgICAgICAgICAgICAgICAgdmlkZW9jb2RlYywgdnB4MzIyMC92cHgzMjI0LCBhZHY3MTc1LCB6cjM2MDUwLCB6cjM2MDE2LCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlLCBTLXZpZGVvIGFuZCBJbnRlcm5hbAorTm9ybXM6IFBBTCwgU0VDQU0gKDc2OHg1NzYgQCAyNSBmcHMpLCBOVFNDICg2NDB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDMKKworUGlubmFjbGUvTWlybyBEQzMwKzogKgorKiBab3JhbiB6cjM2MDY3IFBDSSBjb250cm9sbGVyCisqIFpvcmFuIHpyMzYwNTAgTUpQRUcgY29kZWMKKyogWm9yYW4genIzNjAxNiBWaWRlbyBGcm9udCBFbmQKKyogTWljcm9uYXMgdnB4MzIyNWQvdnB4MzIyMGEvdnB4MzIxNmIgVFYgZGVjb2RlcgorKiBBbmFsb2cgRGV2aWNlcyBhZHY3MTc2IFRWIGVuY29kZXIKK0RyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKKwkJdmlkZW9jb2RlYywgdnB4MzIyMC92cHgzMjI0LCBhZHY3MTc1LCB6cjM2MDUwLCB6cjM2MDE1LCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlLCBTLXZpZGVvIGFuZCBJbnRlcm5hbAorTm9ybXM6IFBBTCwgU0VDQU0gKDc2OHg1NzYgQCAyNSBmcHMpLCBOVFNDICg2NDB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDQKKworTm90ZTogTm8gbW9kdWxlIGZvciB0aGUgbXNlMzAwMCBpcyBhdmFpbGFibGUgeWV0CitOb3RlOiBObyBtb2R1bGUgZm9yIHRoZSB2cHgzMjI0IGlzIGF2YWlsYWJsZSB5ZXQKK05vdGU6IHVzZSBlbmNvZGVyPVggb3IgZGVjb2Rlcj1YIGZvciBub24tZGVmYXVsdCBpMmMgY2hpcHMgKHNlZSBpMmMtaWQuaCkKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuMSBXaGF0IHRoZSBUViBkZWNvZGVyIGNhbiBkbyBhbiB3aGF0IG5vdAorCitUaGUgYmVzdCBrbm93IFRWIHN0YW5kYXJkcyBhcmUgTlRTQy9QQUwvU0VDQU0uIGJ1dCBmb3IgZGVjb2RpbmcgYSBmcmFtZSB0aGF0CitpbmZvcm1hdGlvbiBpcyBub3QgZW5vdWdoLiBUaGVyZSBhcmUgc2V2ZXJhbCBmb3JtYXRzIG9mIHRoZSBUViBzdGFuZGFyZHMuCitBbmQgbm90IGV2ZXJ5IFRWIGRlY29kZXIgaXMgYWJsZSB0byBoYW5kbGUgZXZlcnkgZm9ybWF0LiBBbHNvIHRoZSBldmVyeSAKK2NvbWJpbmF0aW9uIGlzIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLiBUaGVyZSBhcmUgY3VycmVudGx5IDExIGRpZmZlcmVudCAKK3R2IGJyb2FkY2FzdCBmb3JtYXRzIGFsbCBhdmVyIHRoZSB3b3JsZC4gCisKK1RoZSBDQ0lSIGRlZmluZXMgcGFyYW1ldGVycyBuZWVkZWQgZm9yIGJyb2FkY2FzdGluZyB0aGUgc2lnbmFsLiAKK1RoZSBDQ0lSIGhhcyBkZWZpbmVkIGRpZmZlcmVudCBzdGFuZGFyZHM6IEEsQixELEUsRixHLEQsSCxJLEssSzEsTCxNLE4sLi4uCitUaGUgQ0NJUiBzYXlzIG5vdCBtdWNoIGFib3V0IGFib3V0IHRoZSBjb2xvcnN5c3RlbSB1c2VkICEhIQorQW5kIHRhbGtpbmcgYWJvdXQgYSBjb2xvcnN5c3RlbSBzYXlzIG5vdCB0byBtdWNoIGFib3V0IGhvdyBpdCBpcyBicm9hZGNhc3QuCisKK1RoZSBDQ0lSIHN0YW5kYXJkcyBBLEUsRiBhcmUgbm90IHVzZWQgYW55IG1vcmUuCisKK1doZW4geW91IHNwZWFrIGFib3V0IE5UU0MsIHlvdSB1c3VhbGx5IG1lYW4gdGhlIHN0YW5kYXJkOiBDQ0lSIC0gTSB1c2luZwordGhlIE5UU0MgY29sb3JzeXN0ZW0gd2hpY2ggaXMgdXNlZCBpbiB0aGUgVVNBLCBKYXBhbiwgTWV4aWNvLCBDYW5hZGEKK2FuZCBhIGZldyBvdGhlcnMuIAorCitXaGVuIHlvdSB0YWxrIGFib3V0IFBBTCwgeW91IHVzdWFsbHkgbWVhbjogQ0NJUiAtIEIvRyB1c2luZyB0aGUgUEFMCitjb2xvcnN5c3RlbSB3aGljaCBpcyB1c2VkIGluIG1hbnkgQ291bnRyaWVzLiAKKworV2hlbiB5b3UgdGFsayBhYm91dCBTRUNBTSwgeW91IG1lYW46IENDSVIgLSBMIHVzaW5nIHRoZSBTRUNBTSBDb2xvcnN5c3RlbSAKK3doaWNoIGlzIHVzZWQgaW4gRnJhbmNlLCBhbmQgYSBmZXcgb3RoZXJzLgorCitUaGVyZSB0aGUgb3RoZXIgdmVyc2lvbiBvZiBTRUNBTSwgQ0NJUiAtIEQvSyBpcyB1c2VkIGluIEJ1bGdhcmlhLCBDaGluYSwKK1Nsb3Zha2FpLCBIdW5nYXJ5LCBLb3JlYSAoUmVwLiksIFBvbGFuZCwgUnVtYW5pYSBhbmQgYSBvdGhlcnMuIAorCitUaGUgQ0NJUiAtIEggdXNlcyB0aGUgUEFMIGNvbG9yc3lzdGVtIChzb21ldGltZXMgU0VDQU0pIGFuZCBpcyB1c2VkIGluIAorRWd5cHQsIExpYnlhLCBTcmkgTGFua2EsIFN5cmFpbiBBcmFiLiBSZXAuCisKK1RoZSBDQ0lSIC0gSSB1c2VzIHRoZSBQQUwgY29sb3JzeXN0ZW0sIGFuZCBpcyB1c2VkIGluIEdyZWF0IEJyaXRhaW4sIEhvbmcgS29uZywKK0lyZWxhbmQsIE5pZ2VyaWEsIFNvdXRoIEFmcmljYS4KKworVGhlIENDSVIgLSBOIHVzZXMgdGhlIFBBTCBjb2xvcnN5c3RlbSBhbmQgUEFMIGZyYW1lIHNpemUgYnV0IHRoZSBOVFNDIGZyYW1lcmF0ZSwKK2FuZCBpcyB1c2VkIGluIEFyZ2VudGluaWEsIFVydWd1YXksIGFuIGEgZmV3IG90aGVycworCitXZSBkbyBub3QgdGFsayBhYm91dCBob3cgdGhlIGF1ZGlvIGlzIGJyb2FkY2FzdCAhCisKK0EgcmF0aGVyIGdvb2Qgc2l0ZXMgYWJvdXQgdGhlIFRWIHN0YW5kYXJkcyBhcmU6IAoraHR0cDovL3d3dy5zb255LmpwL1NlcnZpY2VBcmVhL1ZvbHRhZ2VfbWFwLworaHR0cDovL2luZm8uZWxlY3Ryb25pY3dlcmtzdGF0dC5kZS9iZXJlaWNoZS9mZXJuc2VodGVjaG5pay9mcmVxdWVuemVuX3VuZF9ub3JtZW4vRmVybnNlaG5vcm1lbi8KK2FuZCBodHRwOi8vd3d3LmNhYmwuY29tL3Jlc3RhdXJhbnQvY2hhbm5lbC5odG1sCisKK090aGVyIHdlaXJkIHRoaW5ncyBhcm91bmQ6IE5UU0MgNC40MyBpcyBhIG1vZGlmaWNhdGVkIE5UU0MsIHdoaWNoIGlzIG1haW5seQordXNlZCBpbiBQQUwgVkNSJ3MgdGhhdCBhcmUgYWJsZSB0byBwbGF5IGJhY2sgTlRTQy4gUEFMIDYwIHNlZW1zIHRvIGJlIHRoZSBzYW1lCithcyBOVFNDIDQuNDMgLiBUaGUgRGF0YXNoZWV0cyBhbHNvIHRhbGsgYWJvdXQgTlRTQyA0NCwgSXQgc2VlbXMgYXMgaWYgaXQgd291bGQgCitiZSB0aGUgc2FtZSBhcyBOVFNDIDQuNDMuIAorTlRTQyBDb21icyBzZWVtcyB0byBiZSBhIGRlY29kZXIgbW9kZSB3aGVyZSB0aGUgZGVjb2RlciB1c2VzIGEgY29tYiBmaWx0ZXIKK3RvIHNwbGl0IGNvbWEgYW5kIGx1bWEgaW5zdGVhZCBvZiBhIERlbGF5IGxpbmUuCisKK0J1dCBJIGRpZCBub3QgZGVmaWFudGx5IGZpbmQgb3V0IHdoYXQgTlRTQyBDb21iIGlzLgorCitQaGlsaXBzIHNhYTcxMTEgVFYgZGVjb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMTk5NywgaXMgdXNlZCBpbiB0aGUgQlVaIGFuZCAKK2NhbiBoYW5kbGU6IFBBTCBCL0cvSC9JLCBQQUwgTiwgUEFMIE0sIE5UU0MgTSwgTlRTQyBOLCBOVFNDIDQuNDMgYW5kIFNFQ0FNIAorCitQaGlsaXBzIHNhYTcxMTBhIFRWIGRlY29kZXIKK3dhcyBpbnRyb2R1Y2VkIGluIDE5OTUsIGlzIHVzZWQgaW4gdGhlIFBpbm5hY2xlL01pcm8gREMxMChuZXcpLCBEQzEwKyBhbmQKK2NhbiBoYW5kbGU6IFBBTCBCL0csIE5UU0MgTSBhbmQgU0VDQU0gCisKK1BoaWxpcHMgc2FhNzExNCBUViBkZWNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAyMDAwLCBpcyB1c2VkIGluIHRoZSBMTUwzM1IxMCBhbmQgIAorY2FuIGhhbmRsZTogUEFMIEIvRy9EL0gvSS9OLCBQQUwgTiwgUEFMIE0sIE5UU0MgTSwgTlRTQyA0LjQzIGFuZCBTRUNBTQorCitCcm9va3RyZWUgYnQ4MTkgVFYgZGVjb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMTk5NiwgYW5kIGlzIHVzZWQgaW4gdGhlIExNTDMzIGFuZAorY2FuIGhhbmRsZTogUEFMIEIvRC9HL0gvSSwgTlRTQyBNCisKK01pY3JvbmFzIHZweDMyMjBhIFRWIGRlY29kZXIKK3dhcyBpbnRyb2R1Y2VkIGluIDE5OTYsIGlzIHVzZWQgaW4gdGhlIERDMzAgYW5kIERDMzArIGFuZAorY2FuIGhhbmRsZTogUEFMIEIvRy9IL0ksIFBBTCBOLCBQQUwgTSwgTlRTQyBNLCBOVFNDIDQ0LCBQQUwgNjAsIFNFQ0FNLE5UU0MgQ29tYgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4yIFdoYXQgdGhlIFRWIGVuY29kZXIgY2FuIGRvIGFuIHdoYXQgbm90CisKK1RoZSBUViBlbmNvZGVyIGFyZSBkb2luZyB0aGUgInNhbWUiIGFzIHRoZSBkZWNvZGVyLCBidXQgaW4gdGhlIG9kZXIgZGlyZWN0aW9uLgorWW91IGZlZWQgdGhlbSBkaWdpdGFsIGRhdGEgYW5kIHRoZSBnZW5lcmF0ZSBhIENvbXBvc2l0ZSBvciBTVkhTIHNpZ25hbC4KK0ZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29sb3JzeXN0ZW1zIGFuZCBUViBub3JtIHRha2UgYSBsb29rIGluIHRoZQorVFYgZGVjb2RlciBzZWN0aW9uLgorCitQaGlsaXBzIHNhYTcxODUgVFYgRW5jb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMTk5NiwgaXMgdXNlZCBpbiB0aGUgQlVaCitjYW4gZ2VuZXJhdGU6IFBBTCBCL0csIE5UU0MgTQorCitCcm9va3RyZWUgYnQ4NTYgVFYgRW5jb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMTk5NCwgaXMgdXNlZCBpbiB0aGUgTE1MMzMgCitjYW4gZ2VuZXJhdGU6IFBBTCBCL0QvRy9IL0kvTiwgUEFMIE0sIE5UU0MgTSwgUEFMLU4gKEFyZ2VudGluYSkKKworQW5hbG9nIERldmljZXMgYWR2NzE3MCBUViBFbmNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAyMDAwLCBpcyB1c2VkIGluIHRoZSBMTUwzMDBSMTAKK2NhbiBnZW5lcmF0ZTogUEFMIEIvRC9HL0gvSS9OLCBQQUwgTSwgTlRTQyBNLCBQQUwgNjAKKworQW5hbG9nIERldmljZXMgYWR2NzE3NSBUViBFbmNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAxOTk2LCBpcyB1c2VkIGluIHRoZSBEQzEwLCBEQzEwKywgREMxMCBvbGQsIERDMzAsIERDMzArCitjYW4gZ2VuZXJhdGU6IFBBTCBCL0QvRy9IL0kvTiwgUEFMIE0sIE5UU0MgTQorCitJVFQgbXNlMzAwMCBUViBlbmNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAxOTkxLCBpcyB1c2VkIGluIHRoZSBEQzEwIG9sZAorY2FuIGdlbmVyYXRlOiBQQUwgLCBOVFNDICwgU0VDQU0KKworVGhlIGFkdjcxN3gsIHNob3VsZCBiZSBhYmxlIHRvIHByb2R1Y2UgUEFMIE4uIEJ1dCB5b3UgZmluZCBub3RoaW5nIFBBTCBOIAorc3BlY2lmaWMgaW4gdGhlIHRoZSByZWdpc3RlcnMuIFNlZW0gdGhhdCB5b3UgaGF2ZSB0byByZXVzZSBhIG90aGVyIHN0YW5kYXJkCit0byBnZW5lcmF0ZSBQQUwgTiwgbWF5YmUgaXQgd291bGQgd29yayBpZiB5b3UgdXNlIHRoZSBQQUwgTSBzZXR0aW5ncy4gCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzIuIEhvdyBkbyBJIGdldCB0aGlzIGRhbW4gdGhpbmcgdG8gd29yaworCitMb2FkIHpyMzYwNjcuby4gSWYgaXQgY2FuJ3QgYXV0b2RldGVjdCB5b3VyIGNhcmQsIHVzZSB0aGUgY2FyZD1YIGluc21vZAorb3B0aW9uIHdpdGggWCBiZWluZyB0aGUgY2FyZCBudW1iZXIgYXMgZ2l2ZW4gaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCitUbyBoYXZlIG1vcmUgdGhhbiBvbmUgY2FyZCwgdXNlIGNhcmQ9WDFbLFgyWyxYMyxbWDRbLi5dXV1dCisKK1RvIGF1dG9tYXRlIHRoaXMsIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgL2V0Yy9tb2Rwcm9iZS5jb25mOgorCitvcHRpb25zIHpyMzYwNjcgY2FyZD1YMVssWDJbLFgzWyxYNFsuLl1dXV0KK2FsaWFzIGNoYXItbWFqb3ItODEtMCB6cjM2MDY3CisKK09uZSB0aGluZyB0byBrZWVwIGluIG1pbmQgaXMgdGhhdCB0aGlzIGRvZXNuJ3QgbG9hZCB6cjM2MDY3Lm8gaXRzZWxmIHlldC4gSXQKK2p1c3QgYXV0b21hdGVzIGxvYWRpbmcuIElmIHlvdSBzdGFydCB1c2luZyB4YXd0diwgdGhlIGRldmljZSB3b24ndCBsb2FkIG9uCitzb21lIHN5c3RlbXMsIHNpbmNlIHlvdSdyZSB0cnlpbmcgdG8gbG9hZCBtb2R1bGVzIGFzIGEgdXNlciwgd2hpY2ggaXMgbm90CithbGxvd2VkICgicGVybWlzc2lvbiBkZW5pZWQiKS4gQSBxdWljayB3b3JrYXJvdW5kIGlzIHRvIGFkZCAnTG9hZCAidjRsIicgdG8KK1hGODZDb25maWctNCB3aGVuIHlvdSB1c2UgWCBieSBkZWZhdWx0LCBvciB0byBydW4gJ3Y0bC1jb25mIC1jIDxkZXZpY2U+JyBpbgorb25lIG9mIHlvdXIgc3RhcnR1cCBzY3JpcHRzIChub3JtYWxseSByYy5sb2NhbCkgaWYgeW91IGRvbid0IHVzZSBYLiBCb3RoCittYWtlIHN1cmUgdGhhdCB0aGUgbW9kdWxlcyBhcmUgbG9hZGVkIG9uIHN0YXJ0dXAsIHVuZGVyIHRoZSByb290IGFjY291bnQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiszLiBXaGF0IG1haW5ib2FyZCBzaG91bGQgSSB1c2UgKG9yIHdoeSBkb2Vzbid0IG15IGNhcmQgd29yaykKKworPGluc2VydCBsb3VzeSBkaXNjbGFpbWVyIGhlcmU+LiBJbiBzaG9ydDogZ29vZD1TaVMvSW50ZWwsIGJhZD1WSUEuCisKK0V4cGVyaWVuY2UgdGVsbHMgdXMgdGhhdCBwZW9wbGUgd2l0aCBhIEJ1eiwgb24gYXZlcmFnZSwgaGF2ZSBtb3JlIHByb2JsZW1zCit0aGFuIHVzZXJzIHdpdGggYSBEQzEwKy9MTUwzMy4gQWxzbywgaXQgdGVsbHMgdXMgdGhhdCBwZW9wbGUgb3duaW5nIGEgVklBLQorYmFzZWQgbWFpbmJvYXJkIChrdFhYWCwgTVZQMykgaGF2ZSBtb3JlIHByb2JsZW1zIHRoYW4gdXNlcnMgd2l0aCBhIG1haW5ib2FyZAorYmFzZWQgb24gYSBkaWZmZXJlbnQgY2hpcHNldC4gSGVyZSdzIHNvbWUgbm90ZXMgZnJvbSBBbmRyZXcgU3RldmVuczoKKy0tCitIZXJlJ3MgbXkgZXhwZXJpZW5jZSBvZiB1c2luZyBMTUwzMyBhbmQgQnV6IG9uIHZhcmlvdXMgbW90aGVyYm9hcmRzOgorCitWSUEgTVZQMworCUZvcmdldCBpdC4gUG9pbnRsZXNzLiBEb2Vzbid0IHdvcmsuCitJbnRlbCA0MzBGWCAoUGVudGl1bSAyMDApIAorCUxNTDMzIHBlcmZlY3QsIEJ1eiB0b2xlcmFibGUgKDMgb3IgNCBmcmFtZXMgZHJvcHBlZCBwZXIgbW92aWUpCitJbnRlbCA0NDBCWCAoZWFybHkgc3RlcHBpbmcpCisJTE1MMzMgdG9sZXJhYmxlLiBCdXogc3RhcnRpbmcgdG8gZ2V0IGFubm95aW5nICg2LTEwIGZyYW1lcy9ob3VyKQorSW50ZWwgNDQwQlggKGxhdGUgc3RlcHBpbmcpCisJQnV6IHRvbGVyYWJsZSwgTE1MMyBhbG1vc3QgcGVyZmVjdCAob2NjYXNpb25hbCBzaW5nbGUgZnJhbWUgZHJvcHMpCitTaVM3MzUKKwlMTUwzMyBwZXJmZWN0LCBCdXogdG9sZXJhYmxlLgorVklBIEtUMTMzKCopCisJTE1MMzMgc3RhcnRpbmcgdG8gZ2V0IGFubm95aW5nLCBCdXogcG9vciBlbm91Z2ggdGhhdCBJIGhhdmUgdXAuCisKK0JvdGggNDQwQlggYm9hcmRzIHdlcmUgZHVhbCBDUFUgdmVyc2lvbnMuCistLQorQmVybmhhcmQgUHJhc2NoaW5nZXIgbGF0ZXIgYWRkZWQ6CistLQorQU1EIDc1MQorCUJ1eiBwZXJmZWN0LXRvbGVyYWJsZQorQU1EIDc2MAorCUJ1eiBwZXJmZWN0LXRvbGVyYWJsZQorLS0KK0luIGdlbmVyYWwsIHBlb3BsZSBvbiB0aGUgdXNlciBtYWlsaW5nbGlzdCB3b24ndCBnaXZlIHlvdSBtdWNoIG9mIGEgY2hhbmNlCitpZiB5b3UgaGF2ZSBhIFZJQS1iYXNlZCBtb3RoZXJib2FyZC4gVGhleSBtYXkgYmUgY2hlYXAsIGJ1dCBzb21ldGltZXMsIHlvdSdkCityYXRoZXIgd2FudCB0byBzcGVuZCBzb21lIG1vcmUgbW9uZXkgb24gYmV0dGVyIGJvYXJkcy4gSW4gZ2VuZXJhbCwgVklBCittYWluYm9hcmQncyBJREUvUENJIHBlcmZvcm1hbmNlIHdpbGwgYWxzbyBzdWNrIGJhZGx5IGNvbXBhcmVkIHRvIG90aGVycy4KK1lvdSdsbCBub3RpY2VkIHRoZSBEQzEwKy9EQzMwKyBhcmVuJ3QgbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBvdmVydmlldy4KK0Jhc2ljYWxseSwgeW91IGNhbiBhc3N1bWUgdGhhdCBpZiB0aGUgQnV6IHdvcmtzLCB0aGUgTE1MMzMgd2lsbCB3b3JrIHRvby4gSWYKK3RoZSBMTUwzMyB3b3JrcywgdGhlIERDMTArL0RDMzArIHdpbGwgd29yayB0b28uIFRoZXkncmUgbW9zdCB0b2xlcmFudCB0bworZGlmZmVyZW50IG1haW5ib2FyZCBjaGlwc2V0cyBmcm9tIGFsbCBvZiB0aGUgc3VwcG9ydGVkIGNhcmRzLgorCitJZiB5b3UgZXhwZXJpZW5jZSB0aW1lb3V0cyBkdXJpbmcgY2FwdHVyZSwgYnV5IGEgYmV0dGVyIG1haW5ib2FyZCBvciBsb3dlcgordGhlIHF1YWxpdHkvYnVmZmVyc2l6ZSBkdXJpbmcgY2FwdHVyZSAoc2VlICdDb25jZXJuaW5nIGJ1ZmZlciBzaXplcywgcXVhbGl0eSwKK291dHB1dCBzaXplIGV0Yy4nKS4gSWYgaXQgaGFuZ3MsIHRoZXJlJ3MgbGl0dGxlIHdlIGNhbiBkbyBhcyBvZiBub3cuIENoZWNrCit5b3VyIElSUXMgYW5kIG1ha2Ugc3VyZSB0aGUgY2FyZCBoYXMgaXRzIG93biBpbnRlcnJ1cHRzLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworNC4gUHJvZ3JhbW1pbmcgaW50ZXJmYWNlCisKK1RoaXMgZHJpdmVyIGNvbmZvcm1zIHRvIHZpZGVvNGxpbnV4IGFuZCB2aWRlbzRsaW51eDIsIGJvdGggY2FuIGJlIHVzZWQgdG8KK3VzZSB0aGUgZHJpdmVyLiBTaW5jZSB2aWRlbzRsaW51eCBkaWRuJ3QgcHJvdmlkZSBhZGVxdWF0ZSBjYWxscyB0byBmdWxseQordXNlIHRoZSBjYXJkcycgZmVhdHVyZXMsIHdlJ3ZlIGludHJvZHVjZWQgc2V2ZXJhbCBwcm9ncmFtbWluZyBleHRlbnNpb25zLAord2hpY2ggYXJlIGN1cnJlbnRseSBvZmZpY2lhbGx5IGFjY2VwdGVkIGluIHRoZSAyLjQueCBicmFuY2ggb2YgdGhlIGtlcm5lbC4KK1RoZXNlIGV4dGVuc2lvbnMgYXJlIGtub3duIGFzIHRoZSB2NGwvbWpwZWcgZXh0ZW5zaW9ucy4gU2VlIHpvcmFuLmggZm9yCitkZXRhaWxzIChzdHJ1Y3RzL2lvY3RscykuCisKK0luZm9ybWF0aW9uIC0gdmlkZW80bGludXg6CitodHRwOi8vcm9hZHJ1bm5lci5zd2Fuc2VhLmxpbnV4Lm9yZy51ay92NGxhcGkuc2h0bWwKK0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQVBJLmh0bWwKKy91c3IvaW5jbHVkZS9saW51eC92aWRlb2Rldi5oCisKK0luZm9ybWF0aW9uIC0gdmlkZW80bGludXgvbWpwZWcgZXh0ZW5zaW9uczoKKy4vem9yYW4uaAorKGFsc28gc2VlIGJlbG93KQorCitJbmZvcm1hdGlvbiAtIHZpZGVvNGxpbnV4MjoKK2h0dHA6Ly93d3cudGhlZGlya3Mub3JnL3Y0bDIvCisvdXNyL2luY2x1ZGUvbGludXgvdmlkZW9kZXYyLmgKK2h0dHA6Ly93d3cuYnl0ZXNleC5vcmcvdjRsLworCitNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB2aWRlbzRsaW51eC9tanBlZyBleHRlbnNpb25zLCBieSBTZXJndWVpCitNaXJpZG9ub3ZpIGFuZCBSYWluZXIgSm9oYW5uaToKKy0tCitUaGUgaW9jdGxzIGZvciB0aGF0IGludGVyZmFjZSBhcmUgYXMgZm9sbG93czoKKworQlVaSU9DX0dfUEFSQU1TCitCVVpJT0NfU19QQVJBTVMKKworR2V0IGFuZCBzZXQgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIGJ1ei4gVGhlIHVzZXIgc2hvdWxkIGFsd2F5cyBkbyBhCitCVVpJT0NfR19QQVJBTVMgKHdpdGggYSBzdHJ1Y3QgYnV6X3BhcmFtcykgdG8gb2J0YWluIHRoZSBkZWZhdWx0CitzZXR0aW5ncywgY2hhbmdlIHdoYXQgaGUgbGlrZXMgYW5kIHRoZW4gbWFrZSBhIEJVWklPQ19TX1BBUkFNUyBjYWxsLgorCitCVVpJT0NfUkVRQlVGUworCitCZWZvcmUgYmVpbmcgYWJsZSB0byBjYXB0dXJlL3BsYXliYWNrLCB0aGUgdXNlciBoYXMgdG8gcmVxdWVzdAordGhlIGJ1ZmZlcnMgaGUgaXMgd2FudGluZyB0byB1c2UuIEZpbGwgdGhlIHN0cnVjdHVyZQorem9yYW5fcmVxdWVzdGJ1ZmZlcnMgd2l0aCB0aGUgc2l6ZSAocmVjb21tZW5kZWQ6IDI1NioxMDI0KSBhbmQKK3RoZSBudW1iZXIgKHJlY29tbWVuZGVkIDMyIHVwIHRvIDI1NikuIFRoZXJlIGFyZSBubyBzdWNoIHJlc3RyaWN0aW9ucworYXMgZm9yIHRoZSBWaWRlbyBmb3IgTGludXggYnVmZmVycywgeW91IHNob3VsZCBMRUFWRSBTVUZGSUNJRU5UCitNRU1PUlkgZm9yIHlvdXIgc3lzdGVtIGhvd2V2ZXIsIGVsc2Ugc3RyYW5nZSB0aGluZ3Mgd2lsbCBoYXBwZW4gLi4uLgorT24gcmV0dXJuLCB0aGUgem9yYW5fcmVxdWVzdGJ1ZmZlcnMgc3RydWN0dXJlIGNvbnRhaW5zIG51bWJlciBhbmQKK3NpemUgb2YgdGhlIGFjdHVhbGx5IGFsbG9jYXRlZCBidWZmZXJzLgorWW91IHNob3VsZCB1c2UgdGhlc2UgbnVtYmVycyBmb3IgZG9pbmcgYSBtbWFwIG9mIHRoZSBidWZmZXJzCitpbnRvIHRoZSB1c2VyIHNwYWNlLgorVGhlIEJVWklPQ19SRVFCVUZTIGlvY3RsIGFsc28gbWFrZXMgaXQgaGFwcGVuLCB0aGF0IHRoZSBuZXh0IG1tYXAKK21hcHMgdGhlIE1KUEVHIGJ1ZmZlciBpbnN0ZWFkIG9mIHRoZSBWNEwgYnVmZmVycy4KKworQlVaSU9DX1FCVUZfQ0FQVAorQlVaSU9DX1FCVUZfUExBWQorCitRdWV1ZSBhIGJ1ZmZlciBmb3IgY2FwdHVyZSBvciBwbGF5YmFjay4gVGhlIGZpcnN0IGNhbGwgYWxzbyBzdGFydHMKK3N0cmVhbWluZyBjYXB0dXJlLiBXaGVuIHN0cmVhbWluZyBjYXB0dXJlIGlzIGdvaW5nIG9uLCB5b3UgbWF5Citvbmx5IHF1ZXVlIGZ1cnRoZXIgYnVmZmVycyBvciBpc3N1ZSBzeW5jcyB1bnRpbCBzdHJlYW1pbmcKK2NhcHR1cmUgaXMgc3dpdGNoZWQgb2ZmIGFnYWluIHdpdGggYSBhcmd1bWVudCBvZiAtMSB0bworYSBCVVpJT0NfUUJVRl9DQVBUL0JVWklPQ19RQlVGX1BMQVkgaW9jdGwuCisKK0JVWklPQ19TWU5DCisKK0lzc3VlIHRoaXMgaW9jdGwgd2hlbiBhbGwgYnVmZmVycyBhcmUgcXVldWVkLiBUaGlzIGlvY3RsIHdpbGwKK2Jsb2NrIHVudGlsIHRoZSBmaXJzdCBidWZmZXIgYmVjb21lcyBmcmVlIGZvciBzYXZpbmcgaXRzCitkYXRhIHRvIGRpc2sgKGFmdGVyIEJVWklPQ19RQlVGX0NBUFQpIG9yIGZvciByZXVzZSAoYWZ0ZXIgQlVaSU9DX1FCVUZfUExBWSkuCisKK0JVWklPQ19HX1NUQVRVUworCitHZXQgdGhlIHN0YXR1cyBvZiB0aGUgaW5wdXQgbGluZXMgKHZpZGVvIHNvdXJjZSBjb25uZWN0ZWQvbm9ybSkuCisKK0ZvciBwcm9ncmFtbWluZyBleGFtcGxlLCBwbGVhc2UsIGxvb2sgYXQgbGF2cmVjLmMgYW5kIGxhdnBsYXkuYyBjb2RlIGluCitsYXZ0b29scy0xLjJwMiBwYWNrYWdlIChVUkw6IGh0dHA6Ly93d3cuY2ljZXNlLm14L35taXJzZXYvREMxMHBsdXMvKQorYW5kIHRoZSAnZXhhbXBsZXMnIGRpcmVjdG9yeSBpbiB0aGUgb3JpZ2luYWwgQnV6IGRyaXZlciBkaXN0cmlidXRpb24uCisKK0FkZGl0aW9uYWwgbm90ZXMgZm9yIHNvZnR3YXJlIGRldmVsb3BlcnM6CisKKyAgIFRoZSBkcml2ZXIgcmV0dXJucyBtYXh3aWR0aCBhbmQgbWF4aGVpZ2h0IHBhcmFtZXRlcnMgYWNjb3JkaW5nIHRvCisgICB0aGUgY3VycmVudCBUViBzdGFuZGFyZCAobm9ybSkuIFRoZXJlZm9yZSwgdGhlIHNvZnR3YXJlIHdoaWNoCisgICBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZHJpdmVyIGFuZCAiYXNrcyIgZm9yIHRoZXNlIHBhcmFtZXRlcnMgc2hvdWxkCisgICBmaXJzdCBzZXQgdGhlIGNvcnJlY3Qgbm9ybS4gV2VsbCwgaXQgc2VlbXMgbG9naWNhbGx5IGNvcnJlY3Q6IFRWCisgICBzdGFuZGFyZCBpcyAibW9yZSBjb25zdGFudCIgZm9yIGN1cnJlbnQgY291bnRyeSB0aGFuIGdlb21ldHJ5CisgICBzZXR0aW5ncyBvZiBhIHZhcmlldHkgb2YgVFYgY2FwdHVyZSBjYXJkcyB3aGljaCBtYXkgd29yayBpbiBJVFUgb3IKKyAgIHNxdWFyZSBwaXhlbCBmb3JtYXQuIFJlbWVtYmVyIHRoYXQgdXNlcnMgbm93IGNhbiBsb2NrIHRoZSBub3JtIHRvCisgICBhdm9pZCBhbnkgYW1iaWd1aXR5LgorLS0KK1BsZWFzZSBub3RlIHRoYXQgbGF2cGxheS9sYXZyZWMgYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIE1KUEVHLXRvb2xzCisoaHR0cDovL21qcGVnLnNmLm5ldC8pLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworNS4gQXBwbGljYXRpb25zCisKK0FwcGxpY2F0aW9ucyBrbm93biB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXI6CisKK1RWIHZpZXdpbmc6CisqIHhhd3R2CisqIGt3aW50dgorKiBwcm9iYWJseSBhbnkgVFYgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0cyB2aWRlbzRsaW51eCBvciB2aWRlbzRsaW51eDIuCisKK01KUEVHIGNhcHR1cmUvcGxheWJhY2s6CisqIG1qcGVndG9vbHMvbGF2dG9vbHMgKG9yIExpbnV4IFZpZGVvIFN0dWRpbykKKyogZ3N0cmVhbWVyCisqIG1wbGF5ZXIKKworR2VuZXJhbCByYXcgY2FwdHVyZToKKyogeGF3dHYKKyogZ3N0cmVhbWVyCisqIHByb2JhYmx5IGFueSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIHZpZGVvNGxpbnV4IG9yIHZpZGVvNGxpbnV4MgorCitWaWRlbyBlZGl0aW5nOgorKiBDaW5lbGVycmEKKyogTWFpbkFjdG9yCisqIG1qcGVndG9vbHMgKG9yIExpbnV4IFZpZGVvIFN0dWRpbykKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzYuIENvbmNlcm5pbmcgYnVmZmVyIHNpemVzLCBxdWFsaXR5LCBvdXRwdXQgc2l6ZSBldGMuCisKK1RoZSB6cjM2MDYwIGNhbiBkbyAxOjIgSlBFRyBjb21wcmVzc2lvbi4gVGhpcyBpcyByZWFsbHkgdGhlIHRoZW9yZXRpY2FsCittYXhpbXVtIHRoYXQgdGhlIGNoaXBzZXQgY2FuIHJlYWNoLiBUaGUgZHJpdmVyIGNhbiwgaG93ZXZlciwgbGltaXQgY29tcHJlc3Npb24KK3RvIGEgbWF4aW11bSAoc2l6ZSkgb2YgMTo0LiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgc29tZSBjYXJkcyAoZS5nLiBCdXopCitjYW4ndCBoYW5kbGUgMToyIGNvbXByZXNzaW9uIHdpdGhvdXQgc3RvcHBpbmcgY2FwdHVyZSBhZnRlciBvbmx5IGEgZmV3IG1pbnV0ZXMuCitXaXRoIDE6NCwgaXQnbGwgbW9zdGx5IHdvcmsuIElmIHlvdSBoYXZlIGEgQnV6LCB1c2UgJ2xvd19iaXRyYXRlPTEnIHRvIGdvIGludG8KKzE6NCBtYXguIGNvbXByZXNzaW9uIG1vZGUuCisKKzEwMCUgSlBFRyBxdWFsaXR5IGlzIHRodXMgMToyIGNvbXByZXNzaW9uIGluIHByYWN0aWNlLiBTbyBmb3IgYSBmdWxsIFBBTCBmcmFtZQorKHNpemUgNzIweDU3NikuIFRoZSBKUEVHIGZpZWxkcyBhcmUgc3RvcmVkIGluIFlVWTIgZm9ybWF0LCBzbyB0aGUgc2l6ZSBvZiB0aGUKK2ZpZWxkcyBhcmUgNzIweDI4OHgxNi8yIGJpdHMvZmllbGQgKDIgZmllbGRzL2ZyYW1lKSA9IDIwNzM2MCBieXRlcy9maWVsZCB4IDIgPQorNDE0NzIwIGJ5dGVzL2ZyYW1lIChhZGQgc29tZSBtb3JlIGJ5dGVzIGZvciBoZWFkZXJzIGFuZCBESFQgKGh1ZmZtYW4pL0RRVAorKHF1YW50aXphdGlvbikgdGFibGVzLCBhbmQgeW91J2xsIGdldCB0byBzb21ldGhpbmcgbGlrZSA1MTJrQiBwZXIgZnJhbWUgZm9yCisxOjIgY29tcHJlc3Npb24uIEZvciAxOjQgY29tcHJlc3Npb24sIHlvdSdkIGhhdmUgZnJhbWVzIG9mIGhhbGYgdGhpcyBzaXplLgorCitTb21lIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24gYnkgTWFydGluIFNhbXVlbHNzb24sIHdoaWNoIGFsc28gZXhwbGFpbnMgdGhlCitpbXBvcnRhbmNlIG9mIGJ1ZmZlciBzaXplczoKKy0tCis+IEhtbSwgSSBkbyBub3QgdGhpbmsgaXQgaXMgcmVhbGx5IHRoYXQgd2F5LiBXaXRoIHRoZSBjdXJyZW50IChkb3dubG9hZGVkCis+IGF0IDE4OjAwIE1vbmRheSkgZHJpdmVyIEkgZ2V0IHRoYXQgb3V0cHV0IHNpemVzIGZvciAxMCBzZWM6Cis+IC1xIDUwIC1iIDEyOCA6IDI0LjI4My4zMzIgQnl0ZXMKKz4gLXEgNTAgLWIgMjU2IDogNDguNDQyLjM2OAorPiAtcSAyNSAtYiAxMjggOiAyNC42NTUuOTkyCis+IC1xIDI1IC1iIDI1NiA6IDI1Ljg1OS44MjAKKworSSB3b2tlIHVwLCBhbmQgY2FuJ3QgZ28gdG8gc2xlZXAgYWdhaW4uIEknbGwga2lsbCBzb21lIHRpbWUgZXhwbGFpbmluZyB3aHkgCit0aGlzIGRvZXNuJ3QgbG9vayBzdHJhbmdlIHRvIG1lLgorCitMZXQncyBkbyBzb21lIG1hdGggdXNpbmcgYSB3aWR0aCBvZiA3MDQgcGl4ZWxzLiBJJ20gbm90IHN1cmUgd2hldGhlciB0aGUgQnV6IAorYWN0dWFsbHkgdXNlIHRoYXQgbnVtYmVyIG9yIG5vdCwgYnV0IHRoYXQncyBub3QgdG9vIGltcG9ydGFudCByaWdodCBub3cuCisKKzcwNHgyODggcGl4ZWxzLCBvbmUgZmllbGQsIGlzIDIwMjc1MiBwaXhlbHMuIERpdmlkZWQgYnkgNjQgcGl4ZWxzIHBlciBibG9jazsgCiszMTY4IGJsb2NrcyBwZXIgZmllbGQuIEVhY2ggcGl4ZWwgY29uc2lzdCBvZiB0d28gYnl0ZXM7IDEyOCBieXRlcyBwZXIgYmxvY2s7IAorMTAyNCBiaXRzIHBlciBibG9jay4gMTAwJSBpbiB0aGUgbmV3IGRyaXZlciBtZWFuIDE6MiBjb21wcmVzc2lvbjsgdGhlIG1heGltdW0gCitvdXRwdXQgYmVjb21lcyA1MTIgYml0cyBwZXIgYmxvY2suIEFjdHVhbGx5IDUxMCwgYnV0IDUxMiBpcyBzaW1wbGVyIHRvIHVzZSAKK2ZvciBjYWxjdWxhdGlvbnMuCisKK0xldCdzIHNheSB0aGF0IHdlIHNwZWNpZnkgZDFxNTAuIFdlIHRodXMgd2FudCAyNTYgYml0cyBwZXIgYmxvY2s7IHRpbWVzIDMxNjggCitiZWNvbWVzIDgxMTAwOCBiaXRzOyAxMDEzNzYgYnl0ZXMgcGVyIGZpZWxkLiBXZSdyZSB0YWxraW5nIHJhdyBiaXRzIGFuZCBieXRlcyAKK2hlcmUsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IGZhbmN5IGNvcnJlY3Rpb25zIGZvciBiaXRzLXBlci1waXhlbCBvciBzdWNoIAordGhpbmdzLiAxMDEzNzYgYnl0ZXMgcGVyIGZpZWxkLgorCitkMSB2aWRlbyBjb250YWlucyB0d28gZmllbGRzIHBlciBmcmFtZS4gVGhvc2Ugc3VtIHVwIHRvIDIwMjc1MiBieXRlcyBwZXIgCitmcmFtZSwgYW5kIG9uZSBvZiB0aG9zZSBmcmFtZXMgZ29lcyBpbnRvIGVhY2ggYnVmZmVyLgorCitCdXQgd2FpdCBhIHNlY29uZCEgLWIxMjggZ2l2ZXMgMTI4a0IgYnVmZmVycyEgSXQncyBub3QgcG9zc2libGUgdG8gY3JhbSAKKzIwMjc1MiBieXRlcyBvZiBKUEVHIGRhdGEgaW50byAxMjhrQiEKKworVGhpcyBpcyB3aGF0IHRoZSBkcml2ZXIgbm90aWNlIGFuZCBhdXRvbWF0aWNhbGx5IGNvbXBlbnNhdGUgZm9yIGluIHlvdXIgCitleGFtcGxlcy4gTGV0J3MgZG8gc29tZSBtYXRoIHVzaW5nIHRoaXMgaW5mb3JtYXRpb246CisKKzEyOGtCIGlzIDEzMTA3MiBieXRlcy4gSW4gdGhpcyBidWZmZXIsIHdlIHdhbnQgdG8gc3RvcmUgdHdvIGZpZWxkcywgd2hpY2ggCitsZWF2ZXMgNjU1MzYgYnl0ZXMgZm9yIGVhY2ggZmllbGQuIFVzaW5nIDMxNjggYmxvY2tzIHBlciBmaWVsZCwgd2UgZ2V0IAorMjAuNjg2ODY4NjguLi4gYXZhaWxhYmxlIGJ5dGVzIHBlciBibG9jazsgMTY1IGJpdHMuIFdlIGNhbid0IGFsbG93IHRoZSAKK3JlcXVlc3QgZm9yIDI1NiBiaXRzIHBlciBibG9jayB3aGVuIHRoZXJlJ3Mgb25seSAxNjUgYml0cyBhdmFpbGFibGUhIFRoZSAtcTUwIAorb3B0aW9uIGlzIHNpbGVudGx5IG92ZXJyaWRkZW4sIGFuZCB0aGUgLWIxMjggb3B0aW9uIHRha2VzIHByZWNlZGVuY2UsIGxlYXZpbmcgCit1cyB3aXRoIHRoZSBlcXVpdmFsZW5jZSBvZiAtcTMyLgorCitUaGlzIGdpdmVzIHVzIGEgZGF0YSByYXRlIG9mIDE2NSBiaXRzIHBlciBibG9jaywgd2hpY2gsIHRpbWVzIDMxNjgsIHN1bXMgdXAgCit0byA2NTM0MCBieXRlcyBwZXIgZmllbGQsIG91dCBvZiB0aGUgYWxsb3dlZCA2NTUzNi4gVGhlIGN1cnJlbnQgZHJpdmVyIGhhcyAKK2Fub3RoZXIgbGV2ZWwgb2YgcmF0ZSBsaW1pdGluZzsgaXQgd29uJ3QgYWNjZXB0IC1xIHZhbHVlcyB0aGF0IGZpbGwgbW9yZSB0aGFuIAorNi84IG9mIHRoZSBzcGVjaWZpZWQgYnVmZmVycy4gKEknbSBub3Qgc3VyZSB3aHkuICJQbGF5aW5nIGl0IHNhZmUiIHNlZW0gdG8gYmUgCithIHNhZmUgYmV0LiBQZXJzb25hbGx5LCBJIHRoaW5rIEkgd291bGQgaGF2ZSBsb3dlcmVkIHJlcXVlc3RlZC1iaXRzLXBlci1ibG9jayAKK2J5IG9uZSwgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4pIFdlIGNhbid0IHVzZSAxNjUgYml0cyBwZXIgYmxvY2ssIGJ1dCBoYXZlIHRvIAorbG93ZXIgaXQgYWdhaW4sIHRvIDYvOCBvZiB0aGUgYXZhaWxhYmxlIGJ1ZmZlciBzcGFjZTogV2UgZW5kIHVwIHdpdGggMTI0IGJpdHMgCitwZXIgYmxvY2ssIHRoZSBlcXVpdmFsZW5jZSBvZiAtcTI0LiBXaXRoIDEyOGtCIGJ1ZmZlcnMsIHlvdSBjYW4ndCB1c2UgZ3JlYXRlciAKK3RoYW4gLXEyNCBhdCAtZDEuIChBbmQgUEFMLCBhbmQgNzA0IHBpeGVscyB3aWR0aC4uLikKKworVGhlIHRoaXJkIGV4YW1wbGUgaXMgbGltaXRlZCB0byAtcTI0IHRocm91Z2ggdGhlIHNhbWUgcHJvY2Vzcy4gVGhlIHNlY29uZCAKK2V4YW1wbGUsIHVzaW5nIHZlcnkgc2ltaWxhciBjYWxjdWxhdGlvbnMsIGlzIGxpbWl0ZWQgdG8gLXE0OC4gVGhlIG9ubHkgCitleGFtcGxlIHRoYXQgYWN0dWFsbHkgZ3JhYiBhdCB0aGUgc3BlY2lmaWVkIC1xIHZhbHVlIGlzIHRoZSBsYXN0IG9uZSwgd2hpY2ggCitpcyBjbGVhcmx5IHZpc2libGUsIGxvb2tpbmcgYXQgdGhlIGZpbGUgc2l6ZS4KKy0tCisKK0NvbmNsdXNpb246IHRoZSBxdWFsaXR5IG9mIHRoZSByZXN1bHRpbmcgbW92aWUgZGVwZW5kcyBvbiBidWZmZXIgc2l6ZSwgcXVhbGl0eSwKK3doZXRoZXIgb3Igbm90IHlvdSB1c2UgJ2xvd19iaXRyYXRlPTEnIGFzIGluc21vZCBvcHRpb24gZm9yIHRoZSB6cjM2MDYwLmMKK21vZHVsZSB0byBkbyAxOjQgaW5zdGVhZCBvZiAxOjIgY29tcHJlc3Npb24sIGV0Yy4KKworSWYgeW91IGV4cGVyaWVuY2UgdGltZW91dHMsIGxvd2VyaW5nIHRoZSBxdWFsaXR5L2J1ZmZlcnNpemUgb3IgdXNpbmcKKydsb3dfYml0cmF0ZT0xIGFzIGluc21vZCBvcHRpb24gZm9yIHpyMzYwNjAubyBtaWdodCBhY3R1YWxseSBoZWxwLCBhcyBpcworcHJvdmVuIGJ5IHRoZSBCdXouCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis3LiBJdCBoYW5ncy9jcmFzaGVzL2ZhaWxzL3doYXRldmVycyEgSGVscCEKKworTWFrZSBzdXJlIHRoYXQgdGhlIGNhcmQgaGFzIGl0cyBvd24gaW50ZXJydXB0cyAoc2VlIC9wcm9jL2ludGVycnVwdHMpLCBjaGVjawordGhlIG91dHB1dCBvZiBkbWVzZyBhdCBoaWdoIHZlcmJvc2l0eSAobG9hZCB6cjM2MDY3Lm8gd2l0aCBkZWJ1Zz0yLAorbG9hZCBhbGwgb3RoZXIgbW9kdWxlcyB3aXRoIGRlYnVnPTEpLiBDaGVjayB0aGF0IHlvdXIgbWFpbmJvYXJkIGlzIGZhdm9yYWJsZQorKHNlZSBxdWVzdGlvbiAyKSBhbmQgaWYgbm90LCB0ZXN0IHRoZSBjYXJkIGluIGFub3RoZXIgY29tcHV0ZXIuIEFsc28gc2VlIHRoZQorbm90ZXMgZ2l2ZW4gaW4gcXVlc3Rpb24gMyBhbmQgdHJ5IGxvd2VyaW5nIHF1YWxpdHkvYnVmZmVyc2l6ZS9jYXB0dXJlc2l6ZQoraWYgcmVjb3JkaW5nIGZhaWxzIGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUuCisKK0lmIGFsbCB0aGlzIGRvZXNuJ3QgaGVscCwgZ2l2ZSBhIGNsZWFyIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9ibGVtIGluY2x1ZGluZworZGV0YWlsZWQgaGFyZHdhcmUgaW5mb3JtYXRpb24gKG1lbW9yeSticmFuZCwgbWFpbmJvYXJkK2NoaXBzZXQrYnJhbmQsIHdoaWNoCitNSlBFRyBjYXJkLCBwcm9jZXNzb3IsIG90aGVyIFBDSSBjYXJkcyB0aGF0IG1pZ2h0IGJlIG9mIGludGVyZXN0KSwgZ2l2ZSB0aGUKK3N5c3RlbSBQblAgaW5mb3JtYXRpb24gKC9wcm9jL2ludGVycnVwdHMsIC9wcm9jL2RtYSwgL3Byb2MvZGV2aWNlcyksIGFuZCBnaXZlCit0aGUga2VybmVsIHZlcnNpb24sIGRyaXZlciB2ZXJzaW9uLCBnbGliYyB2ZXJzaW9uLCBnY2MgdmVyc2lvbiBhbmQgYW55IG90aGVyCitpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IHBvc3NpYmx5IGJlIG9mIGludGVyZXN0LiBBbHNvIHByb3ZpZGUgdGhlIGRtZXNnIG91dHB1dAorYXQgaGlnaCB2ZXJib3NpdHkuIFNlZSAnQ29udGFjdGluZycgb24gaG93IHRvIGNvbnRhY3QgdGhlIGRldmVsb3BlcnMuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis4LiBNYWludGFpbmVycy9Db250YWN0aW5nCisKK1RoZSBkcml2ZXIgaXMgY3VycmVudGx5IG1haW50YWluZWQgYnkgTGF1cmVudCBQaW5jaGFydCBhbmQgUm9uYWxkIEJ1bHRqZQorKDxsYXVyZW50LnBpbmNoYXJ0QHNreW5ldC5iZT4gYW5kIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+KS4gRm9yIGJ1ZworcmVwb3J0cyBvciBxdWVzdGlvbnMsIHBsZWFzZSBjb250YWN0IHRoZSBtYWlsaW5nbGlzdCBpbnN0ZWFkIG9mIHRoZSBkZXZlbG9wZXJzCitpbmRpdmlkdWFsbHkuIEZvciB1c2VyIHF1ZXN0aW9ucyAoaS5lLiBidWcgcmVwb3J0cyBvciBob3ctdG8gcXVlc3Rpb25zKSwgc2VuZAorYW4gZW1haWwgdG8gPG1qcGVnLXVzZXJzQGxpc3RzLnNmLm5ldD4sIGZvciBkZXZlbG9wZXJzIChpLmUuIGlmIHlvdSB3YW50IHRvCitoZWxwIHByb2dyYW1taW5nKSwgc2VuZCBhbiBlbWFpbCB0byA8bWpwZWctZGV2ZWxvcGVyQGxpc3RzLnNmLm5ldD4uIFNlZQoraHR0cDovL3d3dy5zZi5uZXQvcHJvamVjdHMvbWpwZWcvIGZvciBzdWJzY3JpcHRpb24gaW5mb3JtYXRpb24uCisKK0ZvciBidWcgcmVwb3J0cywgYmUgc3VyZSB0byBpbmNsdWRlIGFsbCB0aGUgaW5mb3JtYXRpb24gYXMgZGVzY3JpYmVkIGluCit0aGUgc2VjdGlvbiAnSXQgaGFuZ3MvY3Jhc2hlcy9mYWlscy93aGF0ZXZlcnMhIEhlbHAhJy4gUGxlYXNlIG1ha2Ugc3VyZQoreW91J3JlIHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiAoaHR0cDovL21qcGVnLnNmLm5ldC9kcml2ZXItem9yYW4vKS4KKworUHJldmlvdXMgbWFpbnRhaW5lcnMvZGV2ZWxvcGVycyBvZiB0aGlzIGRyaXZlciBpbmNsdWRlIFNlcmd1ZWkgTWlyaWRvbm92Cis8bWlyc2V2QGNpY2VzZS5teD4sIFdvbGZnYW5nIFNjaGVyciA8c2NoZXJyQG5ldDR5b3UubmV0PiwgRGF2ZSBQZXJrcworPGRwZXJrc0BpYm0ubmV0PiBhbmQgUmFpbmVyIEpvaGFubmkgPFJhaW5lckBKb2hhbm5pLmRlPi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzkuIExpY2Vuc2UKKworVGhpcyBkcml2ZXIgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK1NlZSBodHRwOi8vd3d3LmdudS5vcmcvIGZvciBtb3JlIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0NPTlRSSUJVVE9SUyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9DT05UUklCVVRPUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmNDlkYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9DT05UUklCVVRPUlMKQEAgLTAsMCArMSwyNSBAQAorQ29udHJpYnV0b3JzIHRvIGJ0dHY6IAorCitNaWNoYWVsIENodSA8bW1jaHVAcG9ib3guY29tPgorICBBdmVyTWVkaWEgZml4IGFuZCBtb3JlIGZsZXhpYmxlIGNhcmQgcmVjb2duaXRpb24KKworQWxhbiBDb3ggPGFsYW5AcmVkaGF0LmNvbT4KKyAgVmlkZW80TGludXggaW50ZXJmYWNlIGFuZCAyLjEueCBrZXJuZWwgYWRhcHRhdGlvbgorCitDaHJpcyBLbGVpdHNjaAorICBIYXJkd2FyZSBJMkMKKyAgCitHZXJkIEtub3JyIDxrcmF4ZWxAY3MudHUtYmVybGluLmRlPiAKKyAgUmFkaW8gY2FyZCAoSVRUIHNvdW5kIHByb2Nlc3NvcikKKworYmlnZm9vdCA8YmlnZm9vdEBuZXQtd2F5Lm5ldD4KK1JhZ25hciBIb2psYW5kIEVzcGlub3NhIDxyYWduYXJAbWFjdWxhLm5ldD4KKyAgQ29uZmVyZW5jZVRWIGNhcmQKKworCisrIG1hbnkgbW9yZSAocGxlYXNlIG1haWwgbWUgaWYgeW91IGFyZSBtaXNzaW5nIGluIHRoaXMgbGlzdCBhbmQgd291bGQKKyAgICAgICAgICAgICBsaWtlIHRvIGJlIG1lbnRpb25lZCkKKworCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0NhcmRzIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0NhcmRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmOGM3ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvQ2FyZHMKQEAgLTAsMCArMSw5NjQgQEAKKworR3VudGhlciBNYXllcidzIGJ0dHYgY2FyZCBnYWxsZXJ5IChncmFwaGljYWwgdmVyc2lvbiBvZiB0aGlzIHRleHQgZmlsZSA6LSkKK2lzIGF2YWlsYWJsZSBhdDogaHR0cDovL3d3dy5idHR2LWdhbGxlcnkuZGUvCisKKworU3VwcG9ydGVkIGNhcmRzOgorQnQ4NDgvQnQ4NDhhL0J0ODQ5L0J0ODc4L0J0ODc5IGNhcmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIGNhcmRzIHdpdGggQnQ4NDgvQnQ4NDhhL0J0ODQ5L0J0ODc4L0J0ODc5IGFuZCBub3JtYWwKK0NvbXBvc2l0ZS9TLVZIUyBpbnB1dHMgYXJlIHN1cHBvcnRlZC4gIFRlbGV0ZXh0IGFuZCBJbnRlcmNhc3Qgc3VwcG9ydAorKFBBTCBvbmx5KSBmb3IgQUxMIGNhcmRzIHZpYSBWQkkgc2FtcGxlIGRlY29kaW5nIGluIHNvZnR3YXJlLgorCitTb21lIGNhcmRzIHdpdGggYWRkaXRpb25hbCBtdWx0aXBsZXhpbmcgb2YgaW5wdXRzIG9yIG90aGVyIGFkZGl0aW9uYWwKK2ZhbmN5IGNoaXBzIGFyZSBvbmx5IHBhcnRpYWxseSBzdXBwb3J0ZWQgKHVubGVzcyBzcGVjaWZpY2F0aW9ucyBieSB0aGUKK2NhcmQgbWFudWZhY3R1cmVyIGFyZSBnaXZlbikuICBXaGVuIGEgY2FyZCBpcyBsaXN0ZWQgaGVyZSBpdCBpc24ndAorbmVjZXNzYXJpbHkgZnVsbHkgc3VwcG9ydGVkLgorCitBbGwgb3RoZXIgY2FyZHMgb25seSBkaWZmZXIgYnkgYWRkaXRpb25hbCBjb21wb25lbnRzIGFzIHR1bmVycywgc291bmQKK2RlY29kZXJzLCBFRVBST01zLCB0ZWxldGV4dCBkZWNvZGVycyAuLi4KKworCitVbnN1cHBvcnRlZCBDYXJkczogCistLS0tLS0tLS0tLS0tLS0tLS0KKworQ2FyZHMgd2l0aCBab3JhbiAoWlIpIG9yIFBoaWxpcHMgKFNBQSkgb3IgSVNBIGFyZSBub3Qgc3VwcG9ydGVkIGJ5Cit0aGlzIGRyaXZlci4KKworCitNQVRSSVggVmlzaW9uCistLS0tLS0tLS0tLS0tCisKK01WLURlbHRhCistIEJ0ODQ4QQorLSA0IENvbXBvc2l0ZSBpbnB1dHMsIDEgUy1WSFMgaW5wdXQgKHNoYXJlZCB3aXRoIDR0aCBjb21wb3NpdGUpCistIEVFUFJPTQorCitodHRwOi8vd3d3Lm1hdHJpeC12aXNpb24uZGUvCisKK1RoaXMgY2FyZCBoYXMgbm8gdHVuZXIgYnV0IHN1cHBvcnRzIGFsbCA0IGNvbXBvc2l0ZSAoMSBzaGFyZWQgd2l0aCBhbgorUy1WSFMgaW5wdXQpIG9mIHRoZSBCdDg0OEEuCitWZXJ5IG5pY2UgY2FyZCBpZiB5b3Ugb25seSBoYXZlIHNhdGVsbGl0ZSBUViBidXQgc2V2ZXJhbCB0dW5lcnMgY29ubmVjdGVkCit0byB0aGUgY2FyZCB2aWEgY29tcG9zaXRlLgorCitNYW55IHRoYW5rcyB0byBNYXRyaXgtVmlzaW9uIGZvciBnaXZpbmcgdXMgMiBjYXJkcyBmb3IgZnJlZSB3aGljaCBtYWRlCitCdDg0OGEvQnQ4NDkgc2luZ2xlIGNyeXRhbCBvcGVyYXRpb24gc3VwcG9ydCBwb3NzaWJsZSEhIQorCisKKworTWlyby9QaW5uYWNsZSBQQ1RWCistLS0tLS0tLS0tLS0tLS0tLS0KKworLSBCdDg0OCAKKyAgc29tZSAoYWxsPz8pIGNvbWUgd2l0aCAyIGNyeXN0YWxzIGZvciBQQUwvU0VDQU0gYW5kIE5UU0MgCistIFBBTCwgU0VDQU0gb3IgTlRTQyBUViB0dW5lciAoUGhpbGlwcyBvciBURU1JQykKKy0gTVNQMzR4eCBzb3VuZCBkZWNvZGVyIG9uIGFkZCBvbiBib2FyZAorICBkZWNvZGVyIGlzIHN1cHBvcnRlZCBidXQgQUZBSUsgZG9lcyBub3QgeWV0IHdvcmsgCisgIChvdGhlciBzb3VuZCBNVVggc2V0dGluZyBpbiBHUElPIHBvcnQgbmVlZGVkPz8/IHNvbWVib2R5IHdobyBmaXhlZCB0aGlzPz8/KQorLSAxIHR1bmVyLCAxIGNvbXBvc2l0ZSBhbmQgMSBTLVZIUyBpbnB1dAorLSB0dW5lciB0eXBlIGlzIGF1dG9kZXRlY3RlZAorCitodHRwOi8vd3d3Lm1pcm8uZGUvCitodHRwOi8vd3d3Lm1pcm8uY29tLworCisKK01hbnkgdGhhbmtzIGZvciB0aGUgZnJlZSBjYXJkIHdoaWNoIG1hZGUgZmlyc3QgTlRTQyBzdXBwb3J0IHBvc3NpYmxlIGJhY2sKK2luIDE5OTchCisKKworSGF1cHBhdWdlIFdpbi9UViBwY2kKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSBtYW55IGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgSGF1cHBhdWdlIGNhcmRzIHdpdGggZGlmZmVyZW50IAordHVuZXJzIChUVitSYWRpbyAuLi4pLCB0ZWxldGV4dCBkZWNvZGVycy4KK05vdGUgdGhhdCBldmVuIGNhcmRzIHdpdGggc2FtZSBtb2RlbCBudW1iZXJzIGhhdmUgKGRlcGVuZGluZyBvbiB0aGUgcmV2aXNpb24pCitkaWZmZXJlbnQgY2hpcHMgb24gaXQuCisKKy0gQnQ4NDggKGFuZCBvdGhlcnMgYnV0IGFsd2F5cyBpbiAyIGNyeXN0YWwgb3BlcmF0aW9uPz8/KQorICBuZXdlciBjYXJkcyBoYXZlIGEgQnQ4NzgKKy0gUEFMLCBTRUNBTSwgTlRTQyBvciB0dW5lciB3aXRoIG9yIHdpdGhvdXQgUmFkaW8gc3VwcG9ydAorCitlLmcuOgorICBQQUw6IAorICBUREE1NzM3OiBWSEYsIGh5cGVyYmFuZCBhbmQgVUhGIG1peGVyL29zY2lsbGF0b3IgZm9yIFRWIGFuZCBWQ1IgMy1iYW5kIHR1bmVycworICBUU0E1NTIyOiAxLjQgR0h6IEkyQy1idXMgY29udHJvbGxlZCBzeW50aGVzaXplciwgSTJDIDB4YzItMHhjMworICAKKyAgTlRTQzoKKyAgVERBNTczMTogVkhGLCBoeXBlcmJhbmQgYW5kIFVIRiBtaXhlci9vc2NpbGxhdG9yIGZvciBUViBhbmQgVkNSIDMtYmFuZCB0dW5lcnMKKyAgVFNBNTUxODogbm8gZGF0YXNoZWV0IGF2YWlsYWJsZSBvbiBQaGlsaXBzIHNpdGUKKy0gUGhpbGlwcyBTQUE1MjQ2IG9yIFNBQTUyODQgKCBvciBubykgVGVsZXRleHQgZGVjb2RlciBjaGlwCQorICB3aXRoIGJ1ZmZlciBSQU0gKGUuZy4gV2luYm9uZCBXMjQyNTdBUy0zNTogMzJLeDggQ01PUyBzdGF0aWMgUkFNKQorICBTQUE1MjQ2IChJMkMgMHgyMikgaXMgc3VwcG9ydGVkCistIDI1NiBieXRlcyBFRVBST006IE1pY3JvY2hpcCAyNExDMDJCIG9yIFBoaWxpcHMgODU4MkUyWSAKKyAgd2l0aCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCisgIEkyQyBhZGRyZXNzIDB4YTAgKDI0TEMwMkIgYWxzbyByZXNwb25kcyB0byAweGEyLTB4YWYpCistIDEgdHVuZXIsIDEgY29tcG9zaXRlIGFuZCAoZGVwZW5kaW5nIG9uIG1vZGVsKSAxIFMtVkhTIGlucHV0CistIDE0MDUyQjogbXV4IGZvciBzZWxlY3Rpb24gb2Ygc291bmQgc291cmNlCistIHNvdW5kIGRlY29kZXI6IFREQTk4MDAsIE1TUDM0eHggKHN0ZXJlbyBjYXJkcykgCisKKworQXNrZXkgQ1BILVNlcmllcworLS0tLS0tLS0tLS0tLS0tLQorRGV2ZWxvcGVkIGJ5IFRlbFNpZ25hbCg/KSwgT0VNZWQgYnkgbWFueSB2ZW5kb3JzIChUeXBob29uLCBBbnViaXMsIER5bmFsaW5rKQorCisgIENhcmQgc2VyaWVzOgorICAgIENQSDAxeDogQlQ4NDggY2FwdHVyZSBvbmx5CisgICAgQ1BIMDN4OiBCVDg0OAorICAgIENQSDA1eDogQlQ4Nzggd2l0aCBGTQorICAgIENQSDA2eDogQlQ4NzggKHcvbyBGTSkKKyAgICBDUEgwN3g6IEJUODc4IGNhcHR1cmUgb25seQorIAorICBUViBzdGFuZGFyZHM6CisgICAgIENQSDB4MDogTlRTQy1NL00KKyAgICAgQ1BIMHgxOiBQQUwtQi9HCisgICAgIENQSDB4MjogUEFMLUkvSQorICAgICBDUEgweDM6IFBBTC1EL0sKKyAgICAgQ1BIMHg0OiBTRUNBTS1ML0wgCisgICAgIENQSDB4NTogU0VDQU0tQi9HIAorICAgICBDUEgweDY6IFNFQ0FNLUQvSyAKKyAgICAgQ1BIMHg3OiBQQUwtTi9OIAorICAgICBDUEgweDg6IFBBTC1CL0ggCisgICAgIENQSDB4OTogUEFMLU0vTQorCisgIENQSDAzeCB3YXMgb2Z0ZW4gc29sZCBhcyAiVFYgY2FwdHVyZXIiLgorCisgIElkZW50aWZ5aW5nOgorICAxKSA4NzggY2FyZHMgY2FuIGJlIGlkZW50aWZpZWQgYnkgUENJIFN1YnN5c3RlbS1JRDoKKyAgICAgIDE0NGY6MzAwMCA9IENQSDA2eAorICAgICAgMTQ0RjozMDAyID0gQ1BIMDV4IHcvIEZNCisgICAgICAxNDRGOjMwMDUgPSBDUEgwNnhfTEMgKHcvbyByZW1vdGUgY29udHJvbCkKKyAgMSkgVGhlIGNhcmRzIGhhdmUgYSBzdGlja2VyIHdpdGggIkNQSCItbW9kZWwgb24gdGhlIGJhY2suCisgIDIpIFRoZXNlIGNhcmRzIGhhdmUgYSBudW1iZXIgcHJpbnRlZCBvbiB0aGUgUENCIGp1c3QgYWJvdmUgdGhlIHR1bmVyIG1ldGFsIGJveDoKKyAgICAgICI4MC1DUDIwMDAzMDAteCIgPSBDUEgwM1gKKyAgICAgICI4MC1DUDIwMDA1MDAteCIgPSBDUEgwNVgKKyAgICAgICI4MC1DUDIwMDA2MDAteCIgPSBDUEgwNlggLyBDUEgwNnhfTEMKKworICBBc2tleSBzZWxscyB0aGVzZSBjYXJkcyBhcyAiTWFnaWMgVFZpZXcgc2VyaWVzIiwgQnJhbmQgIk1hZ2ljWHByZXNzIi4KKyAgT3RoZXIgT0VNIG9mdGVuIGNhbGwgdGhlc2UgIlR2aWV3IiwgIlRWaWV3OTkiIG9yIGVsc2UuCisKK0xpZmV2aWV3IEZseXZpZGVvIFNlcmllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVGhlIG5hbWluZyBvZiB0aGVzZSBzZXJpZXMgZGlmZmVycyBpbiB0aW1lIGFuZCBzcGFjZS4KKworICBJZGVudGlmeWluZzoKKyAgMSkgU29tZSBtb2RlbHMgY2FuIGJlIGlkZW50aWZpZWQgYnkgUENJIHN1YnN5c3RlbSBJRDoKKyAgICAgIDE4NTI6MTg1MiA9IEZseXZpZGVvIDk4IEZNCisgICAgICAxODUxOjE4NTAgPSBGbHl2aWRlbyA5OAorICAgICAgMTg1MToxODUxID0gRmx5dmlkZW8gOTggRVogKGNhcHR1cmUgb25seSkKKyAgMikgVGhlcmUgaXMgYSBwcmludCBvbiB0aGUgUENCOgorICAgICAgTFIyNSAgICAgICA9IEZseXZpZGVvIChab3JhbiBaUjM2MTIwLCBTQUE3MTEwQSkKKyAgICAgIExSMjYgUmV2Lk4gPSBGbHl2aWRlbyBJSSAoQnQ4NDgpCisgICAgICAgICAgIFJldi5PID0gRmx5dmlkZW8gSUkgKEJ0ODc4KQorICAgICAgTFIzNyBSZXYuQyA9IEZseXZpZGVvIEVaIChDYXB0dXJlIG9ubHksIFpSMzYxMjAgKyBTQUE3MTEwKQorICAgICAgTFIzOCBSZXYuQTE9IEZseXZpZGVvIElJIEVaIChCdDg0OCBjYXB0dXJlIG9ubHkpCisgICAgICBMUjUwIFJldi5RID0gRmx5dmlkZW8gOTggKHcvZWVwcm9tIGFuZCBQQ0kgc3Vic3lzdGVtIElEKQorICAgICAgICAgICBSZXYuVyA9IEZseXZpZGVvIDk4IChubyBlZXByb20pCisgICAgICBMUjUxIFJldi5FID0gRmx5dmlkZW8gOTggRVogKGNhcHR1cmUgb25seSkKKyAgICAgIExSOTAgICAgICAgPSBGbHl2aWRlbyAyMDAwIChCdDg3OCkKKwkJICAgRmx5dmlkZW8gMjAwMFMgKEJ0ODc4KSB3L1N0ZXJlbyBUViAoUGFja2FnZSBpbmNsLiBMUjkxIGRhdWdodGVyYm9hcmQpCisgICAgICBMUjkxICAgICAgID0gU3RlcmVvIGRhdWdodGVyIGNhcmQgZm9yIExSOTAKKyAgICAgIExSOTcgICAgICAgPSBGbHl2aWRlbyBEVkJTCisgICAgICBMUjk5IFJldi5FID0gTG93IHByb2ZpbGUgY2FyZCBmb3IgT0VNIGludGVncmF0aW9uIChvbmx5IGludGVybmFsIGF1ZGlvISkgYnQ4NzgKKyAgICAgIExSMTM2CSA9IEZseXZpZGVvIDIxMDAvMzEwMCAoTG93IHByb2ZpbGUsIFNBQTcxMzAvU0FBNzEzNCkKKyAgICAgIExSMTM3ICAgICAgPSBGbHl2aWRlbyBEVjIwMDAvRFYzMDAwIChTQUE3MTMwL1NBQTcxMzQgKyBJRUVFMTM5NCkKKyAgICAgIExSMTM4IFJldi5DPSBGbHl2aWRlbyAyMDAwIChTQUE3MTMwKQorCSAgICAgICAgb3IgRmx5dmlkZW8gMzAwMCAoU0FBNzEzNCkgdy9TdGVyZW8gVFYKKwkJICAgVGhlc2UgZXhpc3QgaW4gdmFyaWF0aW9ucyB3L0ZNIGFuZCB3L1JlbW90ZSBzb21ldGltZXMgZGVub3RlZAorCQkgICBieSBzdWZmaXhlcyAiRk0iIGFuZCAiUiIuCisgIDMpIFlvdSBoYXZlIGEgbGFwdG9wIChtaW5pUENJIGNhcmQpOgorICAgICAgUHJvZHVjdCAgICA9IEZseVRWIFBsYXRpbnVtIE1pbmkKKyAgICAgIE1vZGVsL0NoaXAgPSBMUjIxMi9zYWE3MTM1CisKKyAgICAgIExpZmV2aWV3LmNvbS50dyBzdGF0ZXMgKEZlYi4gMjAwMik6CisgICAgICAiVGhlIEZseVZpZGVvMjAwMCBhbmQgRmx5VmlkZW8yMDAwcyBwcm9kdWN0IG5hbWUgaGF2ZSByZW5hbWVkIHRvIEZseVZpZGVvOTguIgorICAgICAgVGhlaXIgQnQ4eDggY2FyZHMgYXJlIGxpc3RlZCBhcyBkaXNjb250aW51ZWQuCisgICAgICBGbHl2aWRlbyAyMDAwUyB3YXMgcHJvYmFibHkgc29sZCBhcyBGbHl2aWRlbyAzMDAwIGluIHNvbWUgY29udHJpZXMoRXVyb3BlPykuCisgICAgICBUaGUgbmV3IEZseXZpZGVvIDIwMDAvMzAwMCBhcmUgU0FBNzEzMC9TQUE3MTM0IGJhc2VkLiAKKworICAiRmx5dmlkZW8gSUkiIGhhZCBiZWVuIHRoZSBuYW1lIGZvciB0aGUgODQ4IGNhcmRzLCBub3dhZGF5cyAoaW4gR2VybWFueSkKKyAgdGhpcyBuYW1lIGlzIHJlLXVzZWQgZm9yIExSNTAgUmV2LlcuCisgIFRoZSBMaWZldmlldyB3ZWJzaXRlIG1lbnRpb25lZCBGbHl2aWRlbyBJSUkgYXQgc29tZSB0aW1lLCBidXQgc3VjaCBhIGNhcmQKKyAgaGFzIG5vdCB5ZXQgYmVlbiBzZWVuIChwZXJoYXBzIGl0IHdhcyB0aGUgZ2VybWFuIG5hbWUgZm9yIExSOTAgW3N0ZXJlb10pLgorICBUaGVzZSBjYXJkcyBhcmUgc29sZCBieSBtYW55IE9FTXMgdG9vLgorCisgIEZseVZpZGVvIEEyIChFbHRhIDg2ODApPSBMUjkwIFJldi5GICh3L1JlbW90ZSwgdy9vIEZNLCBzdGVyZW8gVFYgYnkgdGRhOTgyMSkge0dlcm1hbnl9CisgIExpZmV2aWV3IDMwMDAgKEVsdGEgODY4MSkgYXMgc29sZCBieSBQbHVzKEFwcmlsIDIwMDIpLCBHZXJtYW55ID0gTFIxMzggdy8gc2FhNzEzNAorCisKK1R5cGhvb24gVFYgY2FyZCBzZXJpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBUaGVzZSBjYW4gYmUgQ1BILCBGbHl2aWRlbywgUGl4ZWx2aWV3IG9yIEtOQzEgc2VyaWVzLgorICBUeXBob29uIGlzIHRoZSBicmFuZCBvZiBBbnViaXMuCisgIE1vZGVsIDUwNjgwIGdvdCByZS11c2VkLCBzb21lIG1vZGVsIG5vLiBoYWQgZGlmZmVyZW50IGNvbnRlbnRzIG92ZXIgdGltZS4KKworICBNb2RlbHM6CisgIDUwNjgwICJUViBUdW5lciBQQ0kgUGFsIEJHIihvbGQscmVkIHBhY2thZ2UpPWNhbiBiZSBDUEgwM3goYnQ4NDgpIG9yIENQSDA2eChidDg3OCkKKyAgNTA2ODAgIlRWIFR1bmVyIFBhbCBCRyIgKGJsdWUgcGFja2FnZSk9IFBpeGVsdmlldyBQVi1CVDg3OFArIChSZXYgOUIpCisgIDUwNjgxICJUViBUdW5lciBQQ0kgUGFsIEkiICh2YXJpYW50IG9mIDUwNjgwKQorICA1MDY4MiAiVFZpZXcgVFYvRk0gVHVuZXIgUGFsIEJHIiAgICAgICA9IEZseXZpZGVvIDk4Rk0gKExSNTAgUmV2LlEpCisgICAgICAgICBOb3RlOiBUaGUgcGFja2FnZSBoYXMgYSBwaWN0dXJlIG9mIENQSDA1eCAod2hpY2ggd291bGQgYmUgYSByZWFsIFRWaWV3KQorICA1MDY4MyAiVFYgVHVuZXIgUENJIFNFQ0FNIiAodmFyaWFudCBvZiA1MDY4MCkKKyAgNTA2ODQgIlRWIFR1bmVyIFBhbCBCRyIgICAgICAgICAgICAgICAgPSBQaXhlbHZpZXcgODc4VFYoUmV2LjNEKQorICA1MDY4NiAiVFYgVHVuZXIiICAgICAgICAgICAgICAgICAgICAgICA9IEtOQzEgVFYgU3RhdGlvbgorICA1MDY4NyAiVFYgVHVuZXIgc3RlcmVvIiAgICAgICAgICAgICAgICA9IEtOQzEgVFYgU3RhdGlvbiBwcm8KKyAgNTA2ODggIlRWIFR1bmVyIFJEUyIgKGJsYWNrIHBhY2thZ2UpICAgPSBLTkMxIFRWIFN0YXRpb24gUkRTCisgIDUwNjg5ICBUViBTQVQgRFZCLVMgQ0FSRCBDSSBQQ0kgKFNBQTcxNDZBSCwgU1UxMjc4PykgPSAiS05DMSBUViBTdGF0aW9uIERWQi1TIgorICA1MDY5MiAiVFYvRk0gVHVuZXIiIChzbWFsbCBQQ0IpCisgIDUwNjk0ICBUViBUVU5FUiBDQVJEIFJEUyAoUEhJTElQUyBDSElQU0VUIFNBQTcxMzRITCkKKyAgNTA2OTYgIFRWIFRVTkVSIFNURVJFTyAoUEhJTElQUyBDSElQU0VUIFNBQTcxMzRITCwgTUszTUUgVHVuZXIpCisgIDUwODA0ICBQQy1TQVQgVFYvQXVkaW8gS2FydGUgPSBUZWNobmktUEMtU2F0IChaT1JBTiAzNjEyMFBRQywgVHVuZXI6QWxwcykKKyAgNTA4NjYgIFRWSUVXIFNBVCBSRUNFSVZFUitBRFIKKyAgNTA4NjggIlRWL0ZNIFR1bmVyIFBhbCBJIiAodmFyaWFudCBvZiA1MDY4MikKKyAgNTA5OTkgIlRWL0ZNIFR1bmVyIFNlY2FtIiAodmFyaWFudCBvZiA1MDY4MikKKworCitHdWlsbGVtb3QKKy0tLS0tLS0tLQorICBNYXhpLVRWIFBDSSAoWlIzNjEyMCkKKyAgTWF4aSBUViBWaWRlbyAyID0gTFI1MCBSZXYuUSAoRkkxMjE2TUYsIFBBTCBCRytTRUNBTSkKKyAgTWF4aSBUViBWaWRlbyAzID0gQ1BIMDY0IChQQUwgQkcgKyBTRUNBTSkKKworTWVudG9yCistLS0tLS0KKyAgTWVudG9yIFRWIGNhcmQgKCI1NS04NzhUVi1VMSIpID0gUGl4ZWx2aWV3IDg3OFRWKFJldi4zRikgKHcvRk0gdy9SZW1vdGUpCisKK1Byb2xpbmsKKy0tLS0tLS0KKyAgIFRWIGNhcmRzOgorICAgUGl4ZWxWaWV3IFBsYXkgVFYgcHJvIC0gKE1vZGVsOiBQVi1CVDg3OFArIFJFViA4RSkKKyAgIFBpeGVsVmlldyBQbGF5IFRWIHBybyAtIChNb2RlbDogUFYtQlQ4NzhQKyBSRVYgOUQpCisgICBQaXhlbFZpZXcgUGxheSBUViBwcm8gLSAoTW9kZWw6IFBWLUJUODc4UCsgUkVWIDRDIC8gOEQgLyAxMEEgKQorICAgUGl4ZWxWaWV3IFBsYXkgVFYgLSAoTW9kZWw6IFBWLUJUODQ4UCspCisgICA4NzhUViAtIChNb2RlbDogUFYtQlQ4NzhUVikKKworICAgTXVsdGltZWRpYSBUViBwYWNrYWdlcyAoY2FyZCArIHNvZnR3YXJlIHBhY2spOgorICAgUGl4ZWxWaWV3IFBsYXkgVFYgVGhlYXRlciAtIChNb2RlbDogUFYtTTQyMDApID0gIFBpeGVsVmlldyBQbGF5IFRWIHBybyArIFNvZnR3YXJlCisgICBQaXhlbFZpZXcgUGxheSBUViBQQUsgLSAgICAgKE1vZGVsOiBQVi1CVDg3OFArIFJFViA0RSkKKyAgIFBpeGVsVmlldyBQbGF5IFRWL1ZDUiAtICAgICAoTW9kZWw6IFBWLU0zMjAwIFJFViA0QyAvIDhEIC8gMTBBICkgCisgICBQaXhlbFZpZXcgU3R1ZGlvIFBBSyAtICAgICAgKE1vZGVsOiAgICBNMjIwMCBSRVYgNEMgLyA4RCAvIDEwQSApCisgICBQaXhlbFZpZXcgUG93ZXJTdHVkaW8gUEFLIC0gKE1vZGVsOiBQVi1NMzYwMCBSRVYgNEUpCisgICBQaXhlbFZpZXcgRGlnaXRhbFZDUiBQQUsgLSAgKE1vZGVsOiBQVi1NMjQwMCBSRVYgNEMgLyA4RCAvIDEwQSApCisKKyAgIFBpeGVsVmlldyBQbGF5VFYgUEFLIElJIChUVi9GTSBjYXJkICsgdXNiIGNhbWVyYSkgIFBWLU0zODAwIAorICAgUGl4ZWxWaWV3IFBsYXlUViBYUCBQVi1NNDcwMCxQVi1NNDcwMCh3L0ZNKQorICAgUGl4ZWxWaWV3IFBsYXlUViBEVlIgUFYtTTQ2MDAgIHBhY2thZ2UgY29udGVudHM6UGl4ZWxWaWV3IFBsYXlUViBwcm8sIHdpbmR2ciAmIHZpZGVvTWFpbCBzL3cKKworICAgRnVydGhlciBDYXJkczoKKyAgIFBWLUJUODc4UCtyZXYuOUIgKFBsYXkgVFYgUHJvLCBvcHQuIHcvRk0gdy9OSUNBTSkKKyAgIFBWLUJUODc4UCtyZXYuMkYKKyAgIFBWLUJUODc4UCBSZXYuMUQgKGJ0ODc4LCBjYXB0dXJlIG9ubHkpCisKKyAgIFhDYXB0dXJlIFBWLUNYODgxUCAoY3gyMzg4MSkKKyAgIFBsYXlUViBIRCBQVi1DWDg4MVBMKywgUFYtQ1g4ODFQTCsody9GTSkgKGN4MjM4ODEpCisKKyAgIERUVjMwMDAgUFYtRFRWMzAwMFArIERWQi1TIENJID0gVHdpbmhhbiBWUC0xMDMwCisgICBEVFYyMDAwIERWQi1TID0gVHdpbmhhbiBWUC0xMDIwCisgICAKKyAgIFZpZGVvIENvbmZlcmVuY2luZzoKKyAgIFBpeGVsVmlldyBNZWV0aW5nIFBBSyAtIChNb2RlbDogUFYtQlQ4NzhQKQorICAgUGl4ZWxWaWV3IE1lZXRpbmcgUEFLIExpdGUgLSAoTW9kZWw6IFBWLUJUODc4UCkKKyAgIFBpeGVsVmlldyBNZWV0aW5nIFBBSyBwbHVzIC0gKE1vZGVsOiBQVi1CVDg3OFArcmV2IDRDLzhELzEwQSkKKyAgIFBpeGVsVmlldyBDYXB0dXJlIC0gKE1vZGVsOiBQVi1CVDg0OFApCisKKyAgIFBpeGVsVmlldyBQbGF5VFYgVVNCIHBybworICAgTW9kZWwgTm8uIFBWLU5UMTAwNCssIFBWLU5UMTAwNCsgKHcvRk0pID0gTlQxMDA0IFVTQiBkZWNvZGVyIGNoaXAgKyBTQUE3MTEzIHZpZGVvIGRlY29kZXIgY2hpcAorCitEeW5hbGluaworLS0tLS0tLS0KKyAgIFRoZXNlIGFyZSBDUEggc2VyaWVzLgorCitQaG9lYmVtaWNybworLS0tLS0tLS0tLS0KKyAgIFRWIE1hc3RlciAgICA9IENQSDAzMCBvciBDUEgwNjAKKyAgIFRWIE1hc3RlciBGTSA9IENQSDA1MAorCitHZW5pdXMvS3llCistLS0tLS0tLS0tCisgICBWaWRlbyBXb25kZXIvR2VuaXVzIEludGVybmV0IFZpZGVvIEtpdCA9IExSMzcgUmV2LkMKKyAgIFZpZGVvIFdvbmRlciBQcm8gSUkgKDg0OCBvciA4NzgpID0gTFIyNgorCitUZWtyYW0KKy0tLS0tLQorICAgVmlkZW9DYXAgQzIwNSAoQnQ4NDgpCisgICBWaWRlb0NhcCBDMjEwICh6cjM2MTIwICtQaGlsaXBzKQorICAgQ2FwdHVyZVRWIE0yMDAgKElTQSkKKyAgIENhcHR1cmVUViBNMjA1IChCdDg0OCkKKworTHVja3kgU3RhcgorLS0tLS0tLS0tLQorICAgSW1hZ2UgV29ybGQgQ29uZmVyZW5jZSBUViA9IExSNTAgUmV2LiBRCisKK0xlYWR0ZWsKKy0tLS0tLS0KKyAgIFdpblZpZXcgNjAxIChCdDg0OCkKKyAgIFdpblZpZXcgNjEwIChab3JhbikKKyAgIFdpbkZhc3QyMDAwCisgICBXaW5GYXN0MjAwMCBYUAorCitLTkMgT25lCistLS0tLS0tCisgICBUVi1TdGF0aW9uCisgICBUVi1TdGF0aW9uIFNFICgrU29mdHdhcmUgQnVuZGxlKQorICAgVFYtU3RhdGlvbiBwcm8gKCtUViBzdGVyZW8pCisgICBUVi1TdGF0aW9uIEZNICgrUmFkaW8pCisgICBUVi1TdGF0aW9uIFJEUyAoK1JEUykKKyAgIFRWIFN0YXRpb24gU0FUIChhbmFsb2cgc2F0ZWxsaXRlKQorICAgVFYtU3RhdGlvbiBEVkItUworCisgICBuZXdlciBDYXJkcyBoYXZlIHNhYTcxMzQsIGJ1dCBtb2RlbCBuYW1lIHN0YXllZCB0aGUgc2FtZT8KKworUHJvdmlkZW8gCistLS0tLS0tLQorICBQVjk1MSBvciBQVi05NTEgKGFsc28gYXJlIHNvbGQgYXM6CisgICBCb2VkZXIgVFYtRk0gVmlkZW8gQ2FwdHVyZSBDYXJkCisgICBUaXRhbm1lZGlhIFN1cGVydmlzaW9uIFRWLTI0MDAKKyAgIFByb3ZpZGVvIFBWOTUxIFRGCisgICAzRGVNb24gUFY5NTEKKyAgIE1lZGlhRm9ydGUgVFYtVmlzaW9uIFBWOTUxCisgICBZb2tvIFBWOTUxCisgICBWaXZhbmNvIFR1bmVyIENhcmQgUENJIEFydC4tTnIuOiA2ODQwNAorICApIG5vdyBuYW1lZCBQVi05NTFUCisKKyAgU3VydmVpbGxhbmNlIFNlcmllcworICBQVi0xNDEKKyAgUFYtMTQzCisgIFBWLTE0NworICBQVi0xNDggKGNhcHR1cmUgb25seSkKKyAgUFYtMTUwCisgIFBWLTE1MQorCisgIFRWLUZNIFR1bmVyIFNlcmllcworICBQVi05NTFURFYgKHR2IHR1bmVyICsgMTM5NCkKKyAgUFYtOTUxVC9URgorICBQVi05NTFQVC9URgorICBQVi05NTZUL1RGIExvdyBQcm9maWxlCisgIFBWLTkxMQorCitIaWdoc2NyZWVuCistLS0tLS0tLS0tCisgICBUViBLYXJ0ZSA9IExSNTAgUmV2LlMKKyAgIFRWLUJvb3N0YXIgPSBUZXJyYXRlYyBUZXJyYSBUVisgVmVyc2lvbiAxLjAgKEJ0ODQ4LCB0ZGE5ODIxKSAiY2ViMTA1LnBjYiIKKworWm9sdHJpeAorLS0tLS0tLQorICAgRmFjZSB0byBGYWNlIENhcHR1cmUgKEJ0ODQ4IGNhcHR1cmUgb25seSkgKFBDQiAiVlAtMjg0OCIpCisgICBGYWNlIFRvIEZhY2UgVFYgTUFYIChCdDg0OCkgKFBDQiAiVlAtODQ4MiBSZXYxLjMiKQorICAgR2VuaWUgVFYgKEJ0ODc4KSAoUENCICJWUC04NzkwIFJldiAyLjEiKQorICAgR2VuaWUgV29uZGVyIFBybworCitBVmVyTWVkaWEKKy0tLS0tLS0tLQorICAgQVZlciBGdW5UViBMaXRlIChJU0EsIEFWMzAwMSBjaGlwc2V0KSAgIk0xMDEuQyIKKyAgIEFWZXJUVgorICAgQVZlclRWIFN0ZXJlbworICAgQVZlclRWIFN0dWRpbyAody9GTSkKKyAgIEFWZXJNZWRpYSBUVjk4IHdpdGggUmVtb3RlIAorICAgQVZlck1lZGlhIFRWL0ZNOTggU3RlcmVvCisgICBBVmVyTWVkaWEgVFZDQU05OAorICAgVFZDYXB0dXJlIChCdDg0OCkKKyAgIFRWUGhvbmUgKEJ0ODQ4KQorICAgVFZDYXB0dXJlOTggKD0iQVZlck1lZGlhIFRWOTgiIGluIFVTQSkgKEJ0ODc4KQorICAgVFZQaG9uZTk4IChCdDg3OCwgdy9GTSkKKworICAgUENCICAgICAgUENJLUlEICAgICAgTW9kZWwtTmFtZSAgICAgIEVlcHJvbSAgVHVuZXIgIFNvdW5kICAgIENvdW50cnkKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBNMTAxLkMgICBJU0EgIQorICAgTTEwOC1CICAgICAgQnQ4NDggICAgICAgICAgICAgICAgICAgICAtLSAgICAgRlIxMjM2CQkgVVMgICAoMiksKDMpCisgICBNMUE4LUEgICAgICBCdDg0OCAgICBBVmVyIFRWLVBob25lICAgICAgICAgICBGTTEyMTYgIC0tCisgICBNMTY4LVQgICAxNDYxOjAwMDMgICBBVmVyVFYgU3R1ZGlvICAgNDg6MTcgICBGTTEyMTYgVERBOTg0MFQgIEQgICAgKDEpIHcvRk0gdy9SZW1vdGUKKyAgIE0xNjgtVSAgIDE0NjE6MDAwNCAgIFRWQ2FwdHVyZTk4ICAgICA0MDoxMSAgIEZJMTIxNiAgIC0tICAgICAgRCAgICB3L1JlbW90ZQorICAgTTE2OElJLUIgMTQ2MTowMDAzICAgTWVkaW9uIE1EOTU5MiAgIDQ4OjE2ICAgRk0xMjE2IFREQTk4NzNIICBEICAgIHcvRk0KKworICAgKDEpIERhdWdodGVyYm9hcmQgTUI2OC1BIHdpdGggVERBOTgyMFQgYW5kIFREQTk4NDBUCisgICAoMikgU29ueSBORTQxUyBzb2xkZXJlZCAoc3RlcmVvIHNvdW5kPykKKyAgICgzKSBEYXVnaHRlcmJvYXJkIE0xMTgtQSB3LyBwaWMgMTZjNTQgYW5kIDQgTUh6IHF1YXJ0egorIAorICAgVVMgc2l0ZSBoYXMgZGlmZmVyZW50IGRyaXZlcnMgZm9yIChhcyBvZiAwOS8yMDAyKToKKyAgIEVaIENhcHR1cmUvSW50ZXJDYW0gUENJIChCVC04NDggY2hpcCkKKyAgIEVaIENhcHR1cmUvSW50ZXJDYW0gUENJIChCVC04NzggY2hpcCkKKyAgIFRWLVBob25lIChCVC04NDggY2hpcCkKKyAgIFRWOTggKEJULTg0OCBjaGlwKQorICAgVFY5OCBXaXRoIFJlbW90ZSAoQlQtODQ4IGNoaXApCisgICBUVjk4IChCVC04NzggY2hpcCkKKyAgIFRWOTggV2l0aCBSZW1vdGUgKEJULTg3OCkKKyAgIFRWL0ZNOTggKEJULTg3OCBjaGlwKQorICAgQVZlclRWCisgICBBdmVyVFYgU3RlcmVvCisgICBBVmVyVFYgU3R1ZGlvCisKKyAgIERFIGhhdCBkaXZlcnNlIFRyZWliZXIgZnVlciBkaWVzZSBNb2RlbGxlIChTdGFuZCAwOS8yMDAyKToKKyAgIFRWUGhvbmUgKDg0OCkgbWl0IFBoaWxpcHMgdHVuZXIgRlIxMlg2ICh3LyBGTSByYWRpbykKKyAgIFRWUGhvbmUgKDg0OCkgbWl0IFBoaWxpcHMgdHVuZXIgRk0xMlg2ICh3LyBGTSByYWRpbykKKyAgIFRWQ2FwdHVyZSAoODQ4KSB3L1BoaWxpcHMgdHVuZXIgRkkxMlg2CisgICBUVkNhcHR1cmUgKDg0OCkgbm9uLVBoaWxpcHMgdHVuZXIKKyAgIFRWQ2FwdHVyZTk4IChCdDg3OCkKKyAgIFRWUGhvbmU5OCAoQnQ4NzgpCisgICBBVmVyVFYgdW5kIFRWQ2FwdHVyZTk4IHcvVkNSIChCdCA4NzgpCisgICBBVmVyVFZTdHVkaW8gdW5kIFRWUGhvbmU5OCB3L1ZDUiAoQnQ4NzgpCisgICBBVmVyVFYgR08gU2VyaWUgKEtlaW4gU1ZpZGVvIElucHV0KQorICAgQVZlclRWOTggKEJULTg3OCBjaGlwKQorICAgQVZlclRWOTggbWl0IEZlcm5iZWRpZW51bmcgKEJULTg3OCBjaGlwKQorICAgQVZlclRWL0ZNOTggKEJULTg3OCBjaGlwKQorCisgICBWRE9tYXRlICh3d3cuYXZlcm0uY29tLmNuKSA9IE0xNjhVID8KKworQWltc2xhYgorLS0tLS0tLQorICAgVmlkZW8gSGlnaHdheSBvciAiVmlkZW8gSGlnaHdheSBUUjIwMCIgKElTQSkKKyAgIFZpZGVvIEhpZ2h3YXkgWHRyZW1lIChha2EgIlZIWCIpIChCdDg0OCwgRk0gdy8gVEVBNTc1NykKKworSVhNaWNybyAoZm9ybWVyOiBJTVM9SW50ZWdyYXRlZCBNaWNybyBTb2x1dGlvbnMpCistLS0tLS0tCisgICBJWFRWIEJUODQ4ICg9VHVyYm9UVikKKyAgIElYVFYgQlQ4NzgKKyAgIElNUyBUdXJib1RWIChCdDg0OCkKKworTGlmZXRlYy9NZWRpb24vVGV2aW9uL0FsZGkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBMVDkzMDYvTUQ5MzA2ID0gQ1BIMDYxCisgICBMVDk0MTUvTUQ5NDE1ID0gTFI5MCBSZXYuRiBvciBSZXYuRworICAgICAgICAgIE1EOTU5MiA9IEF2ZXJtZWRpYSBUVnBob25lOTggKFBDSV9JRD0xNDYxOjAwMDMpLCBQQ0ItUmV2PU0xNjhJSS1CICh3L1REQTk4NzNIKQorICAgICAgICAgIE1EOTcxNyA9IEtOQyBPbmUgKFJldiBENCwgc2FhNzEzNCwgRk0xMjE2IE1LMiB0dW5lcikKKyAgICAgICAgICBNRDUwNDQgPSBLTkMgT25lIChSZXYgRDQsIHNhYTcxMzQsIEZNMTIxNk1FIE1LMyB0dW5lcikKKworTW9kdWxhciBUZWNobm9sb2dpZXMgKHd3dy5tb2R1bGFydGVjaC5jb20pIFVLCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIE1NMTAwIFBDVFYgKEJ0ODQ4KQorICAgTU0yMDEgUENUViAoQnQ4NzgsIEJ0ODMyKSB3LyBRdWFydHpzaWdodCBjYW1lcmEKKyAgIE1NMjAyIFBDVFYgKEJ0ODc4LCBCdDgzMiwgdGRhOTg3NCkKKyAgIE1NMjA1IFBDVFYgKEJ0ODc4KQorICAgTU0yMTAgUENUViAoQnQ4NzgpIChHYWxheHkgVFYsIEdhbGF4eW1lZGlhID8pCisKK1RlcnJhdGVjCistLS0tLS0tLQorICAgVGVycmEgVFYrIFZlcnNpb24gMS4wIChCdDg0OCksICJjZWIxMDUuUENCIiBwcmludGVkIG9uIHRoZSBQQ0IsIFREQTk4MjEKKyAgIFRlcnJhIFRWKyBWZXJzaW9uIDEuMSAoQnQ4NzgpLCAiTFI3NCBSZXYuRSIgcHJpbnRlZCBvbiB0aGUgUENCLCBUREE5ODIxCisgICBUZXJyYSBUVmFsdWVSYWRpbywgICAgICAgICAgICAgIkxSMTAyIFJldi5DIiBwcmludGVkIG9uIHRoZSBQQ0IKKyAgIFRlcnJhIFRWL1JhZGlvKyBWZXJzaW9uIDEuMCwgICAiODAtQ1AyODMwMTAwLTAiIFRUVFYzIHByaW50ZWQgb24gdGhlIFBDQiwKKwkJCQkgICAgICJDUEgwMTAtRTgzIiBvbiB0aGUgYmFjaywgU0FBNjU4OFQsIFREQTk4NzNICisgICBUZXJyYSBUVmFsdWUgVmVyc2lvbiBCVDg3OCwgICAgIjgwLUNQMjgzMDExMC0wIFRUVFY0IiBwcmludGVkIG9uIHRoZSBQQ0IsIAorCQkJCSAgICAgIkNQSDAxMS1EODMiIG9uIGJhY2sKKyAgIFRlcnJhIFRWYWx1ZSBWZXJzaW9uIDEuMCAgICAgICAiY2ViMTA1LlBDQiIgKHJlYWxseSBpZGVudGljYWwgdG8gVGVycmEgVFYrIFZlcnNpb24gMS4wKQorICAgVGVycmEgVFZhbHVlIE5ldyBSZXZpc2lvbgkgICJMUjEwMiBSZWMuQyIKKyAgIFRlcnJhIEFjdGl2ZSBSYWRpbyBVcGdyYWRlICh0ZWE1NzU3aCwgc2FhNjU4OHQpCisKKyAgIExSNzQgaXMgYSBuZXdlciBQQ0IgcmV2aXNpb24gb2YgY2ViMTA1IChib3RoIGluY2wuIGNvbm5lY3RvciBmb3IgQWN0aXZlIFJhZGlvIFVwZ3JhZGUpCisKKyAgIENpbmVyZ3kgNDAwIChzYWE3MTM0KSwgIkU4NzcgMTEoUykiLCAiUE04MjAwOTJEIiBwcmludGVkIG9uIFBDQgorICAgQ2luZXJneSA2MDAgKHNhYTcxMzQpCisKK1RlY2huaXNhdAorLS0tLS0tLS0tCisgICBEaXNjb3MgQURSIFBDLUthcnRlIElTQSAobm8gVFYhKQorICAgRGlzY29zIEFEUiBQQy1LYXJ0ZSBQQ0kgKHByb2JhYmx5IG5vIFRWPykKKyAgIFRlY2huaS1QQy1TYXQgKFNhdC4gYW5hbG9nKQorICAgICAgICAgUmV2IDEuMiAoenIzNjEyMCwgdnB4MzIyMCwgc3R2MDAzMCwgc2FhNTI0NiwgQlNKRTMtNDk0QSkKKyAgIE1lZGlhZm9jdXMgSSAoenIzNjEyMC96cjM2MTI1LCBkcnAzNTEwLCBTYXQuIGFuYWxvZyArIEFEUiBSYWRpbykKKyAgIE1lZGlhZm9jdXMgSUkgKHNhYTcxNDYsIFNhdC4gYW5hbG9nKQorICAgICAgICAgU2F0QURSIFJldiAyLjEgKHNhYTcxNDZhLCBzYWE3MTEzaCwgc3R2MDA1NmEsIG1zcDM0MDBjLCBkcnAzNTEwYSwgQlNLRTMtMzA3QSkKKyAgIFNreVN0YXIgMSBEVkIgIChBVjcxMTApID0gVGVjaG5vdHJlbmQgUHJlbWl1bQorICAgU2t5U3RhciAyIERWQiAgKEIyQzIpICg9U2t5MlBDKQorCitTaWVtZW5zCistLS0tLS0tCisgICBNdWx0aW1lZGlhIGVYdGVuc2lvbiBCb2FyZCAoTVhCKSAoU0FBNzE0NiwgU0FBNzExMSkKKworU3RyYWRpcworLS0tLS0tLQorICAgU0RNMjc1LFNETTI1MCxTRE0wMjYsU0RNMDI1IChTQUE3MTQ2LCBJQk1NUEVHMik6IE1QRUcyIGRlY29kZXIgb25seQorCitQb3dlcmNvbG9yCistLS0tLS0tLS0tCisgICBNVFY4NzgKKyAgICAgICBQYWNrYWdlIGNvbWVzIHdpdGggZGlmZmVyZW50IGNvbnRlbnRzOgorICAgICAgIGEpIHBjYiAiTVRWODc4IiAoQ0FSRD03NSkKKyAgICAgICBiKSBQaXhlbHZpZXcgUmV2LiA0XworICAgTVRWODc4UiB3L1JlbW90ZSBDb250cm9sCisgICBNVFY4NzhGIHcvUmVtb3RlIENvbnRyb2wgdy9GTSByYWRpbworCitQaW5uYWNsZQorLS0tLS0tLS0KKyAgIE1pcm92aWRlbyBQQ1RWIChCdDg0OCkKKyAgIE1pcm92aWRlbyBQQ1RWIFNFIChCdDg0OCkKKyAgIE1pcm92aWRlbyBQQ1RWIFBybyAoQnQ4NDggKyBEYXVnaHRlcmJvYXJkIGZvciBUViBTdGVyZW8gYW5kIEZNKQorICAgU3R1ZGlvIFBDVFYgUmF2ZSAoQnQ4NDggVmVyc2lvbiA9IE1pcm92aWRlbyBQQ1RWKQorICAgU3R1ZGlvIFBDVFYgUmF2ZSAoQnQ4NzggcGFja2FnZSB3L28gaW5mcmFyZWQpCisgICBTdHVkaW8gUENUViAgICAgIChCdDg3OCkKKyAgIFN0dWRpbyBQQ1RWIFBybyAgKEJ0ODc4IHN0ZXJlbyB3LyBGTSkKKyAgIFBpbm5hY2xlIFBDVFYgICAgKEJ0ODc4LCBNVDIwMzIpCisgICBQaW5uYWNsZSBQQ1RWIFBybyAoQnQ4NzgsIE1UMjAzMikKKyAgIFBpbm5jYWxlIFBDVFYgU2F0IChidDg3OGEsIEhNMTgyMS8xMjIxKSBbIkNvbmV4YW50IENYMjQxMTAgd2l0aCBDWDI0MTA4IHR1bmVyLCBha2EgSE0xMjIxL0hNMTgxMSJdCisgICBQaW5uYWNsZSBQQ1RWIFNhdCBYRQorCisgICBNKEopUEVHIGNhcHR1cmUgYW5kIHBsYXliYWNrOgorICAgREMxKyAoSVNBKQorICAgREMxMCAgKHpyMzYwNTcsICAgICB6cjM2MDYwLCAgICAgIHNhYTcxMTAsIGFkdjcxNzYpCisgICBEQzEwKyAoenIzNjA2NywgICAgIHpyMzYwNjAsICAgICAgc2FhNzExMCwgYWR2NzE3NikKKyAgIERDMjAgIChxbDE2eDI0Yix6cjM2MDUwLCB6cjM2MDE2LCBzYWE3MTEwLCBzYWE3MTg3IC4uLikKKyAgIERDMzAgICh6cjM2MDU3LCB6cjM2MDUwLCB6cjM2MDE2LCB2cHgzMjIwLCBhZHY3MTc2LCBhZDE4NDMsIHRlYTY0MTUsIG1pcm8gRlNUOTdBMSkKKyAgIERDMzArICh6cjM2MDY3LCB6cjM2MDUwLCB6cjM2MDE2LCB2cHgzMjIwLCBhZHY3MTc2KQorICAgREM1MCAgKHpyMzYwNjcsIHpyMzYwNTAsIHpyMzYwMTYsIHNhYTcxMTIsIGFkdjcxNzYgKDIgcGNzLj8pLCBhZDE4NDMsIG1pcm8gRlNUOTdBMSwgTGF0dGljZSA/Pz8pCisKK0xlbmNvCistLS0tLQorICAgTVhSLTk1NjUgKD1UZWNobmlzYXQgTWVkaWFmb2N1cz8pCisgICBNWFItOTU3MSAoQnQ4NDgpICg9Q1BIMDMxPykKKyAgIE1YUi05NTc1CisgICBNWFItOTU3NyAoQnQ4NzgpICg9UHJvbGluayA4NzhUViBSZXYuM3gpCisgICBNWFRWLTk1NzhDUCAoQnQ4NzgpICg9IFByb2xpbmsgUFYtQlQ4NzhQKzRFKQorCitJb21lZ2EKKy0tLS0tLQorICAgQnV6ICh6cjM2MDY3LCB6cjM2MDYwLCBzYWE3MTExLCBzYWE3MTg1KQorCitMTUwKKy0tLQorICAgTE1MMzMgKHpyMzYwNjcsIHpyMzYwNjAsIGJ0ODE5LCBidDg1NikKKworR3JhbmR0ZWMKKy0tLS0tLS0tCisgICBHcmFuZCBWaWRlbyBDYXB0dXJlIChCdDg0OCkKKyAgIE11bHRpIENhcHR1cmUgQ2FyZCAgKEJ0ODc4KQorCitLb3V0ZWNoCistLS0tLS0tCisgICBLVy02MDYgKEJ0ODQ4KQorICAgS1ctNjA3IChCdDg0OCBjYXB0dXJlIG9ubHkpCisgICBLVy02MDZSU0YKKyAgIEtXLTYwN0EgKGNhcHR1cmUgb25seSkKKyAgIEtXLTYwOCAoWm9yYW4gY2FwdHVyZSBvbmx5KQorIAorSU9EQVRBIChqcCkKKy0tLS0tLQorICAgR1YtQkNUVi9QQ0kKKyAgIEdWLUJDVFYyL1BDSQorICAgR1YtQkNUVjMvUENJCisgICBHVi1CQ1RWNC9QQ0kKKyAgIEdWLVZDUC9QQ0kgKGNhcHR1cmUgb25seSkKKyAgIEdWLVZDUDIvUENJIChjYXB0dXJlIG9ubHkpCisKK0Nhbm9wdXMgKGpwKQorLS0tLS0tLQorICAgV2luRFZSCT0gS3dvcmxkICJLVy1UVkw4NzhSRiIKKword3d3LnNpZ21hY29tLmNvLmtyIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICBTaWdtYSBDeWJlciBUViBJSSAKKword3d3LnNhc2VtLmNvLmtyCistLS0tLS0tLS0tLS0tLS0KKyAgIExpdHRlIE9uQWlyIFRWCisKK2hhbWEgCistLS0tCisgICBUVi9SYWRpby1UdW5lciBDYXJkLCBQQ0kgKE1vZGVsIDQ0Njc3KSA9IENQSDA1MQorCitTaWdtYSBEZXNpZ25zCistLS0tLS0tLS0tLS0tCisgICBIb2xseXdvb2QgcGx1cyAoZW04MzAwLCBlbTkwMTAsIGFkdjcxNzUpLCAoUENCICJNMzQwLTEwIikgTVBFRyBEVkQgZGVjb2RlcgorCitGb3JtYWMKKy0tLS0tLQorICAgaVByb1RWIChDYXJkIGZvciBpTWFjIE1lenphbmluZSBzbG90LCBCdDg0OCtTQ1NJKQorICAgUHJvVFYgKEJ0ODQ4KQorICAgUHJvVFYgSUkgPSBQcm9UViBTdGVyZW8gKEJ0ODc4KSBbInN0ZXJlbyIgbWVhbnMgRk0gc3RlcmVvLCB0diBpcyBzdGlsbCBtb25vXQorCitBVEkKKy0tLQorICAgVFYtV29uZGVyCisgICBUVi1Xb25kZXIgVkUKKworRGlhbW9uZCBNdWx0aW1lZGlhCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIERUVjIwMDAgKEJ0ODQ4LCB0ZGE5ODc1KQorCitBb3BlbgorLS0tLS0KKyAgIFZBMTAwMCBQbHVzICh3LyBTdGVyZW8pCisgICBWQTEwMDAgTGl0ZQorICAgVkExMDAwICg9TFI5MCkKKworSW50ZWwKKy0tLS0tCisgICBTbWFydCBWaWRlbyBSZWNvcmRlciAoSVNBIGZ1bGwtbGVuZ3RoKQorICAgU21hcnQgVmlkZW8gUmVjb3JkZXIgcHJvIChJU0EgaGFsZi1sZW5ndGgpCisgICBTbWFydCBWaWRlbyBSZWNvcmRlciBJSUkgKEJ0ODQ4KQorCitTVEIKKy0tLQorICAgU1RCIEdhdGV3YXkgNjAwMDcwNCAoYnQ4NzgpCisgICBTVEIgR2F0ZXdheSA2MDAwNjk5IChidDg0OCkKKyAgIFNUQiBHYXRld2F5IDYwMDA0MDIgKGJ0ODQ4KQorICAgU1RCIFRWMTMwIFBDSQorCitWaWRlb2xvZ2ljCistLS0tLS0tLS0tCisgICBDYXB0aXZhdG9yIFByby9UViAoSVNBPykKKyAgIENhcHRpdmF0b3IgUENJL1ZDIChCdDg0OCBidW5kbGVkIHdpdGggY2FtZXJhKSAoY2FwdHVyZSBvbmx5KQorCitUZWNobm90cmVuZAorLS0tLS0tLS0tLS0tCisgICBUVC1TQVQgUENJIChQQ0IgIlNhdC1QQ0kgUmV2LjoxLjMuMSI7IHpyMzYxMjUsIHZweDMyMjVkLCBzdGMwMDU2YSwgVHVuZXI6QlNLRTYtMTU1QQorICAgVFQtRFZCLVNhdAorICAgIHJldmlzaW9ucyAxLjEsIDEuMywgMS41LCAxLjYgYW5kIDIuMQorICAgIFRoaXMgY2FyZCBpcyBzb2xkIGFzIE9FTSBmcm9tOgorCVNpZW1lbnMgRFZCLXMgQ2FyZAorCUhhdXBwYXVnZSBXaW5UViBEVkItUworCVRlY2huaXNhdCBTa3lTdGFyIDEgRFZCCisJR2FsYXhpcyBEVkIgU2F0CisgICAgTm93IHRoaXMgY2FyZCBpcyBjYWxsZWQgVFQtUENsaW5lIFByZW1pdW0gRmFtaWx5CisgICBUVC1CdWRnZXQgKHNhYTcxNDYsIGJzcnU2LTcwMWEpCisgICAgVGhpcyBjYXJkIGlzIHNvbGQgYXMgT0VNIGZyb206CisJSGF1cHBhdWdlIFdpblRWIE5vdmEKKwlTYXRlbGNvIFN0YW5kYXJkIFBDSSAoRFZCLVMpCisgICBUVC1EVkItQyBQQ0kKKworVGVsZXMKKy0tLS0tCisgICBEVkItcyAoUmV2LiAyLjIsIEJTUlYyLTMwMUEsIGRhdGEgb25seT8pCisKK1JlbW90ZSBWaXNpb24KKy0tLS0tLS0tLS0tLS0KKyAgIE1YIFJWNjA1IChCdDg0OCBjYXB0dXJlIG9ubHkpCisKK0JvZWRlcgorLS0tLS0tCisgICBQQyBDaGF0Q2FtIChNb2RlbCA2ODI1MikgKEJ0ODQ4IGNhcHR1cmUgb25seSkKKyAgIFR2L0ZtIENhcHR1cmUgQ2FyZCAgKE1vZGVsIDY4NDA0KSA9IFBWOTUxCisKK01lZGlhLVN1cmZlciAgKGVzYy1rYXRocmVpbi5kZSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFNhdC1TdXJmZXIgKElTQSkKKyAgIFNhdC1TdXJmZXIgUENJID0gVGVjaG5pLVBDLVNhdAorICAgQ2FibGUtU3VyZmVyIDEKKyAgIENhYmxlLVN1cmZlciAyCisgICBDYWJsZS1TdXJmZXIgUENJICh6cjM2MTIwKQorICAgQXVkaW8tU3VyZmVyIChJU0EgUmFkaW8gY2FyZCkKKworSmV0d2F5ICh3d3cuamV0d2F5LmNvbS50dykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBKVy1UViA4NzhNIAorICAgSlctVFYgODc4ICA9IEtXb3JsZCBLVy1UVjg3OFJGCisKK0dhbGF4aXMKKy0tLS0tLS0KKyAgIEdhbGF4aXMgRFZCIENhcmQgUyBDSQorICAgR2FsYXhpcyBEVkIgQ2FyZCBDIENJCisgICBHYWxheGlzIERWQiBDYXJkIFMKKyAgIEdhbGF4aXMgRFZCIENhcmQgQworICAgR2FsYXhpcyBwbHVnLmluIFMgW25ldWVyIE5hbWU6IEdhbGF4aXMgRFZCIENhcmQgUyBDSQorCitIYXVwcGF1Z2UKKy0tLS0tLS0tLQorICAgbWFueSBtYW55IFdpblRWIG1vZGVscyAuLi4KKyAgIFdpblRWIERWQnMgPSBUZWNobm90cmVuZCBQcmVtaXVtIDEuMworICAgV2luVFYgTk9WQSA9IFRlY2hub3RyZW5kIEJ1ZGdldCAxLjEgIlMtRFZCIERBVEEiCisgICBXaW5UViBOT1ZBLUNJICJTRFZCQUNJIgorICAgV2luVFYgTm92YSBVU0IgKD1UZWNobm90cmVuZCBVU0IgMS4wKQorICAgV2luVFYtTmV4dXMtcyAoPVRlY2hub3RyZW5kIFByZW1pdW0gMi4xIG9yIDIuMikKKyAgIFdpblRWIFBWUgorICAgV2luVFYgUFZSIDI1MAorICAgV2luVFYgUFZSIDQ1MAorCisgIFVTIG1vZGVscworICA5OTAgV2luVFYtUFZSLTM1MCAoMjQ5VVNEKSAoaVRWQzE1IGNoaXBzZXQgKyByYWRpbykKKyAgOTgwIFdpblRWLVBWUi0yNTAgKDE0OVVTRCkgKGlUVkMxNSBjaGlwc2V0KQorICA4ODAgV2luVFYtUFZSLVBDSSAoMTk5VVNEKSAoS0ZJUiBjaGlwc2V0ICsgYnQ4NzgpCisgIDg4MSBXaW5UVi1QVlItVVNCCisgIDE5MCBXaW5UVi1HTworICAxOTEgV2luVFYtR08tRk0KKyAgNDA0IFdpblRWCisgIDQwMSBXaW5UVi1yYWRpbworICA0OTUgV2luVFYtVGhlYXRlcgorICA2MDIgV2luVFYtVVNCCisgIDYyMSBXaW5UVi1VU0ItRk0KKyAgNjAwIFVTQi1MaXZlCisgIDY5OCBXaW5UVi1IRAorICA2OTcgV2luVFYtRAorICA1NjQgV2luVFYtTmV4dXMtUworCisgIERldXRzY2hlIE1vZGVsbGUKKyAgNjAzIFdpblRWIEdPCisgIDcxOSBXaW5UViBQcmltaW8tRk0KKyAgNzE4IFdpblRWIFBDSS1GTQorICA0OTcgV2luVFYgVGhlYXRlcgorICA1NjkgV2luVFYgVVNCCisgIDU2OCBXaW5UViBVU0ItRk0KKyAgODgyIFdpblRWIFBWUgorICA5ODEgV2luVFYgUFZSIDI1MAorICA4OTEgV2luVFYtUFZSLVVTQgorICA1NDEgV2luVFYgTm92YQorICA0ODggV2luVFYgTm92YS1DaQorICA1NjQgV2luVFYtTmV4dXMtcworICA3MjcgV2luVFYtRFZCLWMKKyAgNTQ1IENvbW1vbiBJbnRlcmZhY2UKKyAgODk4IFdpblRWLU5vdmEtVVNCCisKKyAgVUsgbW9kZWxzCisgIDYwNyBXaW5UViBHbworICA2OTMsNzkzIFdpblRWIFByaW1pbyBGTQorICA2NDcsNzQ3IFdpblRWIFBDSSBGTQorICA0OTggV2luVFYgVGhlYXRlcgorICA4ODMgV2luVFYgUFZSCisgIDg5MyBXaW5UViBQVlIgVVNCICAoRHVwbGljYXRlIGVudHJ5KQorICA1NjYgV2luVFYgVVNCIChVSykKKyAgNTczIFdpblRWIFVTQiBGTQorICA0MjkgSW1wYWN0IFZDQiAoYnQ4NDgpCisgIDYwMCBVU0IgTGl2ZSAoVmlkZW8tSW4gMXggQ29tcCwgMXhTVkhTKQorICA1NDIgV2luVFYgTm92YQorICA3MTcgV2luVFYgRFZCLVMKKyAgOTA5IE5vdmEtdCBQQ0kKKyAgODkzIE5vdmEtdCBVU0IgICAoRHVwbGljYXRlIGVudHJ5KQorICA4MDIgTXlUVgorICA4MDQgTXlWaWV3CisgIDgwOSBNeVZpZGVvCisgIDg3MiBNeVRWMkdvIEZNCisKKyAKKyAgNTQ2IFdpblRWIE5vdmEtUyBDSQorICA1NDMgV2luVFYgTm92YQorICA5MDcgTm92YS1TIFVTQgorICA5MDggTm92YS1UIFVTQgorICA3MTcgV2luVFYgTmV4dXMtUworICAxNTcgREVDMzAwMC1zIFN0YW5kYWxvbmUgKyBVU0IKKworICBTcGFpbgorICA2ODUgV2luVFYtR28KKyAgNjkwIFdpblRWLVByaW1pb0ZNCisgIDQxNiBXaW5UVi1QQ0kgTmljYW0gRXN0ZXJlbworICA2NzcgV2luVFYtUENJLUZNCisgIDY5OSBXaW5UVi1UaGVhdGVyCisgIDY4MyBXaW5UVi1VU0IKKyAgNjc4IFdpblRWLVVTQi1GTQorICA5ODMgV2luVFYtUFZSLTI1MAorICA4ODMgV2luVFYtUFZSLVBDSQorICA5OTMgV2luVFYtUFZSLTM1MAorICA4OTMgV2luVFYtUFZSLVVTQgorICA3MjggV2luVFYtRFZCLUMgUENJCisgIDgzMiBNeVRWMkdvCisgIDg2OSBNeVRWMkdvLUZNCisgIDgwNSBNeVZpZGVvIChVU0IpCisgIAorCitNYXRyaXgtVmlzaW9uCistLS0tLS0tLS0tLS0tCisgICBNQVRSSVgtVmlzaW9uIE1WLURlbHRhCisgICBNQVRSSVgtVmlzaW9uIE1WLURlbHRhIDIKKyAgIE1Wc2lnbWEtU0xDIChCdDg0OCkKKworQ29uY2VwdHJvbmljICgubmV0KQorLS0tLS0tLS0tLS0tCisgICBUVkNPTiBGTSwgIFRWIGNhcmQgdy8gRk0gPSBDUEgwNXgKKyAgIFRWQ09OID0gQ1BIMDZ4CisKK0Jlc3REYXRhCistLS0tLS0tLQorICAgSENDMTAwID0gVkNDMTAwcmV2MSArIGNhbWVyYQorICAgVkNDMTAwIHJldjEgKGJ0ODQ4KQorICAgVkNDMTAwIHJldjIgKGJ0ODc4KQorCitHYWxsYW50ICAod3d3LmdhbGxhbnRjb20uY29tKSB3d3cubWludG9uLmNvbS50dworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIEludGVydmlzaW9uIElWLTUxMCAoY2FwdHVyZSBvbmx5IGJ0OHg4KQorICAgSW50ZXJ2aXNpb24gSVYtNTUwIChidDh4OCkKKyAgIEludGVydmlzaW9uIElWLTEwMCAoem9yYW4pCisgICBJbnRlcnZpc2lvbiBJVi0xMDAwIChidDh4OCkKKyAgIAorQXNvbmljICh3d3cuYXNvbmljLmNvbS5jbikgKHdlYnNpdGUgZG93bikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBTa3lFeWUgdHYgODc4CisKK0hvb250ZWNoCistLS0tLS0tLQorICAgODc4VFYvRk0KKworVGVwcHJvICh3d3cuaXRjdGVwcHJvLmNvbS50dykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBJVEMgUENJVFYgKENhcmQgVmVyIDEuMCkgIlRlcHBybyBUVjEvVFZGTTEgQ2FyZCIKKyAgIElUQyBQQ0lUViAoQ2FyZCBWZXIgMi4wKQorICAgSVRDIFBDSVRWIChDYXJkIFZlciAzLjApID0gIlBWLUJUODc4UCsgKFJFVi45RCkiCisgICBJVEMgUENJVFYgKENhcmQgVmVyIDQuMCkKKyAgIFRFUFBSTyBJVi01NTAgKEZvciBCVDg0OCBNYWluIENoaXApCisgICBJVEMgRFNUVFYgKGJ0ODc4LCBzYXRlbGxpdGUpCisgICBJVEMgVmlkZW9NYWtlciAoc2FhNzE0NiwgU3RyZWFtTWFjaGluZSBzbTIxMTAsIHR2dHVuZXIpICJQVi1TTTIyMTBQKyAoUkVWOjFDKSIKKworS3dvcmxkICh3d3cua3dvcmxkLmNvbS50dykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFBDIFRWIFN0YXRpb24KKyAgIEtXT1JMRCBLVy1UVjg3OFIgIFRWIChubyByYWRpbykKKyAgIEtXT1JMRCBLVy1UVjg3OFJGIFRWICh3LyByYWRpbykKKworICAgS1dPUkxEIEtXLVRWTDg3OFJGIChsb3cgcHJvZmlsZSkKKworICAgS1dPUkxEIEtXLVRWNzEzWFJGIChzYWE3MTM0KQorCisKKyAgTVBFRyBUViBTdGF0aW9uIChzYW1lIGNhcmRzIGFzIGFib3ZlIHBsdXMgV2luRFZSIFNvZnR3YXJlIE1QRUcgZW4vZGVjb2RlcikKKyAgIEtXT1JMRCBLVy1UVjg3OFIgLVBybyAgIFRWIChubyBSYWRpbykKKyAgIEtXT1JMRCBLVy1UVjg3OFJGLVBybyAgIFRWICh3LyBSYWRpbykKKyAgIEtXT1JMRCBLVy1UVjg3OFIgLVVsdHJhIFRWIChubyBSYWRpbykKKyAgIEtXT1JMRCBLVy1UVjg3OFJGLVVsdHJhIFRWICh3LyBSYWRpbykKKworCisKK0pUVC8gSnVzdHkgQ29ycC5odHRwOi8vd3d3Lmp1c3R5LmNvLmpwLyAod3d3Lmp0dC5jb20uanAgd2Vic2l0ZSBkb3duKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBKVFQtMDIgKEpUVCBUVikgIlRWIHdhdGNobWF0ZSBwcm8iIChidDg0OCkgCisKK0FEUyB3d3cuYWRzdGVjaC5jb20KKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIENoYW5uZWwgU3VyZmVyIFRWICggQ0hYLTk1MCApIAorICAgQ2hhbm5lbCBTdXJmZXIgVFYrRk0gKCBDSFgtOTYwRk0gKQorCitBVkVDIHd3dy5wcm9jaGlwcy5jb20KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgQVZFQyBJbnRlcmNhcHR1cmUgKGJ0ODQ4LCB0ZWE2MzIwKQorCitOb0JyYW5kCistLS0tLS0tCisgICBUViBFeGNlbCA9IEF1c3RyYWxpYW4gTmFtZSBmb3IgIlBWLUJUODc4UCsgOEUiIG9yICI4NzhUViBSZXYuM18iCisKK01hY2ggd3d3Lm1hY2hzcGVlZC5jb20KKy0tLS0KKyAgIE1hY2ggVFYgODc4CisKK0VsaW5lIHd3dy5lbGluZS1uZXQuY29tLworLS0tLS0KKyAgIEVsaW5lIFZpc2lvbiBUVk1hc3RlciAvIFRWTWFzdGVyIEZNIChFTFYtVFZNLyBFTFYtVFZNLUZNKSA9IExSMjYgIChidDg3OCkKKyAgIEVsaW5lIFZpc2lvbiBUVk1hc3Rlci0yMDAwIChFTFYtVFZNLTIwMDAsIEVMVi1UVk0tMjAwMC1GTSk9IExSMTM4IChzYWE3MTN4KQorCitTcGlyaXQgaHR0cDovL3d3dy5zcGlyaXRtb2RlbXMuY29tLmF1LworLS0tLS0tCisgICBTcGlyaXQgVFYgVHVuZXIvVmlkZW8gQ2FwdHVyZSBDYXJkIChidDg0OCkKKworQm9zZXIgd3d3LmJvc2VyLmNvbS50dworLS0tLS0KKyAgIEhTLTg3OCBNaW5pIFBDSSBDYXB0dXJlIEFkZC1vbiBDYXJkCisgICBIUy04NzkgTWluaSBQQ0kgM0QgQXVkaW8gYW5kIENhcHR1cmUgQWRkLW9uIENhcmQgKHcvIEVTMTkzOCBTb2xvLTEpCisKK1NhdGVsY28gd3d3LmNpdHljb20tZ21iaC5kZSwgd3d3LnNhdGVsY28uZGUKKy0tLS0tLS0KKyAgIFRWLUZNID1LTkMxIHNhYTcxMzQKKyAgIFN0YW5kYXJkIFBDSSAoRFZCLVMpID0gVGVjaG5vdHJlbmQgQnVkZ2V0CisgICBTdGFuZGFyZCBQQ0kgKERWQi1TKSB3LyBDSQorICAgU2F0ZWxjbyBIaWdoZW5kIFBDSSAoRFZCLVMpID0gVGVjaG5vdHJlbmQgUHJlbWl1bQorCisKK1NlbnNvcmF5IHd3dy5zZW5zb3JheS5jb20KKy0tLS0tLS0tCisgICBTZW5zb3JheSAzMTEgKFBDLzEwNCBidXMpCisgICBTZW5zb3JheSA2MTEgKFBDSSkKKworQ0VJIChDaGFydGVyZWQgRWxlY3Ryb25pY3MgSW5kdXN0cmllcyBQdGUgTHRkIFtDRUldIFtGQ0MgSUQgSEJZXSkKKy0tLQorICBUViBUdW5lciAgLSAgSEJZLTMzQS1SQUZGTEVTICBCcm9va3RyZWUgQnQ4NDhLUEYgKyBQaGlsaXBzCisgIFRWIFR1bmVyIE1HOTkxMCAgLSAgSEJZMzNBLVRWTyAgQ0VJICsgUGhpbGlwcyBTQUE3MTEwICsgT0tJIE01NDgyNjIgKyBTVCBTVFY4NDM4Q1YKKyAgUHJpbWV0aW1lIFRWIChJU0EpCisgICBhY3F1aXJlZCBieSBTaW5nYXBvcmUgVGVjaG5vbG9naWVzCisgICBub3cgb3BlcmF0aW5nIGFzIENoYXJ0ZXJlZCBTZW1pY29uZHVjdG9yIE1hbnVmYWN0dXJpbmcKKyAgIE1hbnVmYWN0dXJlciBvZiB2aWRlbyBjYXJkcyBpcyBsaXN0ZWQgYXM6CisgICBDb2dlbnQgRWxlY3Ryb25pY3MgSW5kdXN0cmllcyBbQ0VJXQorCitBSVRlY2gKKy0tLS0tLQorICAgV2F2ZXdhdGNoZXIgVFYgKElTQSkKKyAgIEFJVGVjaCBXYXZlV2F0Y2hlciBUVi1QQ0kgPSBjYW4gYmUgTFIyNiAoQnQ4NDgpIG9yIExSNTAgKEJUODc4KQorICAgV2F2ZVdhdGNoZXIgVFZSLTIwMiBUVi9GTSBSYWRpbyBDYXJkIChJU0EpCisKK01BWFJPTgorLS0tLS0tCisgICBNYXhyb24gTWF4VFYvRk0gUmFkaW8gKEtXLVRWODc4LUZOVCkgPSBLd29ybGQgb3IgSlctVFY4NzgtRkJLCisKK3d3dy5pZHMtaW1hZ2luZy5kZQorLS0tLS0tLS0tLS0tLS0tLS0tCisgICBGYWxjb24gU2VyaWVzIChjYXB0dXJlIG9ubHkpCisgSW4gVVNBOiBodHRwOi8vd3d3LnRoZWltYWdpbmdzb3VyY2UuY29tLworICAgREZHL0xDMQkKKword3d3LnNrbmV0LXdlYi5jby5qcAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgU0tuZXQgTW9uc3RlciBUViAoc2FhNzEzNCkKKworQS1NYXggd3d3LmFtYXhoay5jb20gKENvbG9ybWF4LCBBbWF4LCBOYXBhKQorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgQVBBQyBWaWV3Y29tcCA4NzgKKworQ3liZXJ0YWlubWVudAorLS0tLS0tLS0tLS0tLQorICAgQ3liZXJNYWlsIEFWIFZpZGVvIEVtYWlsIEtpdCB3LyBQQ0kgQ2FwdHVyZSBDYXJkIChjYXB0dXJlIG9ubHkpCisgICBDeWJlck1haWwgWHRyZW1lCisgIFRoZXNlIGFyZSBGbHl2aWRlbworCitWQ1IgKGh0dHA6Ly93d3cudmNyaW5jLmNvbS8pIAorLS0tCisgIFZpZGVvIENhdGNoZXIgMTYKKworVHdpbmhhbgorLS0tLS0tLQorICAgRFNUIENhcmQvRFNULUlQIChidDg3OCwgdHdpbmhhbiBhc2ljKSBWUC0xMDIwCisgICAgU29sZCBhczoKKyAgICAgS1dvcmxkIERWQlMgU2F0ZWxsaXRlIFRWLUNhcmQKKyAgICAgUG93ZXJjb2xvciBEU1RWIFNhdGVsbGl0ZSBUdW5lciBDYXJkCisgICAgIFByb2xpbmsgUGl4ZWx2aWV3IERUVjIwMDAKKyAgICAgUHJvdmlkZW8gUFYtOTExIERpZ2l0YWwgU2F0ZWxsaXRlIFRWIFR1bmVyIENhcmQgV2l0aCBDb21tb24gSW50ZXJmYWNlID8KKyAgIERTVC1DSSBDYXJkIChEVkIgU2F0ZWxsaXRlKSBWUC0xMDMwCisgICBEQ1QgQ2FyZCAoRFZCIGNhYmxlKQorCitNU0kKKy0tLQorICAgIE1TSSBUVkBueXdoZXJlIFR1bmVyIENhcmQgKE1TLTg4NzYpIChDWDIzODgxLzg4MykgTm90IEJ0ODc4IGNvbXBhdGlibGUuCisgICAgTVMtODQwMSBEVkItUworCitGb2N1cyB3d3cuZm9jdXNpbmZvLmNvbQorLS0tLS0KKyAgICBJblZpZGVvIFBDSSAoYnQ4NzgpCisKK1NkaXNpbGsgd3d3LnNkaXNpbGsuY29tLworLS0tLS0tLQorICAgIFNESSBTaWxrIDEwMAorICAgIFNESSBTaWxrIDIwMCBTREkgSW5wdXQgQ2FyZAorCit3d3cuZXVyZXN5cy5jb20KKyAgICBQSUNPTE8gc2VyaWVzIAorCitQTUMvUGFjZQord3d3LnBhY2Vjb20uY28udWsgd2Vic2l0ZSBjbG9zZWQKKworTWVyY3VyeSB3d3cua29iaWFuLmNvbSAoVUsgYW5kIEZSKQorICAgIExSNTAKKyAgICBMUjEzOFJCRy1SeCAgPT0gTFIxMzgKKworVEVDIHNvdW5kIChwYWNrYWdlIGFuZCBtYW51YWxzIGRvbid0IGhhdmUgYW55IG90aGVyIG1hbnVmYWN0dXJlciBpbmZvKSBUZWNTb3VuZAorICAgIFRob3VnaCBlZHVjYXRlZCBnb29nbGluZyBmb3VuZDogd3d3LnRlY2htYWtlcnMuY29tCisgICAgVFYtTWF0ZSA9IFpvbHRyaXggVlAtODQ4MgorCitMb3JlbnplbiB3d3cubG9yZW56ZW4uZGUKKy0tLS0tLS0tCisgICAgIFNMIERWQi1TIFBDSSA9IFRlY2hub3RyZW5kIEJ1ZGdldCBQQ0kgKHN1MTI3OCBvciBic3J1IHZlcnNpb24pCisKK09yaWdvICgudWspIHd3dy5vcmlnbzIwMDAuY29tCisgICAgIFBDIFRWIENhcmQgPSBMUjUwCisKK0kvTyBNYWdpYyB3d3cuaW9tYWdpYy5jb20KKy0tLS0tLS0tLQorICAgIFBDIFBWUiAtIERlc2t0b3AgVFYgUGVyc29uYWwgVmlkZW8gUmVjb3JkZXIgRFItUENUVjEwMCA9IFBpbm5hY2xlIFJPQjJELTUxMDA5NDY0IDQuMCArIEN5YmVybGluayBQb3dlclZDUiBJSQorCitBcm93YW5hCistLS0tLS0tCisgICAgVFYtS2FydGUgLyBQb3NvIFBvd2VyIFRWICg/KSA9IFpvbHRyaXggVlAtODQ4MiAoPykKKworaVRWQzE1IGJvYXJkczoKKy0tLS0tLS0tLS0tLS0KK2t1cm91dG9zaGlrb3UuY29tIElUVkMxNQoreXVhbi5jb20gTVBHMTYwIFBDSSBUViAoSW50ZXJuYWwgUENJIE1QRUcyIGVuY29kZXIgY2FyZCBwbHVzIFRWLXR1bmVyKQorCitBc3VzIHd3dy5hc3VzY29tLmNvbQorICAgQXN1cyBUViBUdW5lciBDYXJkIDg4MCBOVFNDIChsb3cgcHJvZmlsZSwgY3gyMzg4MCkKKyAgIEFzdXMgVFYgKHNhYTcxMzQpCisKK0hvb250ZWNoCistLS0tLS0tLQoraHR0cDovL3d3dy5ob29udGVjaC5jb20va29yZWFuL2Rvd25sb2FkL2Rvd25fZHJpdmVyX2xpc3QwMy5odG1sCisgICBIQVJUIFZpc2lvbiA4NDggKEgtQVJUIFZpc2lvbiA4NDgpCisgICBIQVJUIFZpc2lvbiA4NzggKEgtQXJ0IFZpc2lvbiA4NzgpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvSUNzIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0lDcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yjc0OTEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0lDcwpAQCAtMCwwICsxLDM3IEBACithbGwgYm9hcmRzOgorCitCcm9va3RyZWUgQnQ4NDgvODQ4QS84NDkvODc4Lzg3OTogdmlkZW8gY2FwdHVyZSBjaGlwCisKKworCitNaXJvIFBDVFY6CisKK1BoaWxpcHMgb3IgVGVtaWMgVHVuZXIKKworCisKK0hhdXBwYXVnZSBXaW4vVFYgcGNpICh2ZXJzaW9uIDQwNSk6CisKK01pY3JvY2hpcCAyNExDMDJCIG9yCitQaGlsaXBzIDg1ODJFMlk6IDI1NiBCeXRlIEVFUFJPTSB3aXRoIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgSTJDIDB4YTAtMHhhMSwgKDI0TEMwMkIgYWxzbyByZXNwb25kcyB0byAweGEyLTB4YWYpCitQaGlsaXBzIFNBQTUyNDZBR1AvRTogVmlkZW90ZXh0IGRlY29kZXIgY2hpcCwgSTJDIDB4MjItMHgyMworVERBOTgwMDogc291bmQgZGVjb2RlcgorV2luYm9uZCBXMjQyNTdBUy0zNTogMzJLeDggQ01PUyBzdGF0aWMgUkFNIChWaWRlb3RleHQgYnVmZmVyIG1lbSkKKzE0MDUyQjogYW5hbG9nIHN3aXRjaCBmb3Igc2VsZWN0aW9uIG9mIHNvdW5kIHNvdXJjZQorCitQQUw6IAorVERBNTczNzogVkhGLCBoeXBlcmJhbmQgYW5kIFVIRiBtaXhlci9vc2NpbGxhdG9yIGZvciBUViBhbmQgVkNSIDMtYmFuZCB0dW5lcnMKK1RTQTU1MjI6IDEuNCBHSHogSTJDLWJ1cyBjb250cm9sbGVkIHN5bnRoZXNpemVyLCBJMkMgMHhjMi0weGMzCisKK05UU0M6CitUREE1NzMxOiBWSEYsIGh5cGVyYmFuZCBhbmQgVUhGIG1peGVyL29zY2lsbGF0b3IgZm9yIFRWIGFuZCBWQ1IgMy1iYW5kIHR1bmVycworVFNBNTUxODogbm8gZGF0YXNoZWV0IGF2YWlsYWJsZSBvbiBQaGlsaXBzIHNpdGUKKworCisKK1NUQiBUViBwY2k6CisKKz8/PworaWYgeW91IHdhbnQgYmV0dGVyIHN1cHBvcnQgZm9yIFNUQiBjYXJkcyBzZW5kIG1lIGluZm8hCitMb29rIGF0IHRoZSBib2FyZCEgV2hhdCBjaGlwcyBhcmUgb24gaXQ/CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvSW5zbW9kLW9wdGlvbnMgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvSW5zbW9kLW9wdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JiNWE1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9JbnNtb2Qtb3B0aW9ucwpAQCAtMCwwICsxLDE3MyBAQAorCitOb3RlOiAibW9kaW5mbyA8bW9kdWxlPiIgcHJpbnRzIHZhcmlvdXMgaW5mb3JtYXRpb25zIGFib3V0IGEga2VybmVsCittb2R1bGUsIGFtb25nIHRoZW0gYSBjb21wbGV0ZSBhbmQgdXAtdG8tZGF0ZSBsaXN0IG9mIGluc21vZCBvcHRpb25zLgorVGhpcyBsaXN0IHRlbmRzIHRvIGJlIG91dGRhdGVkIGJlY2F1c2UgaXQgaXMgdXBkYXRlZCBtYW51YWxseSAuLi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYnR0di5vCisJdGhlIGJ0ODQ4Lzg3OCAoZ3JhYmJlciBjaGlwKSBkcml2ZXIKKworCWluc21vZCBhcmdzOgorCQljYXJkPW4JCWNhcmQgdHlwZSwgc2VlIENBUkRMSVNUIGZvciBhIGxpc3QuCisJCXR1bmVyPW4JCXR1bmVyIHR5cGUsIHNlZSBDQVJETElTVCBmb3IgYSBsaXN0LgorCQlyYWRpbz0wLzEJY2FyZCBzdXBwb3J0cyByYWRpbworCQlwbGw9MC8xLzIJcGxsIHNldHRpbmdzCisJCQkwOiBkb24ndCB1c2UgUExMCisJCQkxOiAyOCBNSHogY3J5c3RhbCBpbnN0YWxsZWQKKwkJCTI6IDM1IE1IeiBjcnlzdGFsIGluc3RhbGxlZAorCisJCXRyaXRvbjE9MC8xICAgICBmb3IgVHJpdG9uMSAoK290aGVycykgY29tcGF0aWJpbGl0eQorCQl2c2Z4PTAvMQl5ZXQgYW5vdGhlciBjaGlwc2V0IGJ1ZyBjb21wYXRpYmlsaXR5IGJpdAorCQkJCXNlZSBSRUFETUUucXVpcmtzIGZvciBkZXRhaWxzIG9uIHRoZXNlIHR3by4KKworCQliaWdlbmRpYW49bglTZXQgdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIGdmeCBmcmFtZWJ1ZmZlci4KKwkJCQlEZWZhdWx0IGlzIG5hdGl2ZSBlbmRpYW4uCisJCWZpZWxkbnI9MC8xCUNvdW50IGZpZWxkcy4gIFNvbWUgVFYgZGVzY3JhbWJsaW5nIHNvZnR3YXJlCisJCQkJbmVlZHMgdGhpcywgZm9yIG90aGVycyBpdCBvbmx5IGdlbmVyYXRlcworCQkJCTUwIHVzZWxlc3MgSVJRcy9zZWMuICBkZWZhdWx0IGlzIDAgKG9mZikuCisJCWF1dG9sb2FkPTAvMQlhdXRvbG9hZCBoZWxwZXIgbW9kdWxlcyAodHVuZXIsIGF1ZGlvKS4KKwkJCQlkZWZhdWx0IGlzIDEgKG9uKS4KKwkJYnR0dl92ZXJib3NlPTAvMS8yICB2ZXJib3NlIGxldmVsIChhdCBpbnNtb2QgdGltZSwgd2hpbGUKKwkJCQlsb29raW5nIGF0IHRoZSBoYXJkd2FyZSkuICBkZWZhdWx0IGlzIDEuCisJCWJ0dHZfZGVidWc9MC8xCWRlYnVnIG1lc3NhZ2VzIChmb3IgY2FwdHVyZSkuCisJCQkJZGVmYXVsdCBpcyAwIChvZmYpLgorCQlpcnFfZGVidWc9MC8xCWlycSBoYW5kbGVyIGRlYnVnIG1lc3NhZ2VzLgorCQkJCWRlZmF1bHQgaXMgMCAob2ZmKS4KKwkJZ2J1ZmZlcnM9Mi0zMgludW1iZXIgb2YgY2FwdHVyZSBidWZmZXJzIGZvciBtbWFwJ2VkIGNhcHR1cmUuCisJCQkJZGVmYXVsdCBpcyA0LgorCQlnYnVmc2l6ZT0Jc2l6ZSBvZiBjYXB0dXJlIGJ1ZmZlcnMuIGRlZmF1bHQgYW5kCisJCQkJbWF4aW11bSB2YWx1ZSBpcyAweDIwODAwMCAofjJNQikKKwkJbm9fb3ZlcmxheT0wCUVuYWJsZSBvdmVybGF5IG9uIGJyb2tlbiBoYXJkd2FyZS4gIFRoZXJlCisJCQkJYXJlIHNvbWUgY2hpcHNldHMgKFNJUyBmb3IgZXhhbXBsZSkgd2hpY2gKKwkJCQlhcmUga25vd24gdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSBQQ0kgRE1BCisJCQkJcHVzaCB1c2VkIGJ5IGJ0dHYuICBidHR2IHdpbGwgZGlzYWJsZSBvdmVybGF5CisJCQkJYnkgZGVmYXVsdCBvbiB0aGlzIGhhcmR3YXJlIHRvIGF2b2lkIGNyYXNoZXMuCisJCQkJV2l0aCB0aGlzIGluc21vZCBvcHRpb24geW91IGNhbiBvdmVycmlkZSB0aGlzLgorCQlhdXRvbXV0ZT0wLzEJQXV0b21hdGljYWxseSBtdXRlcyB0aGUgc291bmQgaWYgdGhlcmUgaXMKKwkJCQlubyBUViBzaWduYWwsIG9uIGJ5IGRlZmF1bHQuICBZb3UgbWlnaHQgdHJ5CisJCQkJdG8gZGlzYWJsZSB0aGlzIGlmIHlvdSBoYXZlIGJhZCBpbnB1dCBzaWduYWwKKwkJCQlxdWFsaXR5IHdoaWNoIGxlYWRpbmcgdG8gdW53YW50ZWQgc291bmQKKwkJCQlkcm9wb3V0cy4KKwkJY2hyb21hX2FnYz0wLzEJQUdDIG9mIGNocm9tYSBzaWduYWwsIG9mZiBieSBkZWZhdWx0LgorCQlhZGNfY3J1c2g9MC8xCUx1bWluYW5jZSBBREMgY3J1c2gsIG9uIGJ5IGRlZmF1bHQuCisKKwkJYnR0dl9ncGlvPTAvMQorCQlncGlvbWFzaz0KKwkJYXVkaW9hbGw9CisJCWF1ZGlvbXV4PQorCQkJCVNlZSBTb3VuZC1GQVEgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24uCisKKwlyZW1hcCwgY2FyZCwgcmFkaW8gYW5kIHBsbCBhY2NlcHQgdXAgdG8gZm91ciBjb21tYS1zZXBhcmF0ZWQgYXJndW1lbnRzCisJKGZvciBtdWx0aXBsZSBib2FyZHMpLgorCit0dW5lci5vCisJVGhlIHR1bmVyIGRyaXZlci4gIFlvdSBuZWVkIHRoaXMgdW5sZXNzIHlvdSB3YW50IHRvIHVzZSBvbmx5CisJd2l0aCBhIGNhbWVyYSBvciBleHRlcm5hbCB0dW5lciAuLi4KKworCWluc21vZCBhcmdzOgorCQlkZWJ1Zz0xCQlwcmludCBzb21lIGRlYnVnIGluZm8gdG8gdGhlIHN5c2xvZworCQl0eXBlPW4JCXR5cGUgb2YgdGhlIHR1bmVyIGNoaXAuIG4gYXMgZm9sbG93czoKKwkJCQlzZWUgQ0FSRExJU1QgZm9yIGEgY29tcGxldGUgbGlzdC4KKwkJcGFsPVtiZGdpbF0Jc2VsZWN0IFBBTCB2YXJpYW50ICh1c2VkIGZvciBzb21lIHR1bmVycworCQkJCW9ubHksIGltcG9ydGFudCBmb3IgdGhlIGF1ZGlvIGNhcnJpZXIpLgorCit0dm1peGVyLm8KKwlyZWdpc3RlcnMgYSBtaXhlciBkZXZpY2UgZm9yIHRoZSBUViBjYXJkJ3Mgdm9sdW1lL2Jhc3MvdHJlYmxlCisJY29udHJvbHMgKHJlcXVpcmVzIGEgaTJjIGF1ZGlvIGNvbnRyb2wgY2hpcCBsaWtlIHRoZSBtc3AzNDAwKS4KKworCWluc21vZCBhcmdzOgorCQlkZWJ1Zz0xCQlwcmludCBzb21lIGRlYnVnIGluZm8gdG8gdGhlIHN5c2xvZy4KKwkJZGV2bnI9bgkJYWxsb2NhdGUgZGV2aWNlICNuICgwID09IC9kZXYvbWl4ZXIsCisJCQkJMSA9IC9kZXYvbWl4ZXIxLCAuLi4pLCBkZWZhdWx0IGlzIHRvCisJCQkJdXNlIHRoZSBmaXJzdCBmcmVlIG9uZS4KKwordHZhdWRpby5vCisJbmV3LCBleHBlcmltZW50YWwgbW9kdWxlIHdoaWNoIGlzIHN1cHBvcnRlZCB0byBwcm92aWRlIGEgc2luZ2xlCisJZHJpdmVyIGZvciBhbGwgc2ltcGxlIGkyYyBhdWRpbyBjb250cm9sIGNoaXBzICh0ZGEvdGVhKikuCisKKwlpbnNtb2QgYXJnczoKKwkJdGRhODQyNSAgPSAxCWVuYWJsZS9kaXNhYmxlIHRoZSBzdXBwb3J0IGZvciB0aGUKKwkJdGRhOTg0MCAgPSAxCXZhcmlvdXMgY2hpcHMuCisJCXRkYTk4NTAgID0gMQlUaGUgdGVhNjMwMCBjYW4ndCBiZSBhdXRvZGV0ZWN0ZWQgYW5kIGlzCisJCXRkYTk4NTUgID0gMQl0aGVyZWZvcmUgb2ZmIGJ5IGRlZmF1bHQsIGlmIHlvdSBoYXZlCisJCXRkYTk4NzMgID0gMQl0aGlzIG9uZSBvbiB5b3VyIGNhcmQgKFNUQiB1c2VzIHRoZXNlKQorCQl0ZGE5ODc0YSA9IDEJeW91IGhhdmUgdG8gZW5hYmxlIGl0IGV4cGxpY2l0bHkuCisJCXRlYTYzMDAgID0gMAlUaGUgdHdvIHRkYTk4NXggY2hpcHMgdXNlIHRoZSBzYW1lIGkyYworCQl0ZWE2NDIwICA9IDEJYWRkcmVzcyBhbmQgY2FuJ3QgYmUgZGlzdHVyZ2lzaGVkIGZyb20KKwkJcGljMTZjNTQgPSAxCWVhY2ggb3RoZXIsIHlvdSBtaWdodCBoYXZlIHRvIGRpc2FibGUKKwkJCQl0aGUgd3Jvbmcgb25lLgorCQlkZWJ1ZyA9IDEJcHJpbnQgZGVidWcgbWVzc2FnZXMKKworCWluc21vZCBhcmdzIGZvciB0ZGE5ODc0YToKKwkJdGRhOTg3NGFfU0lGPTEvMglzZWxlY3Qgc291bmQgSUYgaW5wdXQgcGluICgxIG9yIDIpCisJCQkJCShkZWZhdWx0IGlzIHBpbiAxKQorCQl0ZGE5ODc0YV9BTVNFTD0wLzEJYXV0by1tdXRlIHNlbGVjdCBmb3IgTklDQU0gKGRlZmF1bHQ9MCkKKwkJCQkJUGxlYXNlIHJlYWQgbm90ZSAzIGJlbG93IQorCQl0ZGE5ODc0YV9TVEQ9bgkJc2VsZWN0IFRWIHNvdW5kIHN0YW5kYXJkICgwLi44KToKKwkJCQkJMCAtIEEyLCBCL0cKKwkJCQkJMSAtIEEyLCBNIChLb3JlYSkKKwkJCQkJMiAtIEEyLCBEL0sgKDEpCisJCQkJCTMgLSBBMiwgRC9LICgyKQorCQkJCQk0IC0gQTIsIEQvSyAoMykKKwkJCQkJNSAtIE5JQ0FNLCBJCisJCQkJCTYgLSBOSUNBTSwgQi9HCisJCQkJCTcgLSBOSUNBTSwgRC9LIChkZWZhdWx0KQorCQkJCQk4IC0gTklDQU0sIEwKKworCU5vdGUgMTogdGRhOTg3NGEgc3VwcG9ydHMgYm90aCB0ZGE5ODc0aCAob2xkKSBhbmQgdGRhOTg3NGEgKG5ldykgY2hpcHMuCisJTm90ZSAyOiB0ZGE5ODc0aC9hIGFuZCB0ZGE5ODc1ICh3aGljaCBpcyBzdXBwb3J0ZWQgc2VwYXJhdGVseSBieQorCXRkYTk4NzUubykgdXNlIHRoZSBzYW1lIGkyYyBhZGRyZXNzIHNvIGJvdGggbW9kdWxlcyBzaG91bGQgbm90IGJlCisJdXNlZCBhdCB0aGUgc2FtZSB0aW1lLgorCU5vdGUgMzogVXNpbmcgdGRhOTg3NGFfQU1TRUwgb3B0aW9uIGRlcGVuZHMgb24geW91ciBUViBjYXJkIGRlc2lnbiEKKwkJQU1TRUw9MDogYXV0by1tdXRlIHdpbGwgc3dpdGNoIGJldHdlZW4gTklDQU0gc291bmQKKwkJCSBhbmQgdGhlIHNvdW5kIG9uIDFzdCBjYXJyaWVyIChpLmUuIEZNIG1vbm8gb3IgQU0pLgorCQlBTVNFTD0xOiBhdXRvLW11dGUgd2lsbCBzd2l0Y2ggYmV0d2VlbiBOSUNBTSBzb3VuZAorCQkJIGFuZCB0aGUgYW5hbG9nIG1vbm8gaW5wdXQgKE1PTk9JTiBwaW4pLgorCUlmIHRkYTk4NzRhIGRlY29kZXIgb24geW91ciBjYXJkIGhhcyBNT05PSU4gcGluIG5vdCBjb25uZWN0ZWQsIHRoZW4KKwl1c2Ugb25seSB0ZGE5ODc0X0FNU0VMPTAgb3IgZG9uJ3Qgc3BlY2lmeSB0aGlzIG9wdGlvbiBhdCBhbGwuCisJRm9yIGV4YW1wbGU6CisJICBjYXJkPTY1IChGbHlWaWRlbyAyMDAwUykgLSBzZXQgQU1TRUw9MSBvciBBTVNFTD0wCisJICBjYXJkPTcyIChQcm9saW5rIFBWLUJUODc4UCByZXYuOUIpIC0gc2V0IEFNU0VMPTAgb25seQorCittc3AzNDAwLm8KKwlUaGUgZHJpdmVyIGZvciB0aGUgbXNwMzR4eCBzb3VuZCBwcm9jZXNzb3IgY2hpcHMuIElmIHlvdSBoYXZlIGEKKwlzdGVyZW8gY2FyZCwgeW91IHByb2JhYmx5IHdhbnQgdG8gaW5zbW9kIHRoaXMgb25lLgorCisJaW5zbW9kIGFyZ3M6CisJCWRlYnVnPTEvMglwcmludCBzb21lIGRlYnVnIGluZm8gdG8gdGhlIHN5c2xvZywKKwkJCQkyIGlzIG1vcmUgdmVyYm9zZS4KKwkJc2ltcGxlPTEJVXNlIHRoZSAic2hvcnQgcHJvZ3JhbW1pbmciIG1ldGhvZC4gIE5ld2VyCisJCQkJbXNwMzR4eCB2ZXJzaW9ucyBzdXBwb3J0IHRoaXMuICBZb3UgbmVlZCB0aGlzCisJCQkJZm9yIGRieCBzdGVyZW8uICBEZWZhdWx0IGlzIG9uIGlmIHN1cHBvcnRlZCBieQorCQkJCXRoZSBjaGlwLgorCQlvbmNlPTEJCURvbid0IGNoZWNrIHRoZSBUVi1zdGF0aW9ucyBBdWRpbyBtb2RlCisJCQkJZXZlcnkgZmV3IHNlY29uZHMsIGJ1dCBvbmx5IG9uY2UgYWZ0ZXIKKwkJCQljaGFubmVsIHN3aXRjaGVzLgorCQlhbXNvdW5kPTEJQXVkaW8gY2FycmllciBpcyBBTS9OSUNBTSBhdCA2LjUgTWh6LiAgVGhpcworCQkJCXNob3VsZCBpbXByb3ZlIHRoaW5ncyBmb3IgZnJlbmNoIHBlb3BsZSwgdGhlCisJCQkJY2FycmllciBhdXRvc2NhbiBzZWVtcyB0byB3b3JrIHdpdGggRk0gb25seS4uLgorCit0ZWE2MzAwLm8gLSBPQlNPTEVURSAodXNlIHR2YXVkaW8gaW5zdGVhZCkKKwlUaGUgZHJpdmVyIGZvciB0aGUgdGVhNjMwMCBmYWRlciBjaGlwLiAgSWYgeW91IGhhdmUgYSBzdGVyZW8KKwljYXJkIGFuZCB0aGUgbXNwMzQwMC5vIGRvZXNuJ3Qgd29yaywgeW91IG1pZ2h0IHdhbnQgdG8gdHJ5IHRoaXMKKwlvbmUuICBUaGlzIGNoaXAgaXMgc2VlbiBvbiBtb3N0IFNUQiBUVi9GTSBjYXJkcyAodXN1YWxseSBmcm9tCisJR2F0ZXdheSBPRU0gc29sZCBzdXJwbHVzIG9uIGF1Y3Rpb24gc2l0ZXMpLgorCisJaW5zbW9kIGFyZ3M6CisJCWRlYnVnPTEJCXByaW50IHNvbWUgZGVidWcgaW5mbyB0byB0aGUgc3lzbG9nLgorCit0ZGE4NDI1Lm8gLSBPQlNPTEVURSAodXNlIHR2YXVkaW8gaW5zdGVhZCkKKwlUaGUgZHJpdmVyIGZvciB0aGUgdGRhODQyNSBmYWRlciBjaGlwLiAgVGhpcyBkcml2ZXIgdXNlZCB0byBiZQorCXBhcnQgb2YgYnR0di5jLCBzbyBpZiB5b3VyIHNvdW5kIHVzZWQgdG8gd29yayBidXQgZG9lcyBub3QKKwlhbnltb3JlLCB0cnkgbG9hZGluZyB0aGlzIG1vZHVsZS4KKworCWluc21vZCBhcmdzOgorCQlkZWJ1Zz0xCQlwcmludCBzb21lIGRlYnVnIGluZm8gdG8gdGhlIHN5c2xvZy4KKwordGRhOTg1eC5vIC0gT0JTT0xFVEUgKHVzZSB0dmF1ZGlvIGluc3RlYWQpCisJVGhlIGRyaXZlciBmb3IgdGhlIHRkYTk4NTAvNTUgYXVkaW8gY2hpcHMuCisKKwlpbnNtb2QgYXJnczoKKwkJZGVidWc9MQkJcHJpbnQgc29tZSBkZWJ1ZyBpbmZvIHRvIHRoZSBzeXNsb2cuCisJCWNoaXA9OTg1MC85ODU1CXNldCB0aGUgY2hpcCB0eXBlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01BS0VERVYgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvTUFLRURFVgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzI5YmE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01BS0VERVYKQEAgLTAsMCArMSwyOCBAQAorIyEvYmluL2Jhc2gKKworZnVuY3Rpb24gbWFrZWRldiAoKSB7CisKKwlmb3IgZGV2IGluIDAgMSAyIDM7IGRvCisJCWVjaG8gIi9kZXYvJDEkZGV2OiBjaGFyIDgxICRbICQyICsgJGRldiBdIgorCQlybSAtZiAvZGV2LyQxJGRldgorCQlta25vZCAvZGV2LyQxJGRldiBjIDgxICRbICQyICsgJGRldiBdCisJCWNobW9kIDY2NiAvZGV2LyQxJGRldgorCWRvbmUKKworCSMgc3ltbGluayBmb3IgZGVmYXVsdCBkZXZpY2UKKwlybSAtZiAvZGV2LyQxCisJbG4gLXMgL2Rldi8kezF9MCAvZGV2LyQxCit9CisKKyMgc2VlIGh0dHA6Ly9yb2FkcnVubmVyLnN3YW5zZWEudWsubGludXgub3JnL3Y0bGFwaS5zaHRtbAorCitlY2hvICIqKiogbmV3IGRldmljZSBuYW1lcyAqKioiCittYWtlZGV2IHZpZGVvIDAKK21ha2VkZXYgcmFkaW8gNjQKK21ha2VkZXYgdnR4IDE5MgorbWFrZWRldiB2YmkgMjI0CisKKyNlY2hvICIqKiogb2xkIGRldmljZSBuYW1lcyAoZm9yIGNvbXBhdGliaWxpdHkgb25seSkgKioqIgorI21ha2VkZXYgYnR0diAwCisjbWFrZWRldiBidHR2LWZtIDY0CisjbWFrZWRldiBidHR2LXZiaSAyMjQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Nb2Rwcm9iZS5jb25mIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01vZHByb2JlLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVmMTQ2NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Nb2Rwcm9iZS5jb25mCkBAIC0wLDAgKzEsMTEgQEAKKyMgaTJjCithbGlhcyBjaGFyLW1ham9yLTg5CWkyYy1kZXYKK29wdGlvbnMgaTJjLWNvcmUJaTJjX2RlYnVnPTEKK29wdGlvbnMgaTJjLWFsZ28tYml0CWJpdF90ZXN0PTEKKworIyBidHR2CithbGlhcyBjaGFyLW1ham9yLTgxCXZpZGVvZGV2CithbGlhcyBjaGFyLW1ham9yLTgxLTAJYnR0dgorb3B0aW9ucwlidHR2CQljYXJkPTIgcmFkaW89MQorb3B0aW9ucwl0dW5lcgkJZGVidWc9MQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvTW9kdWxlcy5jb25mIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01vZHVsZXMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTNmMTU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01vZHVsZXMuY29uZgpAQCAtMCwwICsxLDE0IEBACisjIEZvciBtb2Rlcm4ga2VybmVscyAoMi42IG9yIGFib3ZlKSwgdGhpcyBiZWxvbmdzIGluIC9ldGMvbW9kcHJvYmUuY29uZgorIyBGb3IgZm9yIDIuNCBrZXJuZWxzIG9yIGVhcmxpZXIsIHRoaXMgYmVsb25ncyBpbiAvZXRjL21vZHVsZXMuY29uZi4KKworIyBpMmMKK2FsaWFzIGNoYXItbWFqb3ItODkJaTJjLWRldgorb3B0aW9ucyBpMmMtY29yZQlpMmNfZGVidWc9MQorb3B0aW9ucyBpMmMtYWxnby1iaXQJYml0X3Rlc3Q9MQorCisjIGJ0dHYKK2FsaWFzIGNoYXItbWFqb3ItODEJdmlkZW9kZXYKK2FsaWFzIGNoYXItbWFqb3ItODEtMAlidHR2CitvcHRpb25zCWJ0dHYJCWNhcmQ9MiByYWRpbz0xCitvcHRpb25zCXR1bmVyCQlkZWJ1Zz0xCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9QUk9CTEVNUyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9QUk9CTEVNUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTMxZTllCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1BST0JMRU1TCkBAIC0wLDAgKzEsNjIgQEAKKy0gU3RhcnQgY2FwdHVyaW5nIGJ5IHByZXNzaW5nICJjIiBvciBieSBzZWxlY3RpbmcgaXQgdmlhIGEgbWVudSEKKworLSBTdGFydCBjYXB0dXJpbmcgYnkgcHJlc3NpbmcgImMiIG9yIGJ5IHNlbGVjdGluZyBpdCB2aWEgYSBtZW51ISEhCisKKy0gVGhlIG1lbW9yeSBvZiBzb21lIFMzIGNhcmRzIGlzIG5vdCByZWNvZ25pemVkIHJpZ2h0OgorICAKKyAgRmlyc3Qgb2YgYWxsLCBpZiB5b3UgYXJlIG5vdCB1c2luZyBYRnJlZS0zLjIgb3IgbmV3ZXIsIHVwZ3JhZGUgQVQgTEVBU1QgdG8KKyAgWEZyZWUtMy4yQSEgVGhpcyBzb2x2ZWQgdGhlIHByb2JsZW0gZm9yIG1vc3QgcGVvcGxlLgorCisgIFN0YXJ0IHVwIFgxMSBsaWtlIHRoaXM6ICJYRjg2X1MzIC1wcm9iZW9ubHkiIGFuZCB3cml0ZSBkb3duIHdoZXJlIHRoZQorICBsaW5lYXIgZnJhbWUgYnVmZmVyIGlzLgorICBJZiBpdCBpcyBkaWZmZXJlbnQgdG8gdGhlIGFkZHJlc3MgZm91bmQgYnkgYnR0diBpbnN0YWxsIGJ0dHYgbGlrZSB0aGlzOgorICAiaW5zbW9kIGJ0dHYgdmlkbWVtPTB4ZmIwIgorICBpZiB0aGUgbGluZWFyIGZyYW1lIGJ1ZmZlciBpcyBhdCAweGZiMDAwMDAwIChpLmUuIG9taXQgdGhlIGxhc3QgNSB6ZXJvcyEpCisKKyAgU29tZSBTMyBjYXJkcyBldmVuIHRha2UgdXAgNjRNQiBvZiBtZW1vcnkgYnV0IG9ubHkgcmVwb3J0IDMyTUIgdG8gdGhlIEJJT1MuCisgIElmIHRoaXMgNjRNQiBhcmVhIG92ZXJsYXBzIHRoZSBJTyBtZW1vcnkgb2YgdGhlIEJ0ODQ4IHlvdSBhbHNvIGhhdmUgdG8KKyAgcmVtYXAgdGhpcy4gRS5nLjogaW5zbW9kIGJ0dHYgdmlkbWVtPTB4ZmIwIHJlbWFwPTB4ZmEwCisKKyAgSWYgdGhlIHZpZGVvIG1lbW9yeSBpcyBmb3VuZCBhdCB0aGUgcmlnaHQgcGxhY2UgYW5kIHRoZXJlIGFyZSBubyBhZGRyZXNzCisgIGNvbmZsaWN0cyBidXQgc3RpbGwgbm8gcGljdHVyZSAob3IgdGhlIGNvbXB1dGVyIGV2ZW4gY3Jhc2hlcyksCisgIHRyeSBkaXNhYmxpbmcgZmVhdHVyZXMgb2YgeW91ciBQQ0kgY2hpcHNldCBpbiB0aGUgQklPUyBzZXR1cC4KKworICBGcmFuayBLYXBhaG5rZSA8ZnJhbmtAa2FwYWhua2UucHJpbWEucnVoci5kZT4gYWxzbyByZXBvcnRlZCB0aGF0IHByb2JsZW1zCisgIHdpdGggaGlzIFMzIDg2OCB3ZW50IGF3YXkgd2hlbiBoZSB1cGdyYWRlZCB0byBYRnJlZSAzLjIuCisKKworLSBJIHN0aWxsIG9ubHkgZ2V0IGEgYmxhY2sgcGljdHVyZSB3aXRoIG15IFMzIGNhcmQhCisKKyAgRXZlbiB3aXRoIFhGcmVlLTMuMkEgc29tZSBwZW9wbGUgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZWlyIFMzIGNhcmRzCisgIChtb3N0bHkgd2l0aCBUcmlvIDY0IGJ1dCBhbHNvIHdpdGggc29tZSBvdGhlcnMpCisgIEdldCB0aGUgZnJlZSBkZW1vIHZlcnNpb24gb2YgQWNjZWxlcmF0ZWQgWCBmcm9tIHd3dy54aW5zaWRlLmNvbSBhbmQgdHJ5CisgIGJ0dHYgd2l0aCBpdC4gYnR0diBzZWVtcyB0byB3b3JrIHdpdGggbW9zdCBTMyBjYXJkcyB3aXRoIEFjY2VsZXJhdGVkIFguCisgIAorICBTaW5jZSBJIGRvIG5vdCBrbm93IG11Y2ggKGJldHRlciBtYWtlIHRoYXQgYWxtb3N0IG5vdGhpbmcpIGFib3V0IFZHQSBjYXJkCisgIHByb2dyYW1taW5nIEkgZG8gbm90IGtub3cgdGhlIHJlYXNvbiBmb3IgdGhpcy4KKyAgTG9va3MgbGlrZSBYRnJlZSBkb2VzIHNvbWV0aGluZyBkaWZmZXJlbnQgd2hlbiBzZXR0aW5nIHVwIHRoZSB2aWRlbyBtZW1vcnk/CisgIE1heWJlIHNvbWVib2R5IGNhbiBlbmxpZ2h0ZW4gbWU/ICAKKyAgV291bGQgYmUgbmljZSBpZiBzb21lYm9keSBjb3VsZCBnZXQgdGhpcyB0byB3b3JrIHdpdGggWEZyZWUgc2luY2UgCisgIEFjY2VsZXJhdGVkIFggY29zdHMgbW9yZSB0aGFuIHNvbWUgb2YgdGhlIGdyYWJiZXIgY2FyZHMgLi4uIAorIAorICBCZXR0ZXIgbGluZWFyIGZyYW1lIGJ1ZmZlciBzdXBwb3J0IGZvciBTMyBjYXJkcyB3aWxsIHByb2JhYmx5IGJlIGluCisgIFhGcmVlIDQuMC4KKyAgCistIEdyYWJiaW5nIGlzIG5vdCBzd2l0Y2hlZCBvZmYgd2hlbiBjaGFuZ2luZyBjb25zb2xlcyB3aXRoIFhGcmVlLgorICBUaGF0J3MgYmVjYXVzZSBYRnJlZSBhbmQgc29tZSBBY2NlbGVyYXRlZFggdmVyc2lvbnMgZG8gbm90IHNlbmQgdW5tYXAKKyAgZXZlbnRzLgorCistIFNvbWUgcG9wdXAgd2luZG93cyAoZS5nLiBvZiB0aGUgd2luZG93IG1hbmFnZXIpIGFyZSBub3QgcmVmcmVzaGVkLgorICAKKyAgRGlzYWJsZSBiYWNraW5nIHN0b3JlIGJ5IHN0YXJ0aW5nIFggd2l0aCB0aGUgb3B0aW9uICItYnMiCisKKy0gV2hlbiB1c2luZyAzMiBicHAgaW4gWEZyZWUgb3IgMjQrOGJwcCBtb2RlIGluIEFjY2VsWCAzLjEgdGhlIHN5c3RlbQorICBjYW4gc29tZXRpbWVzIGxvY2sgdXAgaWYgeW91IHVzZSBtb3JlIHRoYW4gMSBidDg0OCBjYXJkIGF0IHRoZSBzYW1lIHRpbWUuCisgIFlvdSB3aWxsIGFsd2F5cyBnZXQgcGl4ZWwgZXJyb3JzIHdoZW4gZS5nLiB1c2luZyBtb3JlIHRoYW4gMSBjYXJkIGluIGZ1bGwKKyAgc2NyZWVuIG1vZGUuIE1heWJlIHdlIG5lZWQgc29tZXRoaW5nIGZhc3RlciB0aGFuIHRoZSBQQ0kgYnVzIC4uLgorCisKKy0gU29tZSBTMyBjYXJkcyBhbmQgdGhlIE1hdHJveCBNeXN0aXF1ZSB3aWxsIHByb2R1Y2UgcGl4ZWwgZXJyb3JzIHdpdGgKKyAgZnVsbCByZXNvbHV0aW9uIGluIDMyLWJpdCBtb2RlLgorCistIFNvbWUgdmlkZW8gY2FyZHMgaGF2ZSBwcm9ibGVtcyB3aXRoIEFjY2VsZXJhdGVkIFggNC4xCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzJmNGM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRQpAQCAtMCwwICsxLDkwIEBACisKK1JlbGVhc2Ugbm90ZXMgZm9yIGJ0dHYKKz09PT09PT09PT09PT09PT09PT09PT0KKworWW91J2xsIG5lZWQgYXQgbGVhc3QgdGhlc2UgY29uZmlnIG9wdGlvbnMgZm9yIGJ0dHY6CisJQ09ORklHX0kyQz1tCisJQ09ORklHX0kyQ19BTEdPQklUPW0KKwlDT05GSUdfVklERU9fREVWPW0KKworVGhlIGxhdGVzdCBidHR2IHZlcnNpb24gaXMgYXZhaWxhYmxlIGZyb20gaHR0cDovL2J5dGVzZXgub3JnL2J0dHYvCisKKworTWFrZSBidHR2IHdvcmsgd2l0aCB5b3VyIGNhcmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0p1c3QgdHJ5ICJtb2Rwcm9iZSBidHR2IiBhbmQgc2VlIGlmIHRoYXQgd29ya3MuCisKK0lmIGl0IGRvZXNuJ3QgYnR0diBsaWtlbHkgY291bGQgbm90IGF1dG9kZXRlY3QgeW91ciBjYXJkIGFuZCBuZWVkcyBzb21lCitpbnNtb2Qgb3B0aW9ucy4gIFRoZSBtb3N0IGltcG9ydGFudCBpbnNtb2Qgb3B0aW9uIGZvciBidHR2IGlzICJjYXJkPW4iCit0byBzZWxlY3QgdGhlIGNvcnJlY3QgY2FyZCB0eXBlLiAgSWYgeW91IGdldCB2aWRlbyBidXQgbm8gc291bmQgeW91J3ZlCit2ZXJ5IGxpa2VseSBzcGVjaWZpZWQgdGhlIHdyb25nIChvciBubykgY2FyZCB0eXBlLiAgQSBsaXN0IG9mIHN1cHBvcnRlZAorY2FyZHMgaXMgaW4gQ0FSRExJU1QuYnR0dgorCitJZiBidHR2IHRha2VzIHZlcnkgbG9uZyB0byBsb2FkIChoYXBwZW5zIHNvbWV0aW1lcyB3aXRoIHRoZSBjaGVhcAorY2FyZHMgd2hpY2ggaGF2ZSBubyB0dW5lciksIHRyeSBhZGRpbmcgdGhpcyB0byB5b3VyIG1vZHVsZXMuY29uZjoKKwlvcHRpb25zIGkyYy1hbGdvLWJpdCBiaXRfdGVzdD0xCisKK0ZvciB0aGUgV2luVFYvUFZSIHlvdSBuZWVkIG9uZSBmaXJtd2FyZSBmaWxlIGZyb20gdGhlIGRyaXZlciBDRDoKK2hjd2FtYy5yYmYuICBUaGUgZmlsZSBpcyBpbiB0aGUgcHZyNDV4eHguZXhlIGFyY2hpdmUgKHNlbGYtZXh0cmFjdGluZworemlwIGZpbGUsIHVuemlwIGNhbiB1bnBhY2sgaXQpLiAgUHV0IGl0IGludG8gdGhlIC9ldGMvcHZyIGRpcmVjdG9yeSBvcgordXNlIHRoZSBmaXJtX2FsdGVyYT08cGF0aD4gaW5zbW9kIG9wdGlvbiB0byBwb2ludCB0aGUgZHJpdmVyIHRvIHRoZQorbG9jYXRpb24gb2YgdGhlIGZpbGUuCisKK0lmIHlvdXIgY2FyZCBpc24ndCBsaXN0ZWQgaW4gQ0FSRExJU1QuYnR0diBvciBpZiB5b3UgaGF2ZSB0cm91YmxlIG1ha2luZworYXVkaW8gd29yaywgeW91IHNob3VsZCByZWFkIHRoZSBTb3VuZC1GQVEuCisKKworQXV0b2RldGVjdGluZyBjYXJkcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitidHR2IHVzZXMgdGhlIFBDSSBTdWJzeXN0ZW0gSUQgdG8gYXV0b2RldGVjdCB0aGUgY2FyZCB0eXBlLiAgbHNwY2kgbGlzdHMKK3RoZSBTdWJzeXN0ZW0gSUQgaW4gdGhlIHNlY29uZCBsaW5lLCBsb29rcyBsaWtlIHRoaXM6CisKKzAwOjBhLjAgTXVsdGltZWRpYSB2aWRlbyBjb250cm9sbGVyOiBCcm9va3RyZWUgQ29ycG9yYXRpb24gQnQ4NzggKHJldiAwMikKKyAgICAgICAgU3Vic3lzdGVtOiBIYXVwcGF1Z2UgY29tcHV0ZXIgd29ya3MgSW5jLiBXaW5UVi9HTworICAgICAgICBGbGFnczogYnVzIG1hc3RlciwgbWVkaXVtIGRldnNlbCwgbGF0ZW5jeSAzMiwgSVJRIDUKKyAgICAgICAgTWVtb3J5IGF0IGUyMDAwMDAwICgzMi1iaXQsIHByZWZldGNoYWJsZSkgW3NpemU9NEtdCisKK29ubHkgYnQ4NzgtYmFzZWQgY2FyZHMgY2FuIGhhdmUgYSBzdWJzeXN0ZW0gSUQgKHdoaWNoIGRvZXMgbm90IG1lYW4KK3RoYXQgZXZlcnkgY2FyZCByZWFsbHkgaGFzIG9uZSkuICBidDg0OCBjYXJkcyBjYW4ndCBoYXZlIGEgU3Vic3lzdGVtCitJRCBhbmQgdGhlcmVmb3JlIGNhbid0IGJlIGF1dG9kZXRlY3RlZC4gIFRoZXJlIGlzIGEgbGlzdCB3aXRoIHRoZSBJRCdzCitpbiBidHR2LWNhcmRzLmMgKGluIGNhc2UgeW91IGFyZSBpbnRyZXN0ZWQgb3Igd2FudCB0byBtYWlsIHBhdGNoZXMKK3dpdGggdXBkYXRlcykuCisKKworU3RpbGwgZG9lc24ndCB3b3JrPworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJIGRvIE5PVCBoYXZlIGEgbGFiIHdpdGggMzArIGRpZmZlcmVudCBncmFiYmVyIGJvYXJkcyBhbmQgYQorUEFML05UU0MvU0VDQU0gdGVzdCBzaWduYWwgZ2VuZXJhdG9yIGF0IGhvbWUsIHNvIEkgb2Z0ZW4gY2FuJ3QKK3JlcHJvZHVjZSB5b3VyIHByb2JsZW1zLiAgVGhpcyBtYWtlcyBkZWJ1Z2dpbmcgdmVyeSBkaWZmaWN1bHQgZm9yIG1lLgorSWYgeW91IGhhdmUgc29tZSBrbm93bGVkZ2UgYW5kIHNwYXJlIHRpbWUsIHBsZWFzZSB0cnkgdG8gZml4IHRoaXMKK3lvdXJzZWxmIChwYXRjaGVzIHZlcnkgd2VsY29tZSBvZiBjb3Vyc2UuLi4pICBZb3Uga25vdzogVGhlIGxpbnV4CitzbG9nYW4gaXMgIkRvIGl0IHlvdXJzZWxmIi4KKworVGhlcmUgaXMgYSBtYWlsaW5nIGxpc3Q6IHZpZGVvNGxpbnV4LWxpc3RAcmVkaGF0LmNvbS4KK2h0dHBzOi8vbGlzdG1hbi5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8vdmlkZW80bGludXgtbGlzdAorCitJZiB5b3UgaGF2ZSB0cm91YmxlIHdpdGggc29tZSBzcGVjaWZpYyBUViBjYXJkLCB0cnkgdG8gYXNrIHRoZXJlCitpbnN0ZWFkIG9mIG1haWxpbmcgbWUgZGlyZWN0bHkuICBUaGUgY2hhbmNlIHRoYXQgc29tZW9uZSB3aXRoIHRoZQorc2FtZSBjYXJkIGxpc3RlbnMgdGhlcmUgaXMgbXVjaCBoaWdoZXIuLi4KKworRm9yIHByb2JsZW1zIHdpdGggc291bmQ6ICBUaGVyZSBhcmUgYWxvdCBvZiBkaWZmZXJlbnQgc3lzdGVtcyB1c2VkCitmb3IgVFYgc291bmQgYWxsIG92ZXIgdGhlIHdvcmxkLiAgQW5kIHRoZXJlIGFyZSBhbHNvIGRpZmZlcmVudCBjaGlwcword2hpY2ggZGVjb2RlIHRoZSBhdWRpbyBzaWduYWwuICBSZXBvcnRzIGFib3V0IHNvdW5kIHByb2JsZW1zICgic3RlcmVvCitkb2VzJ250IHdvcmsiKSBhcmUgcHJldHR5IHVzZWxlc3MgdW5sZXNzIHlvdSBpbmNsdWRlIHNvbWUgZGV0YWlscworYWJvdXQgeW91ciBoYXJkd2FyZSBhbmQgdGhlIFRWIHNvdW5kIHNjaGVtZSB1c2VkIGluIHlvdXIgY291bnRyeSAob3IKK2F0IGxlYXN0IHRoZSBjb3VudHJ5IHlvdSBhcmUgbGl2aW5nIGluKS4KKworCitGaW5hbGx5OiBJZiB5b3UgbWFpbCBzb21lIHBhdGNoZXMgZm9yIGJ0dHYgYXJvdW5kIHRoZSB3b3JsZCAodG8KK2xpbnV4LWtlcm5lbC9BbGFuL0xpbnVzLy4uLiksIHBsZWFzZSBDYzogbWUuCisKKworSGF2ZSBmdW4gd2l0aCBidHR2LAorCisgIEdlcmQKKworLS0KK0dlcmQgS25vcnIgPGtyYXhlbEBieXRlc2V4Lm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUuV0lOVklFVyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUuV0lOVklFVwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjFjZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5XSU5WSUVXCkBAIC0wLDAgKzEsMzMgQEAKKworU3VwcG9ydCBmb3IgdGhlIExlYWR0ZWsgV2luVmlldyA2MDEgVFYvRk0gYnkgSm9uIFRvbWJzIDxqb25AZ3RlLmVzaS51cy5lcz4KKworVGhpcyBjYXJkIGlzIGJhc2ljYWxseSB0aGUgc2FtZSBhcyBhbGwgdGhlIHJlc3QgKEJ0NDg0QSwgUGhpbGlwcyB0dW5lciksCit0aGUgbWFpbiBkaWZmZXJlbmNlIGlzIHRoYXQgdGhleSBoYXZlIGF0dGFjaGVkIGEgcHJvZ3JhbW1hYmxlIGF0dGVudWF0b3IgdG8gMworR1BJTyBsaW5lcyBpbiBvcmRlciB0byBnaXZlIHNvbWUgdm9sdW1lIGNvbnRyb2wuIFRoZXkgaGF2ZSBhbHNvIHN0dWNrIGFuCitpbmZyYS1yZWQgcmVtb3RlIGNvbnRyb2wgZGVjb2RlZCBvbiB0aGUgYm9hcmQsIEkgd2lsbCBhZGQgc3VwcG9ydCBmb3IgdGhpcword2hlbiBJIGdldCB0aW1lIChpdCBzaW1wbGUgZ2VuZXJhdGVzIGFuIGludGVycnVwdCBmb3IgZWFjaCBrZXkgcHJlc3MsIHdpdGgKK3RoZSBrZXkgY29kZSBpcyBwbGFjZWQgaW4gdGhlIEdQSU8gcG9ydCkuCisKK0kgZG9uJ3QgeWV0IGhhdmUgYW55IGFwcGxpY2F0aW9uIHRvIHRlc3QgdGhlIHJhZGlvIHN1cHBvcnQuIFRoZSB0dW5lcgorZnJlcXVlbmN5IHNldHRpbmcgc2hvdWxkIHdvcmsgYnV0IGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGF1ZGlvIG11bHRpcGxleGVyCitpcyB3cm9uZy4gSWYgaXQgZG9lc24ndCB3b3JrLCBzZW5kIG1lIGVtYWlsLgorCisKKy0gTm8gVGhhbmtzIHRvIExlYWR0ZWsgdGhleSByZWZ1c2VkIHRvIGFuc3dlciBhbnkgcXVlc3Rpb25zIGFib3V0IHRoZWlyCitoYXJkd2FyZS4gVGhlIGRyaXZlciB3YXMgd3JpdHRlbiBieSB2aXN1YWwgaW5zcGVjdGlvbiBvZiB0aGUgY2FyZC4gSWYgeW91Cit1c2UgdGhpcyBkcml2ZXIsIHNlbmQgYW4gZW1haWwgaW5zdWx0IHRvIHRoZW0sIGFuZCB0ZWxsIHRoZW0geW91IHdvbid0Citjb250aW51ZSBidXlpbmcgdGhlaXIgaGFyZHdhcmUgdW5sZXNzIHRoZXkgc3VwcG9ydCBMaW51eC4KKworLSBMaXR0bGUgdGhhbmtzIHRvIFByaW5jZXRvbiBUZWNobm9sb2d5IENvcnAgKGh0dHA6Ly93d3cucHJpbmNldG9uLmNvbS50dykKK3dobyBtYWtlIHRoZSBhdWRpbyBhdHRlbnVhdG9yLiBUaGVpciBwdWJsaWNseSBhdmFpbGFibGUgZGF0YS1zaGVldCBhdmFpbGFibGUKK29uIHRoZWlyIHdlYiBzaXRlIGRvZXNuJ3QgaW5jbHVkZSB0aGUgY2hpcCBwcm9ncmFtbWluZyBpbmZvcm1hdGlvbiEgSGlkZGVuCitvbiB0aGVpciBzZXJ2ZXIgYXJlIHRoZSBmdWxsIGRhdGEtc2hlZXRzLCBidXQgZG9uJ3QgYXNrIGhvdyBJIGZvdW5kIGl0LgorCitUbyB1c2UgdGhlIGRyaXZlciBJIHVzZSB0aGUgZm9sbG93aW5nIG9wdGlvbnMsIHRoZSB0dW5lciBhbmQgcGxsIHNldHRpbmdzIG1pZ2h0CitiZSBkaWZmZXJlbnQgaW4geW91ciBjb3VudHJ5CisKK2luc21vZCB2aWRlb2RldgoraW5zbW9kIGkyYyBzY2FuPTEgaTJjX2RlYnVnPTAgdmVyYm9zZT0wCitpbnNtb2QgdHVuZXIgdHlwZT0xIGRlYnVnPTAKK2luc21vZCBidHR2ICBwbGw9MSByYWRpbz0xIGNhcmQ9MTcKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLmZyZWV6ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWY4ZDQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUKQEAgLTAsMCArMSw3NCBAQAorCitJZiB0aGUgYm94IGZyZWV6ZXMgaGFyZCB3aXRoIGJ0dHYgLi4uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0l0IG1pZ2h0IGJlIGEgYnR0diBkcml2ZXIgYnVnLiAgSXQgYWxzbyBtaWdodCBiZSBiYWQgaGFyZHdhcmUuICBJdCBhbHNvCittaWdodCBiZSBzb21ldGhpbmcgZWxzZSAuLi4KKworSnVzdCBtYWlsaW5nIG1lICJidHR2IGZyZWV6ZXMiIGlzbid0IGdvaW5nIHRvIGhlbHAgbXVjaC4gIFRoaXMgUkVBRE1FCitoYXMgYSBmZXcgaGludHMgaG93IHlvdSBjYW4gaGVscCB0byBwaW4gZG93biB0aGUgcHJvYmxlbS4KKworCitidHR2IGJ1Z3MKKy0tLS0tLS0tLQorCitJZiBzb21lIHZlcnNpb24gd29ya3MgYW5kIGFub3RoZXIgZG9lc24ndCBpdCBpcyBsaWtlbHkgdG8gYmUgYSBkcml2ZXIKK2J1Zy4gIEl0IGlzIHZlcnkgaGVscGZ1bCBpZiB5b3UgY2FuIHRlbGwgd2hlcmUgZXhhY3RseSBpdCBicm9rZQorKGkuZS4gdGhlIGxhc3Qgd29ya2luZyBhbmQgdGhlIGZpcnN0IGJyb2tlbiB2ZXJzaW9uKS4KKworV2l0aCBhIGhhcmQgZnJlZXplIHlvdSBwcm9iYWJseSBkb2Vzbid0IGZpbmQgYW55dGhpbmcgaW4gdGhlIGxvZ2ZpbGVzLgorVGhlIG9ubHkgd2F5IHRvIGNhcHR1cmUgYW55IGtlcm5lbCBtZXNzYWdlcyBpcyB0byBob29rIHVwIGEgc2VyaWFsCitjb25zb2xlIGFuZCBsZXQgc29tZSB0ZXJtaW5hbCBhcHBsaWNhdGlvbiBsb2cgdGhlIG1lc3NhZ2VzLiAgL21lIHVzZXMKK3NjcmVlbi4gIFNlZSBEb2N1bWVudGF0aW9uL3NlcmlhbC1jb25zb2xlLnR4dCBmb3IgZGV0YWlscyBvbiBzZXR0aW5nCit1cCBhIHNlcmlhbCBjb25zb2xlLgorCitSZWFkIERvY3VtZW50YXRpb24vb29wcy10cmFjaW5nLnR4dCB0byBsZWFybiBob3cgdG8gZ2V0IGFueSB1c2VmdWwKK2luZm9ybWF0aW9uIG91dCBvZiBhIHJlZ2lzdGVyK3N0YWNrIGR1bXAgcHJpbnRlZCBieSB0aGUga2VybmVsIG9uCitwcm90ZWN0aW9uIGZhdWx0cyAoc28tY2FsbGVkICJrZXJuZWwgb29wcyIpLgorCitJZiB5b3UgcnVuIGludG8gc29tZSBraW5kIG9mIGRlYWRsb2NrLCB5b3UgY2FuIHRyeSB0byBkdW1wIGEgY2FsbCB0cmFjZQorZm9yIGVhY2ggcHJvY2VzcyB1c2luZyBzeXNycS10IChzZWUgRG9jdW1lbnRhdGlvbi9zeXNycS50eHQpLiAga3N5bW9vcHMKK3dpbGwgdHJhbnNsYXRlIHRoZXNlIGR1bXBzIGludG8ga2VybmVsIHN5bWJvbHMgdG9vLiAgVGhpcyB3YXkgaXQgaXMKK3Bvc3NpYmxlIHRvIGZpZ3VyZSB3aGVyZSAqZXhhY3RseSogc29tZSBwcm9jZXNzIGluICJEIiBzdGF0ZSBpcyBzdHVjay4KKworSSd2ZSBzZWVuIHJlcG9ydHMgdGhhdCBidHR2IDAuNy54IGNyYXNoZXMgd2hlcmVhcyAwLjgueCB3b3JrcyByb2NrIHNvbGlkCitmb3Igc29tZSBwZW9wbGUuICBUaHVzIHByb2JhYmx5IGEgc21hbGwgYnVnbGV0IGxlZnQgc29tZXdoZXJlIGluIGJ0dHYKKzAuNy54LiAgSSBoYXZlIG5vIGlkZWEgd2hlcmUgZXhhY3RseSwgaXQgd29ya3Mgc3RhYmxlIGZvciBtZSBhbmQgYWxvdCBvZgorb3RoZXIgcGVvcGxlLiAgQnV0IGluIGNhc2UgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgMC43LnggdmVyc2lvbnMgeW91CitjYW4gZ2l2ZSAwLjgueCBhIHRyeSAuLi4KKworCitoYXJkd2FyZSBidWdzCistLS0tLS0tLS0tLS0tCisKK1NvbWUgaGFyZHdhcmUgY2FuJ3QgZGVhbCB3aXRoIFBDSS1QQ0kgdHJhbnNmZXJzIChpLmUuIGdyYWJiZXIgPT4gdmdhKS4KK1NvbWV0aW1lcyBwcm9ibGVtcyBzaG93IHVwIHdpdGggYnR0diBqdXN0IGJlY2F1c2Ugb2YgdGhlIGhpZ2ggbG9hZCBvbgordGhlIFBDSSBidXMuIFRoZSBidDg0OC84NzggY2hpcHMgaGF2ZSBhIGZldyB3b3JrYXJvdW5kcyBmb3Iga25vd24KK2luY29tcGF0aWJpbGl0aWVzLCBzZWUgUkVBRE1FLnF1aXJrcy4KKworU29tZSBmb2xrcyByZXBvcnQgdGhhdCBpbmNyZWFzaW5nIHRoZSBwY2kgbGF0ZW5jeSBoZWxwcyB0b28sCithbHRocm91Z2h0IEknbSBub3Qgc3VyZSB3aGVuZXZlciB0aGlzIHJlYWxseSBmaXhlcyB0aGUgcHJvYmxlbXMgb3IKK29ubHkgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLiAgQm90aCBidHR2IGFuZCBidGF1ZGlvIGhhdmUgYQoraW5zbW9kIG9wdGlvbiB0byBzZXQgdGhlIFBDSSBsYXRlbmN5IG9mIHRoZSBkZXZpY2UuCisKK1NvbWUgbWFpbmJvYXJkIGhhdmUgcHJvYmxlbXMgdG8gZGVhbCBjb3JyZWN0bHkgd2l0aCBtdWx0aXBsZSBkZXZpY2VzCitkb2luZyBETUEgYXQgdGhlIHNhbWUgdGltZS4gIGJ0dHYgKyBpZGUgc2VlbXMgdG8gY2F1c2UgdGhpcyBzb21ldGltZXMsCitpZiB0aGlzIGlzIHRoZSBjYXNlIHlvdSBsaWtlbHkgc2VlIGZyZWV6ZXMgb25seSB3aXRoIHZpZGVvIGFuZCBoYXJkIGRpc2sKK2FjY2VzcyBhdCB0aGUgc2FtZSB0aW1lLiAgVXBkYXRpbmcgdGhlIElERSBkcml2ZXIgdG8gZ2V0IHRoZSBsYXRlc3QgYW5kCitncmVhdGVzdCB3b3JrYXJvdW5kcyBmb3IgaGFyZHdhcmUgYnVncyBtaWdodCBmaXggdGhlc2UgcHJvYmxlbXMuCisKKworb3RoZXIKKy0tLS0tCisKK0lmIHlvdSB1c2Ugc29tZSBiaW5hcnktb25seSB5dW5rIChsaWtlIG52aWRpYSBtb2R1bGUpIHRyeSB0byByZXByb2R1Y2UKK3RoZSBwcm9ibGVtIHdpdGhvdXQuCisKK0lSUSBzaGFyaW5nIGlzIGtub3duIHRvIGNhdXNlIHByb2JsZW1zIGluIHNvbWUgY2FzZXMuICBJdCB3b3JrcyBqdXN0CitmaW5lIGluIHRoZW9yeSBhbmQgbWFueSBjb25maWd1cmF0aW9ucy4gIE5ldmVybGVzcyBpdCBtaWdodCBiZSB3b3J0aCBhCit0cnkgdG8gc2h1ZmZsZSBhcm91bmQgdGhlIFBDSSBjYXJkcyB0byBnaXZlIGJ0dHYgYW5vdGhlciBJUlEgb3IgbWFrZQoraXQgc2hhcmUgdGhlIElSUSB3aXRoIHNvbWUgb3RoZXIgcGllY2Ugb2YgaGFyZHdhcmUuICBJUlEgc2hhcmluZyB3aXRoCitWR0EgY2FyZHMgc2VlbXMgdG8gY2F1c2UgdHJvdWJsZSBzb21ldGltZXMuICBJJ3ZlIGFsc28gc2VlbiBmdW5ueQorZWZmZWN0cyB3aXRoIGJ0dHYgc2hhcmluZyB0aGUgSVJRIHdpdGggdGhlIEFDUEkgYnJpZGdlIChhbmQKK2FwY2ktZW5hYmxlZCBrZXJuZWwpLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLnF1aXJrcyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUucXVpcmtzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZWRiODcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLnF1aXJrcwpAQCAtMCwwICsxLDgzIEBACisKK0JlbG93IGlzIHdoYXQgdGhlIGJ0ODc4IGRhdGEgYm9vayBzYXlzIGFib3V0IHRoZSBQQ0kgYnVnIGNvbXBhdGliaWxpdHkKK21vZGVzIG9mIHRoZSBidDg3OCBjaGlwLgorCitUaGUgdHJpdG9uMSBpbnNtb2Qgb3B0aW9uIHNldHMgdGhlIEVOX1RCRlggYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLgorVGhlIHZzZnggaW5zbW9kIG9wdGlvbiBkb2VzIHRoZSBzYW1lIGZvciBFTl9WU0ZYIGJpdC4gIElmIHlvdSBoYXZlCitzdGFiaWxpdHkgcHJvYmxlbXMgeW91IGNhbiB0cnkgaWYgb25lIG9mIHRoZXNlIG9wdGlvbnMgbWFrZXMgeW91ciBib3gKK3dvcmsgc29saWQuCisKK2RyaXZlcnMvcGNpL3F1aXJrcy5jIGtub3dzIGFib3V0IHRoZXNlIGlzc3VlcywgdGhpcyB3YXkgdGhlc2UgYml0cyBhcmUKK2VuYWJsZWQgYXV0b21hZ2ljYWxseSBmb3Iga25vd24tYnVnZ3kgY2hpcHNldHMgKGxvb2sgYXQgdGhlIGtlcm5lbAorbWVzc2FnZXMsIGJ0dHYgdGVsbHMgeW91KS4KKworSFRILAorCisgIEdlcmQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjdXQgaGVyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOb3JtYWwgUENJIE1vZGUKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgUENJIFJFUSBzaWduYWwgaXMgdGhlIGxvZ2ljYWwtb3Igb2YgdGhlIGluY29taW5nIGZ1bmN0aW9uIHJlcXVlc3RzLgorVGhlIGludGVyLW5hbCBHTlRbMDoxXSBzaWduYWxzIGFyZSBnYXRlZCBhc3luY2hyb25vdXNseSB3aXRoIEdOVCBhbmQKK2RlbXVsdGlwbGV4ZWQgYnkgdGhlIGF1ZGlvIHJlcXVlc3Qgc2lnbmFsLiBUaHVzIHRoZSBhcmJpdGVyIGRlZmF1bHRzIHRvCit0aGUgdmlkZW8gZnVuY3Rpb24gYXQgcG93ZXItdXAgYW5kIHBhcmtzIHRoZXJlIGR1cmluZyBubyByZXF1ZXN0cyBmb3IKK2J1cyBhY2Nlc3MuIFRoaXMgaXMgZGVzaXJhYmxlIHNpbmNlIHRoZSB2aWRlbyB3aWxsIHJlcXVlc3QgdGhlIGJ1cyBtb3JlCitvZnRlbi4gSG93ZXZlciwgdGhlIGF1ZGlvIHdpbGwgaGF2ZSBoaWdoZXN0IGJ1cyBhY2Nlc3MgcHJpb3JpdHkuIFRodXMKK3RoZSBhdWRpbyB3aWxsIGhhdmUgZmlyc3QgYWNjZXNzIHRvIHRoZSBidXMgZXZlbiB3aGVuIGlzc3VpbmcgYSByZXF1ZXN0CithZnRlciB0aGUgdmlkZW8gcmVxdWVzdCBidXQgYmVmb3JlIHRoZSBQQ0kgZXh0ZXJuYWwgYXJiaXRlciBoYXMgZ3JhbnRlZAorYWNjZXNzIHRvIHRoZSBCdDg3OS4gTmVpdGhlciBmdW5jdGlvbiBjYW4gcHJlZW1wdCB0aGUgb3RoZXIgb25jZSBvbiB0aGUKK2J1cy4gVGhlIGR1cmF0aW9uIHRvIGVtcHR5IHRoZSBlbnRpcmUgdmlkZW8gUENJIEZJRk8gb250byB0aGUgUENJIGJ1cyBpcwordmVyeSBzaG9ydCBjb21wYXJlZCB0byB0aGUgYnVzIGFjY2VzcyBsYXRlbmN5IHRoZSBhdWRpbyBQQ0kgRklGTyBjYW4KK3RvbGVyYXRlLgorCisKKzQzMEZYIENvbXBhdGliaWxpdHkgTW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gdXNpbmcgdGhlIDQzMEZYIFBDSSwgdGhlIGZvbGxvd2luZyBydWxlcyB3aWxsIGVuc3VyZQorY29tcGF0aWJpbGl0eTogCisKKyAoMSkgRGVhc3NlcnQgUkVRIGF0IHRoZSBzYW1lIHRpbWUgYXMgYXNzZXJ0aW5nIEZSQU1FLiAKKyAoMikgRG8gbm90IHJlYXNzZXJ0IFJFUSB0byByZXF1ZXN0IGFub3RoZXIgYnVzIHRyYW5zYWN0aW9uIHVudGlsIGFmdGVyCisgICAgIGZpbmlzaC1pbmcgdGhlIHByZXZpb3VzIHRyYW5zYWN0aW9uLgorCitTaW5jZSB0aGUgaW5kaXZpZHVhbCBidXMgbWFzdGVycyBkbyBub3QgaGF2ZSBkaXJlY3QgY29udHJvbCBvZiBSRVEsIGEKK3NpbXBsZSBsb2dpY2FsLW9yIG9mIHZpZGVvIGFuZCBhdWRpbyByZXF1ZXN0cyB3b3VsZCB2aW9sYXRlIHRoZSBydWxlcy4KK1RodXMsIGJvdGggdGhlIGFyYml0ZXIgYW5kIHRoZSBpbml0aWF0b3IgY29udGFpbiA0MzBGWCBjb21wYXRpYmlsaXR5Cittb2RlIGxvZ2ljLiBUbyBlbmFibGUgNDMwRlggbW9kZSwgc2V0IHRoZSBFTl9UQkZYIGJpdCBhcyBpbmRpY2F0ZWQgaW4KK0RldmljZSBDb250cm9sIFJlZ2lzdGVyIG9uIHBhZ2UgMTA0LgorCitXaGVuIEVOX1RCRlggaXMgZW5hYmxlZCwgdGhlIGFyYml0ZXIgZW5zdXJlcyB0aGF0IHRoZSB0d28gY29tcGF0aWJpbGl0eQorcnVsZXMgYXJlIHNhdGlzZmllZC4gQmVmb3JlIEdOVCBpcyBhc3NlcnRlZCBieSB0aGUgUENJIGFyYml0ZXIsIHRoaXMKK2ludGVybmFsIGFyYml0ZXIgbWF5IHN0aWxsIGxvZ2ljYWwtb3IgdGhlIHR3byByZXF1ZXN0cy4gSG93ZXZlciwgb25jZQordGhlIEdOVCBpcyBpc3N1ZWQsIHRoaXMgYXJiaXRlciBtdXN0IGxvY2sgaW4gaXRzIGRlY2lzaW9uIGFuZCBub3cgcm91dGUKK29ubHkgdGhlIGdyYW50ZWQgcmVxdWVzdCB0byB0aGUgUkVRIHBpbi4gVGhlIGFyYml0ZXIgZGVjaXNpb24gbG9jaworaGFwcGVucyByZWdhcmRsZXNzIG9mIHRoZSBzdGF0ZSBvZiBGUkFNRSBiZWNhdXNlIGl0IGRvZXMgbm90IGtub3cgd2hlbgorRlJBTUUgd2lsbCBiZSBhc3NlcnRlZCAodHlwaWNhbGx5IC0gZWFjaCBpbml0aWF0b3Igd2lsbCBhc3NlcnQgRlJBTUUgb24KK3RoZSBjeWNsZSBmb2xsb3dpbmcgR05UKS4gV2hlbiBGUkFNRSBpcyBhc3NlcnRlZCwgaXQgaXMgdGhlIGluaXRpYXRvciBzCityZXNwb25zaWJpbGl0eSB0byByZW1vdmUgaXRzIHJlcXVlc3QgYXQgdGhlIHNhbWUgdGltZS4gSXQgaXMgdGhlCithcmJpdGVycyByZXNwb25zaWJpbGl0eSB0byBhbGxvdyB0aGlzIHJlcXVlc3QgdG8gZmxvdyB0aHJvdWdoIHRvIFJFUSBhbmQKK25vdCBhbGxvdyB0aGUgb3RoZXIgcmVxdWVzdCB0byBob2xkIFJFUSBhc3NlcnRlZC4gVGhlIGRlY2lzaW9uIGxvY2sgbWF5CitiZSByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uOiBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgYnVzIGlzCitpZGxlIChGUkFNRSBhbmQgSVJEWSkuIFRoZSBhcmJpdGVyIGRlY2lzaW9uIG1heSB0aGVuIGNvbnRpbnVlCithc3luY2hyb25vdXNseSB1bnRpbCBHTlQgaXMgYWdhaW4gYXNzZXJ0ZWQuCisKKworSW50ZXJmYWNpbmcgd2l0aCBOb24tUENJIDIuMSBDb21wbGlhbnQgQ29yZSBMb2dpYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIHNtYWxsIHBlcmNlbnRhZ2Ugb2YgY29yZSBsb2dpYyBkZXZpY2VzIG1heSBzdGFydCBhIGJ1cyB0cmFuc2FjdGlvbgorZHVyaW5nIHRoZSBzYW1lIGN5Y2xlIHRoYXQgR05UIGlzIGRlLWFzc2VydGVkLiBUaGlzIGlzIG5vbiBQQ0kgMi4xCitjb21wbGlhbnQuIFRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgUENzIHdpdGggdGhlc2UgUENJCitjb250cm9sbGVycywgdGhlIEVOX1ZTRlggYml0IG11c3QgYmUgZW5hYmxlZCAocmVmZXIgdG8gRGV2aWNlIENvbnRyb2wKK1JlZ2lzdGVyIG9uIHBhZ2UgMTA0KS4gV2hlbiBpbiB0aGlzIG1vZGUsIHRoZSBhcmJpdGVyIGRvZXMgbm90IHBhc3MgR05UCit0byB0aGUgaW50ZXJuYWwgZnVuY3Rpb25zIHVubGVzcyBSRVEgaXMgYXNzZXJ0ZWQuIFRoaXMgcHJldmVudHMgYSBidXMKK3RyYW5zYWN0aW9uIGZyb20gc3RhcnRpbmcgdGhlIHNhbWUgY3ljbGUgYXMgR05UIGlzIGRlLWFzc2VydGVkLiBUaGlzCithbHNvIGhhcyB0aGUgc2lkZSBlZmZlY3Qgb2Ygbm90IGJlaW5nIGFibGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgYnVzCitwYXJraW5nLCB0aHVzIGxvd2VyaW5nIGFyYml0cmF0aW9uIHBlcmZvcm1hbmNlLiBUaGUgQnQ4NzkgZHJpdmVycyBtdXN0CitxdWVyeSBmb3IgdGhlc2Ugbm9uLWNvbXBsaWFudCBkZXZpY2VzLCBhbmQgc2V0IHRoZSBFTl9WU0ZYIGJpdCBvbmx5IGlmCityZXF1aXJlZC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1NvdW5kLUZBUSBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Tb3VuZC1GQVEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhjOWMyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Tb3VuZC1GQVEKQEAgLTAsMCArMSwxNDggQEAKKworYnR0diBhbmQgc291bmQgbWluaSBob3d0bworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVyZSBhcmUgYWxvdCBvZiBkaWZmZXJlbnQgYnQ4NDgvODQ5Lzg3OC84NzkgYmFzZWQgYm9hcmRzIGF2YWlsYWJsZS4KK01ha2luZyB2aWRlbyB3b3JrIG9mdGVuIGlzIG5vdCBhIGJpZyBkZWFsLCBiZWNhdXNlIHRoaXMgaXMgaGFuZGxlZAorY29tcGxldGVseSBieSB0aGUgYnQ4eHggY2hpcCwgd2hpY2ggaXMgY29tbW9uIG9uIGFsbCBib2FyZHMuICBCdXQKK3NvdW5kIGlzIGhhbmRsZWQgaW4gc2xpZ2h0bHkgZGlmZmVyZW50IHdheXMgb24gZWFjaCBib2FyZC4KKworVG8gaGFuZGxlIHRoZSBncmFiYmVyIGJvYXJkcyBjb3JyZWN0bHksIHRoZXJlIGlzIGEgYXJyYXkgdHZjYXJkc1tdIGluCitidHR2LWNhcmRzLmMsIHdoaWNoIGhvbGRzIHRoZSBpbmZvcm1hdGlvbnMgcmVxdWlyZWQgZm9yIGVhY2ggYm9hcmQuCitTb3VuZCB3aWxsIHdvcmsgb25seSwgaWYgdGhlIGNvcnJlY3QgZW50cnkgaXMgdXNlZCAoZm9yIHZpZGVvIGl0IG9mdGVuCittYWtlcyBubyBkaWZmZXJlbmNlKS4gIFRoZSBidHR2IGRyaXZlciBwcmludHMgYSBsaW5lIHRvIHRoZSBrZXJuZWwKK2xvZywgdGVsbGluZyB3aGljaCBjYXJkIHR5cGUgaXMgdXNlZC4gIExpa2UgdGhpcyBvbmU6CisKKwlidHR2MDogbW9kZWw6IEJUODQ4KEhhdXBwYXVnZSBvbGQpIFthdXRvZGV0ZWN0ZWRdCisKK1lvdSBzaG91bGQgdmVyaWZ5IHRoaXMgaXMgY29ycmVjdC4gIElmIGl0IGlzbid0LCB5b3UgaGF2ZSB0byBwYXNzIHRoZQorY29ycmVjdCBib2FyZCB0eXBlIGFzIGluc21vZCBhcmd1bWVudCwgImluc21vZCBidHR2IGNhcmQ9MiIgZm9yCitleGFtcGxlLiAgVGhlIGZpbGUgQ0FSRExJU1QgaGFzIGEgbGlzdCBvZiB2YWxpZCBhcmd1bWVudHMgZm9yIGNhcmQuCitJZiB5b3VyIGNhcmQgaXNuJ3QgbGlzdGVkIHRoZXJlLCB5b3UgbWlnaHQgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGZvcgorbmV3IGVudHJpZXMgd2hpY2ggYXJlIG5vdCBsaXN0ZWQgeWV0LiAgSWYgdGhlcmUgaXNuJ3Qgb25lIGZvciB5b3VyCitjYXJkLCB5b3UgY2FuIGNoZWNrIGlmIG9uZSBvZiB0aGUgZXhpc3RpbmcgZW50cmllcyBkb2VzIHdvcmsgZm9yIHlvdQorKGp1c3QgdHJpYWwgYW5kIGVycm9yLi4uKS4KKworU29tZSBib2FyZHMgaGF2ZSBhbiBleHRyYSBwcm9jZXNzb3IgZm9yIHNvdW5kIHRvIGRvIHN0ZXJlbyBkZWNvZGluZworYW5kIG90aGVyIG5pY2UgZmVhdHVyZXMuICBUaGUgbXNwMzR4eCBjaGlwcyBhcmUgdXNlZCBieSBIYXVwcGF1Z2UgZm9yCitleGFtcGxlLiAgSWYgeW91ciBib2FyZCBoYXMgb25lLCB5b3UgbWlnaHQgaGF2ZSB0byBsb2FkIGEgaGVscGVyCittb2R1bGUgbGlrZSBtc3AzNDAwLm8gdG8gbWFrZSBzb3VuZCB3b3JrLiAgSWYgdGhlcmUgaXNuJ3Qgb25lIGZvciB0aGUKK2NoaXAgdXNlZCBvbiB5b3VyIGJvYXJkOiAgQmFkIGx1Y2suICBTdGFydCB3cml0aW5nIGEgbmV3IG9uZS4gIFdlbGwsCit5b3UgbWlnaHQgd2FudCB0byBjaGVjayB0aGUgdmlkZW80bGludXggbWFpbGluZyBsaXN0IGFyY2hpdmUgZmlyc3QuLi4KKworT2YgY291cnNlIHlvdSBuZWVkIGEgY29ycmVjdGx5IGluc3RhbGxlZCBzb3VuZGNhcmQgdW5sZXNzIHlvdSBoYXZlIHRoZQorc3BlYWtlcnMgY29ubmVjdGVkIGRpcmVjdGx5IHRvIHRoZSBncmFiYmVyIGJvYXJkLiAgSGludDogY2hlY2sgdGhlCittaXhlciBzZXR0aW5ncyB0b28uICBBTFNBIGZvciBleGFtcGxlIGhhcyBldmVyeXRoaW5nIG11dGVkIGJ5IGRlZmF1bHQuCisKKworSG93IHNvdW5kIHdvcmtzIGluIGRldGFpbAorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitTdGlsbCBkb2Vzbid0IHdvcms/ICBMb29rcyBsaWtlIHNvbWUgZHJpdmVyIGhhY2tpbmcgaXMgcmVxdWlyZWQuCitCZWxvdyBpcyBhIGRvLWl0LXlvdXJzZWxmIGRlc2NyaXB0aW9uIGZvciB5b3UuCisKK1RoZSBidDh4eCBjaGlwcyBoYXZlIDMyIGdlbmVyYWwgcHVycG9zZSBwaW5zLCBhbmQgcmVnaXN0ZXJzIHRvIGNvbnRyb2wKK3RoZXNlIHBpbnMuICBPbmUgcmVnaXN0ZXIgaXMgdGhlIG91dHB1dCBlbmFibGUgcmVnaXN0ZXIKKyhCVDg0OF9HUElPX09VVF9FTiksIGl0IHNheXMgd2hpY2ggcGlucyBhcmUgYWN0aXZlbHkgZHJpdmVuIGJ5IHRoZQorYnQ4NDggY2hpcC4gIEFub3RoZXIgb25lIGlzIHRoZSBkYXRhIHJlZ2lzdGVyIChCVDg0OF9HUElPX0RBVEEpLCB3aGVyZQoreW91IGNhbiBnZXQvc2V0IHRoZSBzdGF0dXMgaWYgdGhlc2UgcGlucy4gIFRoZXkgY2FuIGJlIHVzZWQgZm9yIGlucHV0CithbmQgb3V0cHV0LgorCitNb3N0IGdyYWJiZXIgYm9hcmQgdmVuZG9ycyB1c2UgdGhlc2UgcGlucyB0byBjb250cm9sIGFuIGV4dGVybmFsIGNoaXAKK3doaWNoIGRvZXMgdGhlIHNvdW5kIHJvdXRpbmcuICBCdXQgZXZlcnkgYm9hcmQgaXMgYSBsaXR0bGUgZGlmZmVyZW50LgorVGhlc2UgcGlucyBhcmUgYWxzbyB1c2VkIGJ5IHNvbWUgY29tcGFuaWVzIHRvIGRyaXZlIHJlbW90ZSBjb250cm9sCityZWNlaXZlciBjaGlwcy4gIFNvbWUgYm9hcmRzIHVzZSB0aGUgaTJjIGJ1cyBpbnN0ZWFkIG9mIHRoZSBncGlvIHBpbnMKK3RvIGNvbm5lY3QgdGhlIG11eCBjaGlwLgorCitBcyBtZW50aW9uZWQgYWJvdmUsIHRoZXJlIGlzIGEgYXJyYXkgd2hpY2ggaG9sZHMgdGhlIHJlcXVpcmVkCitpbmZvcm1hdGlvbnMgZm9yIGVhY2gga25vd24gYm9hcmQuICBZb3UgYmFzaWNhbGx5IGhhdmUgdG8gY3JlYXRlIGEgbmV3CitsaW5lIGZvciB5b3VyIGJvYXJkLiAgVGhlIGltcG9ydGFudCBmaWVsZHMgYXJlIHRoZXNlIHR3bzoKKworc3RydWN0IHR2Y2FyZAoreworCVsgLi4uIF0KKyAgICAgICAgdTMyIGdwaW9tYXNrOworICAgICAgICB1MzIgYXVkaW9tdXhbNl07IC8qIFR1bmVyLCBSYWRpbywgZXh0ZXJuYWwsIGludGVybmFsLCBtdXRlLCBzdGVyZW8gKi8KK307CisKK2dwaW9tYXNrIHNwZWNpZmllcyB3aGljaCBwaW5zIGFyZSB1c2VkIHRvIGNvbnRyb2wgdGhlIGF1ZGlvIG11eCBjaGlwLgorVGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgb3V0cHV0IGVuYWJsZSByZWdpc3RlcgorKEJUODQ4X0dQSU9fT1VUX0VOKSB3aWxsIGJlIHNldCBhcyB0aGVzZSBwaW5zIG11c3QgYmUgZHJpdmVuIGJ5IHRoZQorYnQ4NDggY2hpcC4KKworVGhlIGF1ZGlvbXV4W10gYXJyYXkgaG9sZHMgdGhlIGRhdGEgdmFsdWVzIGZvciB0aGUgZGlmZmVyZW50IGlucHV0cworKGkuZS4gd2hpY2ggcGlucyBtdXN0IGJlIGhpZ2gvbG93IGZvciB0dW5lci9tdXRlLy4uLikuICBUaGlzIHdpbGwgYmUKK3dyaXR0ZW4gdG8gdGhlIGRhdGEgcmVnaXN0ZXIgKEJUODQ4X0dQSU9fREFUQSkgdG8gc3dpdGNoIHRoZSBhdWRpbworbXV4LgorCisKK1doYXQgeW91IGhhdmUgdG8gZG8gaXMgZmlndXJlIG91dCB0aGUgY29ycmVjdCB2YWx1ZXMgZm9yIGdwaW9tYXNrIGFuZAordGhlIGF1ZGlvbXV4IGFycmF5LiAgSWYgeW91IGhhdmUgV2luZG93cyBhbmQgdGhlIGRyaXZlcnMgZm91ciB5b3VyCitjYXJkIGluc3RhbGxlZCwgeW91IG1pZ2h0IHRvIGNoZWNrIG91dCBpZiB5b3UgY2FuIHJlYWQgdGhlc2UgcmVnaXN0ZXJzCit2YWx1ZXMgdXNlZCBieSB0aGUgd2luZG93cyBkcml2ZXIuICBBIHRvb2wgdG8gZG8gdGhpcyBpcyBhdmFpbGFibGUKK2Zyb20gZnRwOi8vdGVsZXByZXNlbmNlLmRtZW0uc3RyYXRoLmFjLnVrL3B1Yi9idDg0OC93aW51dGlsLCBidXQgaXQKK2RvZXMnbnQgd29yayB3aXRoIGJ0ODc4IGJvYXJkcyBhY2NvcmRpbmcgdG8gc29tZSByZXBvcnRzIEkgcmVjZWl2ZWQuCitBbm90aGVyIG9uZSB3aXRoIGJ0ODc4IHN1cG9ydCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL2J0d2luY2FwLnNvdXJjZWZvcmdlLm5ldC9GaWxlcy9idHNweTIuMDAuemlwCisKK1lvdSBtaWdodCBhbHNvIGRpZyBhcm91bmQgaW4gdGhlICouaW5pIGZpbGVzIG9mIHRoZSBXaW5kb3dzIGFwcGxpY2F0aW9ucy4KK1lvdSBjYW4gaGF2ZSBhIGxvb2sgYXQgdGhlIGJvYXJkIHRvIHNlZSB3aGljaCBvZiB0aGUgZ3BpbyBwaW5zIGFyZQorY29ubmVjdGVkIGF0IGFsbCBhbmQgdGhlbiBzdGFydCB0cmlhbC1hbmQtZXJyb3IgLi4uCisKKworU3RhcnRpbmcgd2l0aCByZWxlYXNlIDAuNy40MSBidHR2IGhhcyBhIG51bWJlciBvZiBpbnNtb2Qgb3B0aW9ucyB0bworbWFrZSB0aGUgZ3BpbyBkZWJ1Z2dpbmcgZWFzaWVyOgorCitidHR2X2dwaW89MC8xCQllbmFibGUvZGlzYWJsZSBncGlvIGRlYnVnIG1lc3NhZ2VzCitncGlvbWFzaz1uCQlzZXQgdGhlIGdwaW9tYXNrIHZhbHVlCithdWRpb211eD1pLGosLi4uCXNldCB0aGUgdmFsdWVzIG9mIHRoZSBhdWRpb211eCBhcnJheQorYXVkaW9hbGw9YQkJc2V0IHRoZSB2YWx1ZXMgb2YgdGhlIGF1ZGlvbXV4IGFycmF5IChvbmUKKwkJCXZhbHVlIGZvciBhbGwgYXJyYXkgZWxlbWVudHMsIHVzZWZ1bCB0byBjaGVjaworCQkJb3V0IHdoaWNoIGVmZmVjdCB0aGUgcGFydGljdWxhciB2YWx1ZSBoYXMpLgorCitUaGUgbWVzc2FnZXMgcHJpbnRlZCB3aXRoIGJ0dHZfZ3Bpbz0xIGxvb2sgbGlrZSB0aGlzOgorCisJYnR0djA6IGdwaW86IGVuPTAwMDAwMDI3LCBvdXQ9MDAwMDAwMjQgaW49MDBmZmZmZDggW2F1ZGlvOiBvZmZdCisKK2VuICA9CW91dHB1dCBfZW5fYWJsZSByZWdpc3RlciAoQlQ4NDhfR1BJT19PVVRfRU4pCitvdXQgPQlfb3V0X3B1dCBiaXRzIG9mIHRoZSBkYXRhIHJlZ2lzdGVyIChCVDg0OF9HUElPX0RBVEEpLAorCWkuZS4gQlQ4NDhfR1BJT19EQVRBICYgQlQ4NDhfR1BJT19PVVRfRU4KK2luICA9IAlfaW5fcHV0IGJpdHMgb2YgdGhlIGRhdGEgcmVnaXN0ZXIsCisJaS5lLiBCVDg0OF9HUElPX0RBVEEgJiB+QlQ4NDhfR1BJT19PVVRfRU4KKworCisKK090aGVyIGVsZW1lbnRzIG9mIHRoZSB0dmNhcmRzIGFycmF5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJZiB5b3UgYXJlIHRyeWluZyB0byBtYWtlIGEgbmV3IGNhcmQgd29yayB5b3UgbWlnaHQgZmluZCBpdCB1c2VmdWwgdG8KK2tub3cgd2hhdCB0aGUgb3RoZXIgZWxlbWVudHMgaW4gdGhlIHR2Y2FyZHMgYXJyYXkgYXJlIGdvb2QgZm9yOgorCit2aWRlb19pbnB1dHMgICAgLSAjIG9mIHZpZGVvIGlucHV0cyB0aGUgY2FyZCBoYXMKK2F1ZGlvX2lucHV0cyAgICAtIGhpc3RvcmljYWwgY3J1ZnQsIG5vdCB1c2VkIGFueSBtb3JlLgordHVuZXIgICAgICAgICAgIC0gd2hpY2ggaW5wdXQgaXMgdGhlIHR1bmVyCitzdmhzICAgICAgICAgICAgLSB3aGljaCBpbnB1dCBpcyBzdmhzIChhbGwgb3RoZXJzIGFyZSBsYWJlbGVkIGNvbXBvc2l0ZSkKK211eHNlbCAgICAgICAgICAtIHZpZGVvIG11eCwgaW5wdXQtPnJlZ2lzdGVydmFsdWUgbWFwcGluZworcGxsICAgICAgICAgICAgIC0gc2FtZSBhcyBwbGw9IGluc21vZCBvcHRpb24KK3R1bmVyX3R5cGUgICAgICAtIHNhbWUgYXMgdHVuZXI9IGluc21vZCBvcHRpb24KKypfbW9kdWxlbmFtZSAgICAtIGhpbnQgd2hlbmV2ZXIgc29tZSBjYXJkIG5lZWRzIHRoaXMgb3IgdGhhdCBhdWRpbworICAgICAgICAgICAgICAgICAgbW9kdWxlIGxvYWRlZCB0byB3b3JrIHByb3Blcmx5LgoraGFzX3JhZGlvCS0gd2hlbmV2ZXIgdGhpcyBUViBjYXJkIGhhcyBhIHJhZGlvIHR1bmVyLgorbm9fbXNwMzR4eAktICIxIiBkaXNhYmxlcyBsb2FkaW5nIG9mIG1zcDM0MDAubyBtb2R1bGUKK25vX3RkYTk4NzUJLSAiMSIgZGlzYWJsZXMgbG9hZGluZyBvZiB0ZGE5ODc1Lm8gbW9kdWxlIAorbmVlZHNfdHZhdWRpbwktIHNldCB0byAiMSIgdG8gbG9hZCB0dmF1ZGlvLm8gbW9kdWxlIAorCitJZiBzb21lIGNvbmZpZyBpdGVtIGlzIHNwZWNpZmllZCBib3RoIGZyb20gdGhlIHR2Y2FyZHMgYXJyYXkgYW5kIGFzCitpbnNtb2Qgb3B0aW9uLCB0aGUgaW5zbW9kIG9wdGlvbiB0YWtlcyBwcmVjZWRlbmNlLgorCisKKworR29vZCBsdWNrLAorCisgIEdlcmQKKworCitQUzogSWYgeW91IGhhdmUgYSBuZXcgd29ya2luZyBlbnRyeSwgbWFpbCBpdCB0byBtZS4KKworLS0gCitHZXJkIEtub3JyIDxrcmF4ZWxAYnl0ZXNleC5vcmc+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvU3BlY3MgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvU3BlY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzliOWU1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9TcGVjcwpAQCAtMCwwICsxLDMgQEAKK1BoaWxpcHMJCWh0dHA6Ly93d3cuU2VtaWNvbmR1Y3RvcnMuQ09NL3BpcC8KK0NvbmV4YW50CWh0dHA6Ly93d3cuY29uZXhhbnQuY29tL3RlY2hpbmZvL2RlZmF1bHQuYXNwCitNaWNyb25hcwlodHRwOi8vd3d3Lm1pY3JvbmFzLmRlL3BhZ2VzL3Byb2R1Y3RfZG9jdW1lbnRhdGlvbi9pbmRleC5odG1sCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvVEhBTktTIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1RIQU5LUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDg1Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1RIQU5LUwpAQCAtMCwwICsxLDI0IEBACitNYW55IHRoYW5rcyB0bzoKKworLSBNYXJrdXMgU2Nocm9lZGVyIDxzY2hyb2VkbUB1bmktZHVlc3NlbGRvcmYuZGU+IGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgQnQ4NDggCisgIGFuZCB0dW5lciBwcm9ncmFtbWluZyBhbmQgaGlzIGNvbnRyb2wgcHJvZ3JhbSB4dHZjLgorCistIE1hcnRpbiBCdWNrIDxtYXJ0aW4tMi5idWNrQHN0dWRlbnQudW5pLXVsbS5kZT4gZm9yIGhpcyBncmVhdCBWaWRlb3RleHQKKyAgcGFja2FnZS4KKworLSBHZXJkIEtub3JyIDxrcmF4ZWxAY3MudHUtYmVybGluLmRlPiBmb3IgdGhlIE1TUDM0MDAgc3VwcG9ydCBhbmQgdGhlIG1vZHVsYXIKKyAgSTJDLCB0dW5lciwgLi4uIHN1cHBvcnQuCisKKworLSBNQVRSSVggVmlzaW9uIGZvciBnaXZpbmcgdXMgMiBjYXJkcyBmb3IgZnJlZSwgd2hpY2ggbWFkZSBzdXBwb3J0IG9mCisgIHNpbmdsZSBjcnlzdGFsIG9wZXJhdGlvbiBwb3NzaWJsZS4KKworLSBNSVJPIGZvciBwcm92aWRpbmcgYSBmcmVlIFBDVFYgY2FyZCBhbmQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgIGNvbXBvbmVudHMgb24gdGhlaXIgY2FyZHMuIChFLmcuIGhvdyB0aGUgdHVuZXIgdHlwZSBpcyBkZXRlY3RlZCkKKyAgV2l0aG91dCB0aGVpciBjYXJkIEkgY291bGQgbm90IGhhdmUgZGVidWdnZWQgdGhlIE5UU0MgbW9kZS4KKwkKKy0gSGF1cHBhdWdlIGZvciB0ZWxsaW5nIGhvdyB0aGUgc291bmQgaW5wdXQgaXMgc2VsZWN0ZWQgYW5kIHdoYXQgY29tcG9uZW50cworICB0aGV5IGRvIGFuZCB3aWxsIHVzZSBvbiB0aGVpciByYWRpbyBjYXJkcy4KKyAgQWxzbyBtYW55IHRoYW5rcyBmb3IgZmF4aW5nIG1lIHRoZSBGTTEyMTYgZGF0YSBzaGVldC4KKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvVHVuZXJzIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1R1bmVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMThmYmM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1R1bmVycwpAQCAtMCwwICsxLDExNSBAQAorMSkgVHVuZXIgUHJvZ3JhbW1pbmcKKz09PT09PT09PT09PT09PT09PT09CitUaGVyZSBhcmUgc29tZSBmbGF2b3JzIG9mIFR1bmVyIHByb2dyYW1taW5nIEFQSXMuCitUaGVzZSBkaWZmZXIgbWFpbmx5IGJ5IHRoZSBiYW5kc3dpdGNoIGJ5dGUuCisKKyAgICBMPSBMR19BUEkgICAgICAgKFZIRl9MTz0weDAxLCBWSEZfSEk9MHgwMiwgVUhGPTB4MDgsIHJhZGlvPTB4MDQpCisgICAgUD0gUEhJTElQU19BUEkgIChWSEZfTE89MHhBMCwgVkhGX0hJPTB4OTAsIFVIRj0weDMwLCByYWRpbz0weDA0KQorICAgIFQ9IFRFTUlDX0FQSSAgICAoVkhGX0xPPTB4MDIsIFZIRl9IST0weDA0LCBVSEY9MHgwMSkKKyAgICBBPSBBTFBTX0FQSSAgICAgKFZIRl9MTz0weDE0LCBWSEZfSEk9MHgxMiwgVUhGPTB4MTEpCisgICAgTT0gUEhJTElQU19NSzMgIChWSEZfTE89MHgwMSwgVkhGX0hJPTB4MDIsIFVIRj0weDA0LCByYWRpbz0weDE5KQorCisyKSBUdW5lciBNYW51ZmFjdHVyZXJzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1NBTVNVTkcgVHVuZXIgaWRlbnRpZmljYXRpb246IChlLmcuIFRDUE05MDkxUEQyNykKKyAgVENQIFtBQkNKTE1OUV0gOTBbODldWzEyNV0gW0RQXSBbQUNEXSAyNyBbQUJDRF0KKyBbQUJDSkxNTlFdOgorICAgQT0gQkcrREsKKyAgIEI9IEJHCisgICBDPSBJK0RLCisgICBKPSBOVFNDLUphcGFuCisgICBMPSBTZWNhbSBMTAorICAgTT0gQkcrSStESworICAgTj0gTlRTQyAKKyAgIFE9IEJHK0krREsrTEwKKyBbODldOiA/CisgWzEyNV06CisgICAyOiBObyBGTQorICAgNTogV2l0aCBGTQorIFtEUF06CisgICBEPSBOVFNDCisgICBQPSBQQUwKKyBbQUNEXToKKyAgIEE9IEYtY29ubmVjdG9yCisgICBDPSBQaG9ubyBjb25uZWN0b3IKKyAgIEQ9IERpbiBKYWNrCisgW0FCQ0RdOgorICAgMy13aXJlL0kyQyB0dW5pbmcsIDItYmFuZC8zLWJhbmQKKworIFRoZXNlIFR1bmVycyBhcmUgUEhJTElQU19BUEkgY29tcGF0aWJsZS4KKworUGhpbGlwcyBUdW5lciBpZGVudGlmaWNhdGlvbjogKGUuZy4gRk0xMjE2TUYpCisgIEZbSVJNUV0xMlsxMzQ1XTZ7TUZ8TUV8TVB9CisgIEZbSVJNUV06CisgICBGSTEyeDY6IFR1bmVyIFNlcmllcworICAgRlIxMng2OiBUdW5lciArIFJhZGlvIElGCisgICBGTTEyeDY6IFR1bmVyICsgRk0KKyAgIEZRMTJ4Njogc3BlY2lhbAorICAgRk1SMTJ4Njogc3BlY2lhbAorICAgVEQxNXh4OiBEaWdpdGFsIFR1bmVyIEFUU0MKKyAgMTJbMTM0NV02OgorICAgMTIxNjogUEFMIEJHCisgICAxMjM2OiBOVFNDCisgICAxMjQ2OiBQQUwgSQorICAgMTI1NjogUGFsIERLCisgIHtNRnxNRXxNUH0KKyAgIE1GOiBCRyBMTCB3LyBTZWNhbSAoTXVsdGkgRnJhbmNlKQorICAgTUU6IEJHIERLIEkgTEwgICAoTXVsdGkgRXVyb3BlKQorICAgTVA6IEJHIERLIEkgICAgICAoTXVsdGkgUEFMKQorICAgTVI6IEJHIERLIE0gKD8pCisgICBNRzogQkcgREtJIE0gKD8pCisgIE1LMiBzZXJpZXMgUEhJTElQU19BUEksIG1vc3QgdHVuZXJzIGFyZSBjb21wYXRpYmxlIHRvIHRoaXMgb25lICEKKyAgTUszIHNlcmllcyBpbnRyb2R1Y2VkIGluIDIwMDIgdy8gUEhJTElQU19NSzNfQVBJCisKK1RlbWljIFR1bmVyIGlkZW50aWZpY2F0aW9uOiAoLmUuZyA0MDA2Rkg1KQorICAgNFswMV1bMDEzNl1bMjY5XUZbSFlOUl01CisgICAgNDB4MjogVHVuZXIgKDVWLzMzViksIFRFTUlDX0FQSS4KKyAgICA0MHg2OiBUdW5lciA1VgorICAgIDQxeHg6IFR1bmVyIGNvbXBhY3QKKyAgICA0MHg5OiBUdW5lcitGTSBjb21wYWN0CisgICBbMDEzNl0KKyAgICB4eDB4OiBQQUwgQkcKKyAgICB4eDF4OiBQYWwgREssIFNlY2FtIExMCisgICAgeHgzeDogTlRTQworICAgIHh4Nng6IFBBTCBJCisgICBGW0hZTlJdNQorICAgIEZINTogUGFsIEJHCisgICAgRlk1OiBvdGhlcnMKKyAgICBGTjU6IG11bHRpc3RhbmRhcmQKKyAgICBGUjU6IHcvIEZNIHJhZGlvCisgICAzWCB4eHh4OiBvcmRlciBudW1iZXIgd2l0aCBzcGVjaWZpYyBjb25uZWN0b3IKKyAgTm90ZTogT25seSA0MHgyIHNlcmllcyBoYXMgVEVNSUNfQVBJLCBhbGwgbmV3ZXIgdHVuZXJzIGhhdmUgUEhJTElQU19BUEkuCisKK0xHIElubm90ZWsgVHVuZXI6CisgIFRQSThOU1IxMSA6IE5UU0MgSi9NICAgIChUUEk4TlNSMDEgdy9GTSkgIChQLDIxMC80OTcpCisgIFRQSThQU0IxMSA6IFBBTCBCL0cgICAgIChUUEk4UFNCMDEgdy9GTSkgIChQLDE3MC80NTApCisgIFRBUEMtSTcwMSA6IFBBTCBJICAgICAgIChUQVBDLUkwMDEgdy9GTSkgIChQLDE3MC80NTApCisgIFRQSThQU0IxMiA6IFBBTCBEL0srQi9HIChUUEk4UFNCMDIgdy9GTSkgIChQLDE3MC80NTApCisgIFRBUEMtSDcwMVA6IE5UU0NfSlAgICAgIChUQVBDLUgwMDFQIHcvRk0pIChMLDE3MC80NTApCisgIFRBUEMtRzcwMVA6IFBBTCBCL0cgICAgIChUQVBDLUcwMDFQIHcvRk0pIChMLDE3MC80NTApCisgIFRBUEMtVzcwMVA6IFBBTCBJICAgICAgIChUQVBDLVcwMDFQIHcvRk0pIChMLDE3MC80NTApCisgIFRBUEMtUTcwM1A6IFBBTCBEL0sgICAgIChUQVBDLVEwMDFQIHcvRk0pIChMLDE3MC80NTApCisgIFRBUEMtUTcwNFA6IFBBTCBEL0srSSAgIChMLDE3MC80NTApCisgIFRBUEMtRzcwMlA6IFBBTCBEL0srQi9HIChMLDE3MC80NTApCisKKyAgVEFEQy1IMDAyRjogTlRTQyAoTCwxNzUvNDEwPzsgMi1CLCBDLVcrMTEsIFcrMTItNjkpCisgIFRBREMtTTIwMUQ6IFBBTCBEL0srQi9HK0kgKEwsMTQzLzQyNSkgIChzb3VuZCBjb250cm9sIGF0IEkyQyBhZGRyZXNzIDB4YzgpCisgIFRBREMtVDAwM0Y6IE5UU0MgVGFpd2FuICAoTCwxNzUvNDEwPzsgMi1CLCBDLVcrMTEsIFcrMTItNjkpCisgIFN1ZmZpeDogCisgICAgUD0gU3RhbmRhcmQgcGhvbm8gZmVtYWxlIHNvY2tldAorICAgIEQ9IElFQyBmZW1hbGUgc29ja2V0CisgICAgRj0gRi1jb25uZWN0b3IKKworT3RoZXIgVHVuZXJzOgorVENMMjAwMk1CLTEgOiBQQUwgQkcgKyBESyAgICAgICA9VFVORVJfTEdfUEFMX05FV19UQVBDCitUQ0wyMDAyTUItMUY6IFBBTCBCRyArIERLIHcvRk0gID1QSElMSVBTX1BBTAorVENMMjAwMk1JLTIgOiBQQUwgSQkJPSA/PworCitBTFBTIFR1bmVyczoKKyAgIE1vc3QgYXJlIExHX0FQSSBjb21wYXRpYmxlCisgICBUU0NINiBoYXMgQUxQU19BUEkgKFRTQ0g1ID8pCisgICBUU0JFMSBoYXMgZXh0cmEgQVBJIDA1LDAyLDA4IENvbnRyb2xfYnl0ZT0weENCIFNvdXJjZTooMSkKKworTGl0LgorKDEpIGNvbmV4YW50MTAwMDI5Yi1QQ0ktRGVjb2Rlci1BcHBsaWNhdGlvbk5vdGUucGRmCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L21leWUudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9tZXllLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTM3ZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9tZXllLnR4dApAQCAtMCwwICsxLDEzMCBAQAorVmFpbyBQaWN0dXJlYm9vayBNb3Rpb24gRXllIENhbWVyYSBEcml2ZXIgUmVhZG1lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgorCUNvcHlyaWdodCAoQykgMjAwMS0yMDAyIEFsY/R2ZSA8d3d3LmFsY292ZS5jb20+CisJQ29weXJpZ2h0IChDKSAyMDAwIEFuZHJldyBUcmlkZ2VsbCA8dHJpZGdlQHNhbWJhLm9yZz4KKworVGhpcyBkcml2ZXIgZW5hYmxlIHRoZSB1c2Ugb2YgdmlkZW80bGludXggY29tcGF0aWJsZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGUKK01vdGlvbiBFeWUgY2FtZXJhLiBUaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgIlNvbnkgVmFpbyBQcm9ncmFtbWFibGUgSS9PCitDb250cm9sIERldmljZSIgZHJpdmVyICh3aGljaCBjYW4gYmUgZm91bmQgaW4gdGhlICJDaGFyYWN0ZXIgZHJpdmVycyIKK3NlY3Rpb24gb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHV0aWxpdHkpIHRvIGJlIGNvbXBpbGVkIGFuZCBpbnN0YWxsZWQKKyh1c2luZyBpdHMgImNhbWVyYT0xIiBwYXJhbWV0ZXIpLgorCitJdCBjYW4gZG8gYXQgbWF4aW11bSAzMCBmcHMgQCAzMjB4MjQwIG9yIDE1IGZwcyBAIDY0MHg0ODAuCisKK0dyYWJiaW5nIGlzIHN1cHBvcnRlZCBpbiBwYWNrZWQgWVVWIGNvbG9yc3BhY2Ugb25seS4KKworTUpQRUcgaGFyZHdhcmUgZ3JhYmJpbmcgaXMgc3VwcG9ydGVkIHZpYSBhIHByaXZhdGUgQVBJIChzZWUgYmVsb3cpLgorCitIYXJkd2FyZSBzdXBwb3J0ZWQ6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSAnc2Vjb25kJyB2ZXJzaW9uIG9mIHRoZSBNb3Rpb25FeWUgY2FtZXJhIDopCisKK1RoZSBmaXJzdCB2ZXJzaW9uIHdhcyBjb25uZWN0ZWQgZGlyZWN0bHkgb24gdGhlIHZpZGVvIGJ1cyBvZiB0aGUgTmVvbWFnaWMKK3ZpZGVvIGNhcmQgYW5kIGlzIHVuc3VwcG9ydGVkLgorCitUaGUgc2Vjb25kIG9uZSwgbWFkZSBieSBLYXdhc2FraSBTdGVlbCBpcyBmdWxseSBzdXBwb3J0ZWQgYnkgdGhpcworZHJpdmVyIChQQ0kgdmVuZG9yL2RldmljZSBpcyAweDEzNmIvMHhmZjAxKQorCitUaGUgdGhpcmQgb25lLCBwcmVzZW50IGluIHJlY2VudCAobW9yZSBvciBsZXNzIGxhc3QgeWVhcikgUGljdHVyZWJvb2tzCisoQzFNKiBtb2RlbHMpLCBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgbWFudWZhY3R1cmVyIGhhcyBnaXZlbiB0aGUgc3BlY3MKK3RvIHRoZSBkZXZlbG9wZXJzIHVuZGVyIGEgTkRBICh3aGljaCBhbGxvd3MgdGhlIGRldmVsb21lbnQgb2YgYSBHUEwKK2RyaXZlciBob3dldmVyKSwgYnV0IHRoaW5ncyBhcmUgbm90IG1vdmluZyB2ZXJ5IGZhc3QgKHNlZQoraHR0cDovL3ItZW5naW5lLnNvdXJjZWZvcmdlLm5ldC8pIChQQ0kgdmVuZG9yL2RldmljZSBpcyAweDEwY2YvMHgyMDExKS4KKworVGhlcmUgaXMgYSBmb3J0aCBtb2RlbCBjb25uZWN0ZWQgb24gdGhlIFVTQiBidXMgaW4gVFIxKiBWYWlvIGxhcHRvcHMuCitUaGlzIGNhbWVyYSBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbCBieSB0aGUgY3VycmVudCBkcml2ZXIsIGluIGZhY3QKK2xpdHRsZSBpbmZvcm1hdGlvbiBpZiBhbnkgaXMgYXZhaWxhYmxlIGZvciB0aGlzIGNhbWVyYQorKFVTQiB2ZW5kb3IvZGV2aWNlIGlzIDB4MDU0Yy8weDAxMDcpLgorCitEcml2ZXIgb3B0aW9uczoKKy0tLS0tLS0tLS0tLS0tLQorCitTZXZlcmFsIG9wdGlvbnMgY2FuIGJlIHBhc3NlZCB0byB0aGUgbWV5ZSBkcml2ZXIgdXNpbmcgdGhlIHN0YW5kYXJkCittb2R1bGUgYXJndW1lbnQgc3ludGF4ICg8cGFyYW0+PTx2YWx1ZT4gd2hlbiBwYXNzaW5nIHRoZSBvcHRpb24gdG8gdGhlCittb2R1bGUgb3IgbWV5ZS48cGFyYW0+PTx2YWx1ZT4gb24gdGhlIGtlcm5lbCBib290IGxpbmUgd2hlbiBtZXllIGlzCitzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBrZXJuZWwpLiBUaG9zZSBvcHRpb25zIGFyZToKKworCWZvcmNldjRsMToJZm9yY2UgdXNlIG9mIFY0TDEgQVBJIGluc3RlYWQgb2YgVjRMMgorCisJZ2J1ZmZlcnM6CW51bWJlciBvZiBjYXB0dXJlIGJ1ZmZlcnMsIGRlZmF1bHQgaXMgMiAoMzIgbWF4KQorCisJZ2J1ZnNpemU6CXNpemUgb2YgZWFjaCBjYXB0dXJlIGJ1ZmZlciwgZGVmYXVsdCBpcyA2MTQ0MDAKKworCXZpZGVvX25yOgl2aWRlbyBkZXZpY2UgdG8gcmVnaXN0ZXIgKDAgPSAvZGV2L3ZpZGVvMCwgZXRjKQorCitNb2R1bGUgdXNlOgorLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gYXV0b21hdGljYWxseSBsb2FkIHRoZSBtZXllIG1vZHVsZSBvbiB1c2UsIHlvdSBjYW4gcHV0IHRob3NlIGxpbmVzCitpbiB5b3VyIC9ldGMvbW9kcHJvYmUuY29uZiBmaWxlOgorCisJYWxpYXMgY2hhci1tYWpvci04MSB2aWRlb2RldgorCWFsaWFzIGNoYXItbWFqb3ItODEtMCBtZXllCisJb3B0aW9ucyBtZXllIGdidWZmZXJzPTMyCisKK1VzYWdlOgorLS0tLS0tCisKKwl4YXd0diA+PSAzLjQ5ICg8aHR0cDovL2J5dGVzZXgub3JnL3hhd3R2Lz4pCisJCWZvciBkaXNwbGF5IGFuZCB1bmNvbXByZXNzZWQgdmlkZW8gY2FwdHVyZToKKworCQkJeGF3dHYgLWMgL2Rldi92aWRlbzAgLWdlb21ldHJ5IDY0MHg0ODAKKwkJCQlvcgorCQkJeGF3dHYgLWMgL2Rldi92aWRlbzAgLWdlb21ldHJ5IDMyMHgyNDAKKworCW1vdGlvbmV5ZSAoPGh0dHA6Ly9wb3BpZXMubmV0L21leWUvPikKKwkJZm9yIGdldHRpbmcgcHBtIG9yIGpwZyBzbmFwc2hvdHMsIG1qcGVnIHZpZGVvCisKK1ByaXZhdGUgQVBJOgorLS0tLS0tLS0tLS0tCisKKwlUaGUgZHJpdmVyIHN1cHBvcnRzIGZyYW1lIGdyYWJiaW5nIHdpdGggdGhlIHZpZGVvNGxpbnV4IEFQSQorCShlaXRoZXIgdjRsMSBvciB2NGwyKSwgc28gYWxsIHZpZGVvNGxpbnV4IHRvb2xzIChsaWtlIHhhd3R2KQorCXNob3VsZCB3b3JrIHdpdGggdGhpcyBkcml2ZXIuCisKKwlCZXNpZGVzIHRoZSB2aWRlbzRsaW51eCBpbnRlcmZhY2UsIHRoZSBkcml2ZXIgaGFzIGEgcHJpdmF0ZSBpbnRlcmZhY2UKKwlmb3IgYWNjZXNzaW5nIHRoZSBNb3Rpb24gRXllIGV4dGVuZGVkIHBhcmFtZXRlcnMgKGNhbWVyYSBzaGFycG5lc3MsCisJYWdjLCB2aWRlbyBmcmFtZXJhdGUpLCB0aGUgc2hhcHNob3QgYW5kIHRoZSBNSlBFRyBjYXB0dXJlIGZhY2lsaXRpZXMuCisKKwlUaGlzIGludGVyZmFjZSBjb25zaXN0cyBvZiBzZXZlcmFsIGlvY3RscyAocHJvdG90eXBlcyBhbmQgc3RydWN0dXJlcworCWNhbiBiZSBmb3VuZCBpbiBpbmNsdWRlL2xpbnV4L21leWUuaCk6CisKKwlNRVlFSU9DX0dfUEFSQU1TCisJTUVZRUlPQ19TX1BBUkFNUworCQlHZXQgYW5kIHNldCB0aGUgZXh0ZW5kZWQgcGFyYW1ldGVycyBvZiB0aGUgbW90aW9uIGV5ZSBjYW1lcmEuCisJCVRoZSB1c2VyIHNob3VsZCBhbHdheXMgcXVlcnkgdGhlIGN1cnJlbnQgcGFyYW1ldGVycyB3aXRoCisJCU1FWUVJT0NfR19QQVJBTVMsIGNoYW5nZSB3aGF0IGhlIGxpa2VzIGFuZCB0aGVuIGlzc3VlIHRoZQorCQlNRVlFSU9DX1NfUEFSQU1TIGNhbGwgKGNoZWNraW5nIGZvciAtRUlOVkFMKS4gVGhlIGV4dGVuZGVkCisJCXBhcmFtZXRlcnMgYXJlIGRlc2NyaWJlZCBieSB0aGUgbWV5ZV9wYXJhbXMgc3RydWN0dXJlLgorCisKKwlNRVlFSU9DX1FCVUZfQ0FQVAorCQlRdWV1ZSBhIGJ1ZmZlciBmb3IgY2FwdHVyZSAodGhlIGJ1ZmZlcnMgbXVzdCBoYXZlIGJlZW4KKwkJb2J0YWluZWQgd2l0aCBhIFZJRElPQ0dNQlVGIGNhbGwgYW5kIG1tYXAnZWQgYnkgdGhlCisJCWFwcGxpY2F0aW9uKS4gVGhlIGFyZ3VtZW50IHRvIE1FWUVJT0NfUUJVRl9DQVBUIGlzIHRoZQorCQlidWZmZXIgbnVtYmVyIHRvIHF1ZXVlIChvciAtMSB0byBlbmQgY2FwdHVyZSkuIFRoZSBmaXJzdAorCQljYWxsIHRvIE1FWUVJT0NfUUJVRl9DQVBUIHN0YXJ0cyB0aGUgc3RyZWFtaW5nIGNhcHR1cmUuCisKKwlNRVlFSU9DX1NZTkMKKwkJVGFrZXMgYXMgYW4gYXJndW1lbnQgdGhlIGJ1ZmZlciBudW1iZXIgeW91IHdhbnQgdG8gc3luYy4KKwkJVGhpcyBpb2N0bCBibG9ja3MgdW50aWwgdGhlIGJ1ZmZlciBpcyBmaWxsZWQgYW5kIHJlYWR5CisJCWZvciB0aGUgYXBwbGljYXRpb24gdG8gdXNlLiBJdCByZXR1cm5zIHRoZSBidWZmZXIgc2l6ZS4KKworCU1FWUVJT0NfU1RJTExDQVBUCisJTUVZRUlPQ19TVElMTEpDQVBUCisJCVRha2VzIGEgc25hcHNob3QgaW4gYW4gdW5jb21wcmVzc2VkIG9yIGNvbXByZXNzZWQganBlZyBmb3JtYXQuCisJCVRoaXMgaW9jdGwgYmxvY2tzIHVudGlsIHRoZSBzbmFwc2hvdCBpcyBkb25lIGFuZCByZXR1cm5zIChmb3IKKwkJanBlZyBzbmFwc2hvdCkgdGhlIHNpemUgb2YgdGhlIGltYWdlLiBUaGUgaW1hZ2UgZGF0YSBpcworCQlhdmFpbGFibGUgZnJvbSB0aGUgZmlyc3QgbW1hcCdlZCBidWZmZXIuCisKKwlMb29rIGF0IHRoZSAnbW90aW9uZXllJyBhcHBsaWNhdGlvbiBjb2RlIGZvciBhbiBhY3R1YWwgZXhhbXBsZS4KKworQnVncyAvIFRvZG86CistLS0tLS0tLS0tLS0KKworCS0gdGhlIGRyaXZlciBjb3VsZCBiZSBtdWNoIGNsZWFuZWQgdXAgYnkgcmVtb3ZpbmcgdGhlIHY0bDEgc3VwcG9ydC4KKwkgIEhvd2V2ZXIsIHRoaXMgbWVhbnMgYWxsIHY0bDEtb25seSBhcHBsaWNhdGlvbnMgd2lsbCBzdG9wIHdvcmtpbmcuCisKKwktICdtb3Rpb25leWUnIHN0aWxsIHVzZXMgdGhlIG1leWUgcHJpdmF0ZSB2NGwxIEFQSSBleHRlbnNpb25zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9yYWRpb3RyYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvcmFkaW90cmFjay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI3NTM0NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvcmFkaW90cmFjay50eHQKQEAgLTAsMCArMSwxNDcgQEAKK05PVEVTIE9OIFJBRElPVFJBQ0sgQ0FSRCBDT05UUk9MCitieSBTdGVwaGVuIE0uIEJlbm9pdCAoYmVub2l0c0BzZXJ2aWNlcHJvLmNvbSkgIERlYyAxNCwgMTk5NgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEb2N1bWVudCB2ZXJzaW9uIDEuMAorCitBQ0tOT1dMRURHTUVOVFMKKy0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZG9jdW1lbnQgd2FzIG1hZGUgYmFzZWQgb24gJ0MnIGNvZGUgZm9yIExpbnV4IGZyb20gR2lkZW9uIGxlIEdyYW5nZQorKGxlZ3JhbmdAYWN0aXZlLmNvLnphIG9yIGxlZ3JhbmdAY3Muc3VuLmFjLnphKSBpbiAxOTk0LCBhbmQgZWxhYm9yYXRpb25zIGZyb20KK0ZyYW5zIEJyaW5rbWFuIChicmlua21hbkBlc2QubmwpIGluIDE5OTYuICBUaGUgcmVzdWx0cyByZXBvcnRlZCBoZXJlIGFyZSBmcm9tCitleHBlcmltZW50cyB0aGF0IHRoZSBhdXRob3IgcGVyZm9ybWVkIG9uIGhpcyBvd24gc2V0dXAsIHNvIHlvdXIgbWlsZWFnZSBtYXkKK3ZhcnkuLi4gSSBtYWtlIG5vIGd1YXJhbnRlZXMsIGNsYWltcyBvciB3YXJyYW50aWVzIHRvIHRoZSBzdWl0YWJpbGl0eSBvcgordmFsaWRpdHkgb2YgdGhpcyBpbmZvcm1hdGlvbi4gIE5vIG90aGVyIGRvY3VtZW50YXRpb24gb24gdGhlIEFJTVMKK0xhYiAoaHR0cDovL3d3dy5haW1zbGFiLmNvbS8pIFJhZGlvVHJhY2sgY2FyZCB3YXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlCithdXRob3IuICBUaGlzIGRvY3VtZW50IGlzIG9mZmVyZWQgaW4gdGhlIGhvcGVzIHRoYXQgaXQgbWlnaHQgaGVscCB1c2VycyB3aG8KK3dhbnQgdG8gdXNlIHRoZSBSYWRpb1RyYWNrIGNhcmQgaW4gYW4gZW52aXJvbm1lbnQgb3RoZXIgdGhhbiBNUyBXaW5kb3dzLgorCitXSFkgVEhJUyBET0NVTUVOVD8KKy0tLS0tLS0tLS0tLS0tLS0tLQorSSBoYXZlIGEgUmFkaW9UcmFjayBjYXJkIGZyb20gYmFjayB3aGVuIEkgcmFuIGFuIE1TLVdpbmRvd3MgcGxhdGZvcm0uICBBZnRlcgorY29udmVydGluZyB0byBMaW51eCwgSSBmb3VuZCBHaWRlb24gbGUgR3JhbmdlJ3MgY29tbWFuZC1saW5lIHNvZnR3YXJlIGZvcgorcnVubmluZyB0aGUgY2FyZCwgYW5kIGZvdW5kIHRoYXQgaXQgd2FzIGdvb2QhICBGcmFucyBCcmlua21hbiBtYWRlIGEKK2NvbWZvcnRhYmxlIFgtd2luZG93cyBpbnRlcmZhY2UsIGFuZCBhZGRlZCBhIHNjYW5uaW5nIGZlYXR1cmUuICBGb3IgaGFjawordmFsdWUsIEkgd2FudGVkIHRvIHNlZSBpZiB0aGUgdHVuZXIgY291bGQgYmUgdHVuZWQgYmV5b25kIHRoZSB1c3VhbCBGTSByYWRpbworYnJvYWRjYXN0IGJhbmQsIHNvIEkgY291bGQgcGljayB1cCB0aGUgYXVkaW8gY2FycmllcnMgZnJvbSBOb3J0aCBBbWVyaWNhbgorYnJvYWRjYXN0IFRWIGNoYW5uZWxzLCBzaXR1YXRlZCBqdXN0IGJlbG93IGFuZCBhYm92ZSB0aGUgODcuMC0xMDkuMCBNSHogcmFuZ2UuCitJIGRpZCBub3QgZ2V0IG11Y2ggc3VjY2VzcywgYnV0IEkgbGVhcm5lZCBhYm91dCBwcm9ncmFtbWluZyBpb3BvcnRzIHVuZGVyCitMaW51eCBhbmQgZ2FpbmVkIHNvbWUgaW5zaWdodHMgYWJvdXQgdGhlIGhhcmR3YXJlIGRlc2lnbiB1c2VkIGZvciB0aGUgY2FyZC4KKworU28sIHdpdGhvdXQgZnVydGhlciBkZWxheSwgaGVyZSBhcmUgdGhlIGRldGFpbHMuCisKKworUEhZU0lDQUwgREVTQ1JJUFRJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgUmFkaW9UcmFjayBjYXJkIGlzIGFuIElTQSA4LWJpdCBGTSByYWRpbyBjYXJkLiAgVGhlIHJhZGlvIGZyZXF1ZW5jeSAoUkYpCitpbnB1dCBpcyBzaW1wbHkgYW4gYW50ZW5uYSBsZWFkLCBhbmQgdGhlIG91dHB1dCBpcyBhIHBvd2VyIGF1ZGlvIHNpZ25hbAorYXZhaWxhYmxlIHRocm91Z2ggYSBtaW5pYXR1cmUgcGhvbmUgcGx1Zy4gIEl0cyBSRiBmcmVxdWVuY2llcyBvZiBvcGVyYXRpb24gYXJlCittb3JlIG9yIGxlc3MgbGltaXRlZCBmcm9tIDg3LjAgdG8gMTA5LjAgTUh6ICh0aGUgY29tbWVyY2lhbCBGTSBicm9hZGNhc3QKK2JhbmQpLiAgQWx0aG91Z2ggdGhlIHJlZ2lzdGVycyBjYW4gYmUgcHJvZ3JhbW1lZCB0byByZXF1ZXN0IGZyZXF1ZW5jaWVzIGJleW9uZAordGhlc2UgbGltaXRzLCBleHBlcmltZW50cyBkaWQgbm90IGdpdmUgcHJvbWlzaW5nIHJlc3VsdHMuICBUaGUgdmFyaWFibGUKK2ZyZXF1ZW5jeSBvc2NpbGxhdG9yIChWRk8pIHRoYXQgZGVtb2R1bGF0ZXMgdGhlIGludGVybWVkaWF0ZSBmcmVxdWVuY3kgKElGKQorc2lnbmFsIHByb2JhYmx5IGhhcyBhIHNtYWxsIHJhbmdlIG9mIHVzZWZ1bCBmcmVxdWVuY2llcywgYW5kIHdyYXBzIGFyb3VuZCBvcgorZ2V0cyBjbGlwcGVkIGJleW9uZCB0aGUgbGltaXRzIG1lbnRpb25lZCBhYm92ZS4KKworCitDT05UUk9MTElORyBUSEUgQ0FSRCBXSVRIIElPUE9SVAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBSYWRpb1RyYWNrIChiYXNlKSBpb3BvcnQgaXMgY29uZmlndXJhYmxlIGZvciAweDMwYyBvciAweDIwYy4gIE9ubHkgb25lCitpb3BvcnQgc2VlbXMgdG8gYmUgaW52b2x2ZWQuICBUaGUgaW9wb3J0IGRlY29kaW5nIGNpcmN1aXRyeSBtdXN0IGJlIHByZXR0eQorc2ltcGxlLCBhcyBpbmRpdmlkdWFsIGlvcG9ydCBiaXRzIGFyZSBkaXJlY3RseSBtYXRjaGVkIHRvIHNwZWNpZmljIGZ1bmN0aW9ucworKG9yIGJsb2Nrcykgb2YgdGhlIHJhZGlvIGNhcmQuICBUaGlzIHdheSwgbWFueSBmdW5jdGlvbnMgY2FuIGJlIGNoYW5nZWQgaW4KK3BhcmFsbGVsIHdpdGggb25lIHdyaXRlIHRvIHRoZSBpb3BvcnQuICBUaGUgb25seSBmZWVkYmFjayBhdmFpbGFibGUgdGhyb3VnaAordGhlIGlvcG9ydHMgYXBwZWFycyB0byBiZSB0aGUgIlN0ZXJlbyBEZXRlY3QiIGJpdC4KKworVGhlIGJpdHMgb2YgdGhlIGlvcG9ydCBhcmUgYXJyYW5nZWQgYXMgZm9sbG93czoKKworICBNU2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMU2IKKystLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSsKK3wgVm9sQSB8IFZvbEIgfCA/Pz8/IHwgU3RlcmVvIHwgUmFkaW8gIHwgVHVuZUEgfCBUdW5lQiAgIHwgVHVuZSAgIHwKK3wgICgrKSB8ICAoLSkgfCAgICAgIHwgRGV0ZWN0IHwgQXVkaW8gIHwgKGJpdCkgfCAobGF0Y2gpIHwgVXBkYXRlIHwKK3wgICAgICB8ICAgICAgfCAgICAgIHwgRW5hYmxlIHwgRW5hYmxlIHwgICAgICAgfCAgICAgICAgIHwgRW5hYmxlIHwKKystLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSsKKworCitWb2xBIC4gVm9sQiAgW0FCLi4uLi4uXQorLS0tLS0tLS0tLS0KKzAgMCA6IGF1ZGlvIG11dGUKKzAgMSA6IHZvbHVtZSArICAgIChzb21lIGRlbGF5IHJlcXVpcmVkKQorMSAwIDogdm9sdW1lIC0gICAgKHNvbWUgZGVsYXkgcmVxdWlyZWQpCisxIDEgOiBzdGF5IGF0IHByZXNlbnQgdm9sdW1lCisKK1N0ZXJlbyBEZXRlY3QgRW5hYmxlIFsuLi5TLi4uLl0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiswIDogTm8gRGV0ZWN0CisxIDogRGV0ZWN0CisKKyAgUmVzdWx0cyBhdmFpbGFibGUgYnkgcmVhZGluZyBpb3BvcnQgPjYwIG1zZWMgYWZ0ZXIgbGFzdCBwb3J0IHdyaXRlLgorICAweGZmID09PiBubyBzdGVyZW8gZGV0ZWN0ZWQsICAweGZkID09PiBzdGVyZW8gZGV0ZWN0ZWQuCisKK1JhZGlvIHRvIEF1ZGlvIChwYXRoKSBFbmFibGUgWy4uLi5SLi4uXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMCA6IERpc2FibGUgcGF0aCAoc2lsZW5jZSkKKzEgOiBFbmFibGUgcGF0aCAgKGF1ZGlvIHByb2R1Y2VkKQorCitUdW5lQSAuIFR1bmVCIFsuLi4uLkFCLl0KKy0tLS0tLS0tLS0tLS0KKzAgMCA6ICJ6ZXJvIiBiaXQgcGhhc2UgMQorMCAxIDogInplcm8iIGJpdCBwaGFzZSAyCisKKzEgMCA6ICJvbmUiIGJpdCBwaGFzZSAxCisxIDEgOiAib25lIiBiaXQgcGhhc2UgMgorCisgIDI0LWJpdCBjb2RlLCB3aGVyZSBiaXRzID0gKGZyZXEqNDApICsgMTA0ODYxODguCisgIFRoZSBNb3N0IFNpZ25pZmljYW50IDExIGJpdHMgbXVzdCBiZSAxMDEwIHh4eHggMHgwIHRvIGJlIHZhbGlkLgorICBUaGUgYml0cyBhcmUgc2hpZnRlZCBpbiBMU2IgZmlyc3QuCisKK1R1bmUgVXBkYXRlIEVuYWJsZSBbLi4uLi4uLlRdCistLS0tLS0tLS0tLS0tLS0tLS0KKzAgOiBUdW5lciBoZWxkIGNvbnN0YW50CisxIDogVHVuZXIgdXBkYXRpbmcgaW4gcHJvZ3Jlc3MKKworCitQUk9HUkFNTUlORyBFWEFNUExFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RlZmF1bHQ6ICAgICAgICBCQVNFIDwtLSAweGM4ICAoY3VycmVudCB2b2x1bWUsIG5vIHN0ZXJlbyBkZXRlY3QsCisJCQkJcmFkaW8gZW5hYmxlLCB0dW5lciBhZGp1c3QgZGlzYWJsZSkKKworQ2FyZCBPZmY6CUJBU0UgPC0tIDB4MDAgIChhdWRpbyBtdXRlLCBubyBzdGVyZW8gZGV0ZWN0LAorCQkJCXJhZGlvIGRpc2FibGUsIHR1bmVyIGFkanVzdCBkaXNhYmxlKQorCitDYXJkIE9uOglCQVNFIDwtLSAweDAwICAoc2VlICJDYXJkIE9mZiIsIGNsZWFycyBhbnkgdW5maW5pc2hlZCBidXNpbmVzcykKKwkJQkFTRSA8LS0gMHhjOCAgKHNlZSAiRGVmYXVsdCIpCisKK1ZvbHVtZSBEb3duOiAgICBCQVNFIDwtLSAweDQ4ICAodm9sdW1lIGRvd24sIG5vIHN0ZXJlbyBkZXRlY3QsCisJCQkJcmFkaW8gZW5hYmxlLCB0dW5lciBhZGp1c3QgZGlzYWJsZSkKKwkJKiB3YWl0IDEwIG1zZWMgKgorCQlCQVNFIDwtLSAweGM4ICAoc2VlICJEZWZhdWx0IikKKworVm9sdW1lIFVwOiAgICAgIEJBU0UgPC0tIDB4ODggICh2b2x1bWUgdXAsIG5vIHN0ZXJlbyBkZXRlY3QsCisJCQkJcmFkaW8gZW5hYmxlLCB0dW5lciBhZGp1c3QgZGlzYWJsZSkKKwkJKiB3YWl0IDEwIG1zZWMgKgorCQlCQVNFIDwtLSAweGM4ICAoc2VlICJEZWZhdWx0IikKKworQ2hlY2sgU3RlcmVvOiAgIEJBU0UgPC0tIDB4ZDggIChjdXJyZW50IHZvbHVtZSwgc3RlcmVvIGRldGVjdCwKKwkJCQlyYWRpbyBlbmFibGUsIHR1bmVyIGFkanVzdCBkaXNhYmxlKQorCQkqIHdhaXQgMTAwIG1zZWMgKgorCQl4IDwtLSBCQVNFICAgICAocmVhZCBpb3BvcnQpCisJCUJBU0UgPC0tIDB4YzggIChzZWUgIkRlZmF1bHQiKQorCisJCXg9MHhmZiA9PT4gIm5vdCBzdGVyZW8iLCB4PTB4ZmQgPT0+ICJzdGVyZW8gZGV0ZWN0ZWQiCisKK1NldCBGcmVxdWVuY3k6ICBjb2RlID0gKGZyZXEqNDApICsgMTA0ODYxODgKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG9mIHRoZSAyNCBiaXRzIGluIGNvZGUsCisgICAgICAgICAgICAgICAgKGZyb20gTGVhc3QgdG8gTW9zdCBTaWduaWZpY2FudCk6CisgICAgICAgICAgICAgICAgICB0byB3cml0ZSBhICJ6ZXJvIiBiaXQsCisgICAgICAgICAgICAgICAgICAgIEJBU0UgPC0tIDB4MDEgIChhdWRpbyBtdXRlLCBubyBzdGVyZW8gZGV0ZWN0LCByYWRpbworCQkJCSAgICBkaXNhYmxlLCAiemVybyIgYml0IHBoYXNlIDEsIHR1bmVyIGFkanVzdCkKKyAgICAgICAgICAgICAgICAgICAgQkFTRSA8LS0gMHgwMyAgKGF1ZGlvIG11dGUsIG5vIHN0ZXJlbyBkZXRlY3QsIHJhZGlvCisJCQkJICAgIGRpc2FibGUsICJ6ZXJvIiBiaXQgcGhhc2UgMiwgdHVuZXIgYWRqdXN0KQorICAgICAgICAgICAgICAgICAgdG8gd3JpdGUgYSAib25lIiBiaXQsCisgICAgICAgICAgICAgICAgICAgIEJBU0UgPC0tIDB4MDUgIChhdWRpbyBtdXRlLCBubyBzdGVyZW8gZGV0ZWN0LCByYWRpbworCQkJCSAgICBkaXNhYmxlLCAib25lIiBiaXQgcGhhc2UgMSwgdHVuZXIgYWRqdXN0KQorICAgICAgICAgICAgICAgICAgICBCQVNFIDwtLSAweDA3ICAoYXVkaW8gbXV0ZSwgbm8gc3RlcmVvIGRldGVjdCwgcmFkaW8KKwkJCQkgICAgZGlzYWJsZSwgIm9uZSIgYml0IHBoYXNlIDIsIHR1bmVyIGFkanVzdCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC93OTk2Ni50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3c5OTY2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2FjMzNhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC93OTk2Ni50eHQKQEAgLTAsMCArMSwzMyBAQAorVzk5NjYgQ2FtZXJhIGRyaXZlciwgd3JpdHRlbiBieSBKYWtvYiBLZW1pIChqYWtvYi5rZW1pQHRlbGlhLmNvbSkKKworQWZ0ZXIgYSBsb3Qgb2Ygd29yayBpbiBzb2Z0aWNlICYgd2Rhc20sIHJlYWRpbmcgLnBkZi1maWxlcyBhbmQgdGlyZXNvbWUKK3RyaWFsLWFuZC1lcnJvciB3b3JrIEkndmUgZmluYWxseSBnb3QgZXZlcnl0aGluZyB0byB3b3JrLiBJIG5lZWRlZCB2aXNpb24gZm9yIGEKK3JvYm90aWNzIHByb2plY3Qgc28gSSBib3Jyb3dlZCB0aGlzIGNhbWVyYSBmcm9tIGEgZnJpZW5kIGFuZCBzdGFydGVkIGhhY2tpbmcuCitBbnl3YXkgSSd2ZSBjb252ZXJ0ZWQgbXkgb3JpZ2luYWwgY29kZSBmcm9tIHRoZSBBVlIgOGJpdCBSSVNDIEMvQVNNIGNvZGUgaW50bworYSB3b3JraW5nIExpbnV4IGRyaXZlci4KKworVG8gZ2V0IGl0IHdvcmtpbmcgc2ltcGx5IGNvbmZpZ3VyZSB5b3VyIGtlcm5lbCB0byBzdXBwb3J0CitwYXJwb3J0LCBpZWVlMTI4NCwgdmlkZW80bGludXggYW5kIHc5OTY2CisKK0lmIHc5OTY2IGlzIHN0YXRpY2FsbHkgbGlua2VkIGl0IHdpbGwgYWx3YXlzIHBlcmZvcm0gYWdncmVzc2l2ZSBwcm9iaW5nIGZvcgordGhlIGNhbWVyYS4gSWYgYnVpbHQgYXMgYSBtb2R1bGUgeW91J2xsIGhhdmUgbW9yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisKK09wdGlvbnM6CisgbW9kcHJvYmUgdzk5NjYubyBwYXJkZXY9cGFycG9ydDAob3Igd2hhdGV2ZXIpIHBhcm1vZGU9MCAoMD1hdXRvLCAxPWVjcCwgMj1lcHApCit2b2lsYSEKKworeW91IGNhbiBhbHNvIHR5cGUgJ21vZGluZm8gLXAgdzk5NjYubycgZm9yIG9wdGlvbiB1c2FnZQorKG9yIGNoZWNrb3V0IHc5OTY2LmMpCisKK1RoZSBvbmx5IHRoaW5nIHRvIGtlZXAgaW4gbWluZCBpcyB0aGF0IHRoZSBpbWFnZSBmb3JtYXQgaXMgaW4gWS1VLVktViBmb3JtYXQKK3doZXJlIGV2ZXJ5IHR3byBwaXhlbHMgdGFrZSA0IGJ5dGVzLiBJbiBTREwgKHd3dy5saWJzZGwub3JnKSB0aGlzIGZvcm1hdAoraXMgY2FsbGVkIFZJREVPX1BBTEVUVEVfWVVWNDIyICgxNiBicHApLgorCitBIG1pbmltYWwgdGVzdCBhcHBsaWNhdGlvbiAod2l0aCBzb3VyY2UpIGlzIGF2YWlsYWJsZSBmcm9tOgorICBodHRwOi8vaGVtLmZ5cmlzdG9yZy5jb20vbW9ndWwvdzk5NjYuaHRtbAorCitUaGUgc2xvdyBmcmFtZXJhdGUgaXMgZHVlIHRvIG1pc3NpbmcgRE1BIEVDUCByZWFkIHN1cHBvcnQgaW4gdGhlIAorcGFycG9ydCBkcml2ZXJzLiBJIG1pZ2h0IGFkZCB3b3JraW5nIEVQUCBzdXBwb3J0IGxhdGVyLgorCitHb29kIGx1Y2shCisgICAgL0pha29iIEtlbWkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvenIzNjEyMC50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3pyMzYxMjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZjZjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3pyMzYxMjAudHh0CkBAIC0wLDAgKzEsMTU5IEBACitEcml2ZXIgZm9yIFRydXN0IENvbXB1dGVyIFByb2R1Y3RzIEZyYW1lZ3JhYmJlciwgdmVyc2lvbiAwLjYuMQorLS0tLS0tIC0tLSAtLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0gIC0tLS0tLS0gLSAtIC0KKworLSBaT1JBTiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBdXRob3I6IFBhdWxpbmUgTWlkZGVsaW5rIDxtaWRkZWxpbkBwb2x5d2FyZS5ubD4gCisgICBEYXRlOiAxOCBTZXB0ZW1iZXIgMTk5OQorVmVyc2lvbjogMC42LjEKKworLSBEZXNjcmlwdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVmlkZW80TGludXggY29tcGF0aWJsZSBkcml2ZXIgZm9yIGFuIHVua25vd24gYnJhbmQgZnJhbWVncmFiYmVyCisoU29sZCBpbiB0aGUgTmV0aGVybGFuZHMgYnkgVFJVU1QgQ29tcHV0ZXIgUHJvZHVjdHMpIGFuZCB2YXJpb3VzCitvdGhlciB6b3JhbiB6cjM2MTIwIGJhc2VkIGZyYW1lZ3JhYmJlcnMuCisKK1RoZSBjYXJkIGNvbnRhaW5zIGEgWlIzNjEyMCBNdWx0aW1lZGlhIFBDSSBJbnRlcmZhY2UgYW5kIGEgUGhpbGlwcworU0FBNzExMCBPbmVjaGlwIEZyb250ZW5kIHZpZGVvZGVjb2Rlci4gVGhlcmUgaXMgYWxzbyBhbiBEU1Agb2YKK3doaWNoIEkgaGF2ZSBmb3Jnb3R0ZW4gdGhlIG51bWJlciwgc2luY2UgaSB3aWxsIG5ldmVyIGdldCB0aGF0IHRoaW5nCit0byB3b3JrIHdpdGhvdXQgc3BlY3MgZnJvbSB0aGUgdmVuZG9yIGl0c2VsZi4KKworVGhlIFNBQTcxMXggYXJlIGNhcGFibGUgb2YgcHJvY2Vzc2luZyA2IGRpZmZlcmVudCB2aWRlbyBpbnB1dHMsCitDVkJTMS4uNiBhbmQgWTErQzEsIFkyK0MyLCBZMytDMy4gQWxsIGluIDUwLzYwSHosIE5UU0MsIFBBTCBvcgorU0VDQU0gYW5kIGRlbGl2ZXJpbmcgYSBZVVYgZGF0YXN0cmVhbS4gIE9uIG15IGNhcmQgdGhlIGlucHV0CisnQ1ZCUy0wJyBjb3JyZXNwb25kcyB0byBjaGFubmVsIENWQlMyIGFuZCAnUy1WaWRlbycgdG8gWTIrQzIuCisKK0kgaGF2ZSBzb21lIHJlcG9ydHMgb2Ygb3RoZXIgY2FyZHMgd29ya2luZyB3aXRoIHRoZSBtZW50aW9uZWQKK2NoaXAgc2V0cy4gRm9yIGEgbGlzdCBvZiBvdGhlciB3b3JraW5nIGNhcmRzIHBsZWFzZSBoYXZlIGEgbG9vaworYXQgdGhlIGNhcmRzIG5hbWVkIGluIHRoZSB0dmNhcmRzIHN0cnVjdCBpbiB0aGUgYmVnaW5uaW5nIG9mCit6cjM2MTIwLmMKKworQWZ0ZXIgc29tZSB0ZXN0aW5nLCBJIGRpc2NvdmVyZWQgdGhhdCB0aGUgY2FyZGRlc2lnbmVyIG1lc3NlZCB1cAorb24gdGhlIEkyQyBpbnRlcmZhY2UuIFRoZSBab3JhbiBjaGlwIGluY2x1ZGVzIDIgbGluZXMgU0RBIGFuZCBTQ0wKK3doaWNoIChzKWhlIGNvbm5lY3RlZCByZXZlcnNlbHkuIFNvIHdlIGhhdmUgdG8gY2xvY2sgb24gdGhlIFNEQQorYW5kIHIvdyBkYXRhIG9uIHRoZSBTQ0wgcGluLiBMaWZlIGlzIGZ1bi4uLiBFYWNoIGNhcmR0eXBlIG5vdyBoYXMKK2EgYml0IHdoaWNoIHNpZ25pZmllcyBpZiB5b3UgaGF2ZSBhIGNhcmQgd2l0aCB0aGUgc2FtZSBkZWZpY2llbmN5LgorCitPaCwgZm9yIHRoZSBjb21wbGV0ZW5lc3Mgb2YgdGhpcyBzdG9yeSBJIG11c3QgbWVudGlvbiB0aGF0IG15CitjYXJkIGRlbGl2ZXJzIHRoZSBWU1lOQyBwdWxzZSBvZiB0aGUgU0FBIGNoaXAgdG8gR0lSUTEsIG5vdAorR0lSUTAgYXMgc29tZSBvdGhlciBjYXJkcyBoYXZlLiBUaGlzIGlzIGFsc28gaW5jb3Jwb3JhdGVkIGluCit0aGUgZHJpdmVyIGJlIGNsZWFyaW5nL3NldHRpbmcgdGhlICd1c2VpcnExJyBiaXQgaW4gdGhlIHR2Y2FyZAorZGVzY3JpcHRpb24uCisKK0Fub3RoZXIgcHJvYmxlbXMgb2YgY29udGludW91cyBjYXB0dXJpbmcgZGF0YSB3aXRoIGEgWm9yYW4gY2hpcAoraXMgc29tZXRoaW5nIG5hc3R5IGluc2lkZSB0aGUgY2hpcC4gSXQgZWZmZWN0aXZlbHkgaGFsdmVzIHRoZQorZnBzIHdlIG91Z2h0IHRvIGdldC4uLiBIZXJlIGlzIHRoZSBzY2VuYXJpbzogY2FwdHVyaW5nIGZyYW1lcwordG8gbWVtb3J5IGlzIGRvbmUgaW4gdGhlIHNvLWNhbGxlZCBzbmFwc2hvdCBtb2RlLiBJbiB0aGlzIG1vZGUKK3RoZSBab3JhbiBzdG9wcyBhZnRlciBjYXB0dXJpbmcgYSBmcmFtZSB3b3J0aCBvZiBkYXRhIGFuZCB3YWl0Cit0aWxsIHRoZSBhcHBsaWNhdGlvbiBzZXQgR1JBQiBiaXQgdG8gaW5kaWNhdGUgcmVhZGluZXNzIGZvciB0aGUKK25leHQgZnJhbWUuIEFmdGVyIGRldGVjdGluZyBhIHNldCBiaXQsIHRoZSBjaGlwIG5lYXRseSB3YWl0cwordGlsbCB0aGUgc3RhcnQgb2YgYSBmcmFtZSwgY2FwdHVyZXMgaXQgYW5kIGl0IGdvZXMgYmFjayB0byBvZmYuCitTbWFydCBwcGwgd2lsbCBub3RpY2UgdGhlIHByb2JsZW0gaGVyZS4gSXRzIHRoZSB3YWl0aW5nIG9uIHRoZQorX25leHRfIGZyYW1lIGVhY2ggdGltZSB3ZSBzZXQgdGhlIEdSQUIgYml0Li4uIE9oIHdlbGwsIDEyLDUgZnBzCitpcyBzdGlsbCBwbGVudHkgZmFzdCBmb3IgbWUuCistLSB1cGRhdGUgMjgvNy8xOTk5IC0tCitEb24ndCBiZWxpZXZlIGEgd29yZCBJIGp1c3Qgc2FpZC4uLiBQcm9vZiBpcyB0aGUgb3V0cHV0CitvZiBgc3RyZWFtZXIgLXQgMzAwIC1yIDI1IC1mIGF2aTE1IC1vIC9kZXYvbnVsbGAKKwkrKy0tKy0rLSstKy0rLSstKy0rLSstKy0rLSstcystKy0rLSstKy0rLSstKy0rLSstKy0gMjUvMjUKKwkrLXMrLSstKy0rLSstKy0rLSstKy0rLSstKy0rLXMrLSstKy0rLSstKy0rLSstKy0rLSstIDI1LzI1CisJKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLSAyNS8yNQorCSstcystKy0rLSstKy0rLSstKy0rLSstKy0rLSstcystKy0rLSstKy0rLSstKy0rLSstKy0gMjUvMjUKKwkrLXMrLSstKy0rLSstKy0rLSstKy0rLSstKy0rLXMrLSstKy0rLSstKy0rLSstKy0rLSstIDI1LzI1CisJKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLSAyNS8yNQorCSstcystKy0rLSstKy0rLSstKy0rLSstKy0rLSstcystKy0rLSstKy0rLSstKy0rLSstKy0gMjUvMjUKKwkrLXMrLSstKy0rLSstKy0rLSstKy0rLSstKy0rLXMrLSstKy0rLSstKy0rLSstKy0rLSstIDI1LzI1CisJKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLSAyNS8yNQorCSstcystKy0rLSstKy0rLSstKy0rLSstKy0rLSstcystKy0rLSstKy0rLSstKy0rLSstKy0gMjUvMjUKKwkrLXMrLSstKy0rLSstKy0rLSstKy0rLSstKy0rLXMrLSstKy0rLSstKy0rLSstKy0rLSstIDI1LzI1CisJKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy1zKy0rLSstKy0rLSstKy0rLSstKy0rLQorCXN5bmNlcjogZG9uZQorCXdyaXRlcjogZG9uZQorKG5vdGUgdGhlIC9kZXYvbnVsbCBpcyBwcnVkZW50IGhlcmUsIG15IHN5c3RlbSBpcyBub3QgYWJsZSB0bworIGdyYWIgL2FuZC8gd3JpdGUgMjUgZnBzIHRvIGEgZmlsZS4uLiBnaWZ0cyB3ZWxjb21lIDopICkKK1RoZSB0ZWNobmljYWwgcmVhc29uaW5nIGZvbGxvd3M6IFRoZSB6b3JhbiBjb21wbGV0ZWQgdGhlIGxhc3QKK2ZyYW1lLCB0aGUgVlNZTkMgZ29lcyBsb3csIGFuZCBHUkFCIGlzIGNsZWFyZWQuIFRoZSBpbnRlcnJ1cHQKK3JvdXRpbmUgc3RhcnRzIHRvIHdvcmsgc2luY2UgaXRzIFZTWU5DIGRyaXZlbiwgYW5kIGFnYWluCithY3RpdmF0ZXMgdGhlIEdSQUIgYml0LiBBIGZldyBtcyBsYXRlciB0aGUgVlNZTkMgKHJlLSlyaXNlcyBhbmQKK3RoZSB6b3JhbiBzdGFydHMgdG8gd29yayBvbiBhIG5ldyBhbmQgZnJlc2hseSBicm9hZGNhc3RlZCBmcmFtZS4uLi4KKworRm9yIHBvaW50ZXJzIEkgdXNlZCB0aGUgc3BlY3Mgb2YgYm90aCBjaGlwcy4gQmVsb3cgYXJlIHRoZSBVUkxzOgorCWh0dHA6Ly93d3cuem9yYW4uY29tL2Z0cC9kb3dubG9hZC9kZXZpY2VzL3BjaS9aUjM2MTIwLzM2MTIwZGF0YS5wZGYKKwlodHRwOi8vd3d3LXVzLnNlbWljb25kdWN0b3IucGhpbGlwcy5jb20vYWNyb2JhdC9kYXRhc2hlZXRzL1NBQV83MTEwX0FfMS5wZGYKKworVGhlIGRvY3VtZW50YXRpb24gaGFzIHZlcnkgbGl0dGxlIG9uIGFic29sdXRlIG51bWJlcnMgb3IgdGltaW5ncworbmVlZGVkIGZvciB0aGUgdmFyaW91cyBtb2Rlcy9yZXNvbHV0aW9ucywgYnV0IHRoZXJlIGFyZSBvdGhlcgorcHJvZ3JhbXMgeW91IGNhbiBib3Jyb3cgdGhvc2UgZnJvbS4KKworLS0tLS0tIEluc3RhbGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JlYWQgdGhlIGZpbGUgY2FsbGVkIFRPRE8uICBOb3RlIGl0cyBsb25nIGxpc3Qgb2YgbGltaXRhdGlvbnMuCisKK0J1aWxkIGEga2VybmVsIHdpdGggVklERU80TElOVVggZW5hYmxlZC4gQWN0aXZhdGUgdGhlCitCVDg0OCBkcml2ZXI7IHdlIG5lZWQgdGhpcyBiZWNhdXNlIHdlIGhhdmUgbmVlZCBmb3IgdGhlCitvdGhlciBtb2R1bGVzIChpMmMgYW5kIHZpZGVvZGV2KSBpdCBlbmFibGVzLgorCitUbyBpbnN0YWxsIHRoaXMgc29mdHdhcmUsIGV4dHJhY3QgaXQgaW50byBhIHN1aXRhYmxlIGRpcmVjdG9yeS4KK0V4YW1pbmUgdGhlIG1ha2VmaWxlIGFuZCBjaGFuZ2UgYW55dGhpbmcgeW91IGRvbid0IGxpa2UuICBUeXBlICJtYWtlIi4KKworQWZ0ZXIgbWFraW5nIHRoZSBtb2R1bGVzIGNoZWNrIGlmIHlvdSBoYXZlIHRoZSBtdWNoIG5lZWRlZAorL2Rldi92aWRlbyBkZXZpY2VzLiBJZiBub3QsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyA0IGxpbmVzOgorCW1rbm9kIC9kZXYvdmlkZW8gYyA4MSAwCisJbWtub2QgL2Rldi92aWRlbzEgYyA4MSAxCisJbWtub2QgL2Rldi92aWRlbzIgYyA4MSAyCisJbWtub2QgL2Rldi92aWRlbzMgYyA4MSAzCisJbWtub2QgL2Rldi92aWRlbzQgYyA4MSA0CisKK0FmdGVyIG1ha2luZy9jaGVja2luZyB0aGUgZGV2aWNlcyBkbzoKKwltb2Rwcm9iZSBpMmMKKwltb2Rwcm9iZSB2aWRlb2RldgorCW1vZHByb2JlIHNhYTcxMTAJKG9wdGlvbmFsKQorCW1vZHByb2JlIHNhYTcxMTEJKG9wdGlvbmFsKQorCW1vZHByb2JlIHR1bmVyCQkob3B0aW9uYWwpCisJaW5zbW9kIHpvcmFuIGNhcmR0eXBlPTxuPgorCis8bj4gaXMgdGhlIGNhcmR0eXBlIG9mIHRoZSBjYXJkIHlvdSBoYXZlLiBUaGUgY2FyZG51bWJlciBjYW4KK2JlIGZvdW5kIGluIHRoZSBzb3VyY2Ugb2YgenIzNjEyMC4gTG9vayBmb3IgdHZjYXJkcy4gSWYgeW91cgorY2FyZCBpcyBub3QgdGhlcmUsIHBsZWFzZSB0cnkgaWYgYW55IG90aGVyIGNhcmQgZ2l2ZXMgc29tZQorcmVzcG9uc2UsIGFuZCBtYWlsIG1lIGlmIHlvdSBnb3QgYSB3b3JraW5nIHR2Y2FyZCBhZGRpdGlvbi4gCisKK1BTLiA8VFZDYXJkIGVkaXRvcnMgYmVob2xkISkKKyAgICBEb250IGZvcmdldCB0byBzZXQgdmlkZW9faW5wdXQgdG8gdGhlIG51bWJlciBvZiBpbnB1dHMKKyAgICB5b3UgZGVmaW5lZCBpbiB0aGUgdmlkZW9fbXV4IHBhcnQgb2YgdGhlIHR2Y2FyZCBkZWZpbml0aW9uLgorICAgIEl0cyBhIGNvbW1vbiBlcnJvciB0byBhZGQgYSBjaGFubmVsIGJ1dCBub3QgaW5jcmVtZW50aW5nCisgICAgdmlkZW9faW5wdXQgYW5kIGdldHRpbmcgYW5ncnkgd2l0aCBtZS92NGwvbGludXgvbGludXMgOigKKworWW91IGFyZSBub3cgcmVhZHkgdG8gdGVzdCB0aGUgZnJhbWVncmFiYmVyIHdpdGggeW91ciBmYXZvcml0ZQordmlkZW80bGludXggY29tcGF0aWJsZSB0b29sCisKKy0tLS0tLSBBcHBsaWNhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZGV2aWNlIHdvcmtzIHdpdGggYWxsIFZpZGVvNExpbnV4IGNvbXBhdGlibGUgYXBwbGljYXRpb25zLAorZ2l2ZW4gdGhlIGxpbWl0YXRpb25zIGluIHRoZSBUT0RPIGZpbGUuCisKKy0tLS0tLSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgdXNlcyB0aGUgVjRMIGludGVyZmFjZSBhcyBvZiBrZXJuZWwgcmVsZWFzZSAyLjEuMTE2LCBhbmQgaW4KK2ZhY3QgaGFzIG5vdCBiZWVuIHRlc3RlZCBvbiBhbnkgbG93ZXIgdmVyc2lvbi4gIFRoZXJlIGFyZSBhIGNvdXBsZQorb2YgbWlub3IgZGlmZmVyZW5jZXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIGFtb3VudCBvZiBkYXRhIHJldHVybmVkCit3aXRoIGVhY2ggZnJhbWUgdmFyaWVzLCBhbmQgbm8gZG91YnQgdGhlcmUgYXJlIGRpc2NyZXBhbmNpZXMgZHVlIHRvIG15CittaXN1bmRlcnN0YW5kaW5nIG9mIHRoZSBBUEkuICBJIGludGVuZCB0byBjb252ZXJ0IHRoaXMgZHJpdmVyIHRvIHRoZQorbmV3IFY0TDIgQVBJIHdoZW4gaXQgaGFzIHN0YWJpbGl6ZWQgbW9yZS4KKworLS0tLS0tIEN1cnJlbnQgc3RhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBpcyBjYXBhYmxlIG9mIG92ZXJsYXlpbmcgYSB2aWRlbyBpbWFnZSBpbiBzY3JlZW4sIGFuZAorZXZlbiBjYXBhYmxlIG9mIGdyYWJiaW5nIGZyYW1lcy4gSXQgdXNlcyB0aGUgQklHUEhZU0FSRUEgcGF0Y2gKK3RvIGFsbG9jYXRlIGxvdHMgb2YgbGFyZ2UgbWVtb3J5IGJsb2NrcyB3aGVuIHRpcyBwYXRjaCBpcworZm91bmQgaW4gdGhlIGtlcm5lbCwgYnV0IGl0IGRvZXNuJ3QgbmVlZCBpdC4KK1RoZSBjb25zZXF1ZW5jZSBpcyB0aGF0LCB3aGVuIGxvYWRpbmcgdGhlIGRyaXZlciBhcyBhIG1vZHVsZSwKK3RoZSBtb2R1bGUgbWF5IHRlbGwgeW91IGl0J3Mgb3V0IG9mIG1lbW9yeSwgYnV0ICdmcmVlJyBzYXlzCitvdGhlcndpc2UuIFRoZSByZWFzb24gaXMgc2ltcGxlOyB0aGUgbW9kdWxlcyB3YW50cyBpdHMgbWVtb3J5Citjb250aWd1b3VzLCBub3QgZnJhZ21lbnRlZCwgYW5kIGFmdGVyIGEgbG9uZyB1cHRpbWUgdGhlcmUKK3Byb2JhYmx5IGlzbid0IGEgZnJhZ21lbnQgb2YgbWVtb3J5IGxhcmdlIGVub3VnaC4uLgorCitUaGUgZHJpdmVyIHVzZXMgYSBkb3VibGUgYnVmZmVyaW5nIHNjaGVtZSwgd2hpY2ggc2hvdWxkIHJlYWxseQorYmUgYW4gbi13YXkgYnVmZmVyLCBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgYWxsb2NhdGVkIGZyYW1lYnVmZmVyCithbmQgdGhlIHJlcXVlc3RlZCBncmFiLXNpemUvZm9ybWF0LgorVGhpcyBjdXJyZW50IHZlcnNpb24gYWxzbyBmaXhlcyBhIGRlYWQtbG9jayBzaXR1YXRpb24gZHVyaW5nIGlycQordGltZSwgd2hpY2ggcmVhbGx5LCByZWFsbHkgZnJvemUgbXkgc3lzdGVtLi4uIDopCisKK0dvb2QgbHVjay4KKyAgUGF1bGluZQo=