T24gMzEgSmFudWFyeSAyMDE2IGF0IDIyOjUyLCBlbWJlZGRlZCBzeXN0ZW1zIDxwaWNsaXN0OUBn bWFpbC5jb20+IHdyb3RlOgoKPiBSdXNzZWxsLAo+CgoKCj4gSSB3b3VsZCBzYXkgdGhhdCBtaWNy b2dyaWQgdGVjaG5pcXVlcyBtdXN0IGJlIHdlbGwgdW5kZXJzdG9vZAoKCuKAi1Zhc2lsZSAtCgpJ IGFncmVlLiBBbmQsIC4uLgoKSSAqaG9wZSogdGhhdCBJIHVuZGVyc3RhbmQgdGhlIHRlY2huaWNh bCBhc3BlY3RzIG9mIG1pY3JvZ3JpZCB2ZXJ5IHdlbGwKaW5kZWVkLgpBbmQsIEkgKnRoaW5rKiB0 aGF0IEkgZG8uCkluIHRoZSBsYXN0IHllYXIgb3Igc28gSSBoYXZlIHNwZW50IHRvbyBtdWNoIHRp bWUgb24gdGhlIGludmVzdGlnYXRpb24gb2YKY3VycmVudCBtaWNyb2dyaWQgcHJhY3RpY2UgYW5k IHBvc3NpYmxlIGFuZCBjdXJyZW50IGRpcmVjdGlvbnMgaW4KZGV2ZWxvcG1lbnQgYW5kIGhhdmUg YmVlbiBpbnZvbHZlZCBpbiBhc3BlY3RzIG9mIHByb3RvdHlwZSBkZXZlbG9wbWVudCBvZgpwcmFj dGljYWwgImNsb3VkIiBpbnRlcmZhY2VkIGFuZCBtYW5hZ2VkICJzdHVmZiIuIEknZCBjb25zaWRl ciBteXNlbGYgYXMKJ2V4Y2Vzc2l2ZWx5IGV4cGVyaWVuY2VkJyBpbiB2ZXJ5IHNtYWxsIGhvbWUt c2NhbGUgc3lzdGVtcy4gVGhlIE9yaXNvbgpzeXN0ZW0gaGFwcGVucyB0byBiZSBhbiBhbG1vc3Qg ZXhhY3QgbWF0Y2ggd2l0aCB0aGUgYXJlYSBJIGhhdmUgYmVlbgoncGxheWluZycgaW4gd2l0aCBy ZXNwZWN0IHRvIGdyaWQgdGllLCBpbnZlcnRlciBhc3BlY3RzLCBiYXR0ZXJ5IHN0b3JhZ2UKYW5k IHJldHJpZXZhbCBvZiBlbmVyZ3ksIGNsb3VkIG1hbmFnZW1lbnQgaW5jbHVkaW5nIHRpbWUgdmFy aWFudCBjb3N0aW5ncywKbG9hZCBzaGlmdGluZywgbWF0Y2hpbmcgb2Ygc3RvcmFnZSBlbmVyZ3kg dXNlIG9yIGFjcXVpc2l0aW9uIHRvIGxvY2FsCmluc3RhbnRhbmVvdXMgbG9hZCBhbmQgZ2VuZXJh dGlvbiBsZXZlbHMgaW4gb3JkZXIgdG8gbWF4aW1pc2UgcmF0ZSBvZgpyZXR1cm4sIGJhdHRlcnkg Y3ljbGUgbGl2ZXMsIGVmZmljaWVuY2llcyAsICJldGMiLgoKU28sIGFnYWluLCB5ZXMsIEkgYWdy ZWUuCgpSZXZlcnNlIG9yZGVyOgoKPiDigIsK4oCLCkFsbCB0aGUgcHJvYmxlbXMgZW51bWVyYXRl ZCBoZXJlIGNhbiBiZSBzb2x2ZWQuCgpJIGNvbXBsZXRlbHkgYWdyZWUuCkJ1dCBub3QsIEkgZGVl bS4gYnkgdGhlbSBpbiB0aGUgbWFubmVycyB0aGF0IHRoZXkgc3VnZ2VzdC4KCj4gTWljcm9ncmlk IGlzIHRoZSBmdXR1cmUuCgpQYXJ0IG9mIGl0LCBjZXJ0YWlubHkuCgpCdXQsIGhlcmUncyB0aGUg cnViOgoKYmVmb3JlIGdpdmluZwo+IOKAiyDigIsKPiBzdWNoIHBlc3NpbWlzdGljIHByZWRpY3Rp b25zICgibGFyZ2UgZGlzYXN0ZXIiIGZvciBpbnN0YW5jZS4uLikuCj4g4oCLIOKAiwo+IDopCj4K PgrigItNeSBwcmVkaWN0aW9ucyB3ZXJlIHZlcnkgbGFyZ2VseSBkaXJlY3RlZCB0b3dhcmRzIHRo aXMgY3VycmVudGx5IHByb3Bvc2VkCmltcGxlbWVudGF0aW9uIGFuZCB0aGUgZGlzdHJpYnV0ZWQg Y2xhaW1zIG1hZGUgYW5kIHJlbGF0ZWQgY29zdGluZ3MsIGFuZApsYXJnZWx5IHdlcmUgbm90IHJl bGF0ZWQgdG8gbWljcm9ncmlkIHBlciBzZSAtIGFsdGhvdWdoIHNvbWUgb2YgdGhlbSBhcmUgb2YK cmVsZXZhbmNlIHRvIHdoYXQgaXMgbmVlZGVkIGZvciBhbnkgc2Vuc2libGUgc3VjY2Vzc2Z1bCBt aWNyb2dyaWQKIOKAi2ltcGxlbWVudGF0aW9uLgoKVGhlICJsYXJnZSBkaXNhc3RlciIgcmVmZXJy ZWQgdG8gdGhlaXIgc3BlY2lmaWMgcHJvcG9zZWQgc3lzdGVtIGJ1dCBjb3VsZApiZSBleHRlbmRl ZCB0byBhbnkgc3lzdGVtIHRoYXQgY3V0IGFzIG1hbnkgY29ybmVycyBhcyB0aGV5IGF2ZSBwcm9w b3NlZCBvcgp0aGF0IG5lZWRzIGFzIG11Y2ggbWFnaWMgdG8gZnVuY3Rpb24uCgpJIGluaXRpYWxs eSBzYWlkIHRoYXQgImFzIGRlc2NyaWJlZCIgKG15IHdvcmRzKSB0aGUgc3lzdGVtIHdhcyBlaXRo ZXIKaW1wb3NzaWJsZSBvciByZXF1aXJlZCBtYWdpYy4KCmllIFRoZXkgY2xhaW1lZCAianVzdCBw bHVnIGluIGFuZCBnbyIgY2FwYWJpbGl0eSBidXQgaXQgaXMgaW1wb3NzaWJsZSwKd2l0aG91dCB1 c2luZyBtYWdpYykgIHRvIGRvIHRoaXMgYW5kIHRvIGFsc28gbWVldCBhbGwgdGhlaXIgY2xhaW1z CgpUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHJlcXVpc2l0ZSBtYWdpYyB3YXMgc3Vic2VxdWVu dGx5IHJldmVhbGVkIG5vdCBpbgphbnkgc3BlY3MgZ2l2ZW4gb24gdGhlaXIgd2Vic2l0ZSBhbmQg bm90IGluIHRoZSBLaWNrc3RhcnRlciBwcm9qZWN0CmRlc2NyaXB0aW9uLCBub3IgZXZlbiBpbiB0 aGUgdXBkYXRlcyBidXQgKGFzIENvbGxpbiBwb2ludGVkIG91dCkgaW4gdGhlCnJlc3BvbnNlcyB0 byBLaWNrc3RhcnRlciBxdWVzdGlvbnMuCuKAi1RvIG1ha2UgdGhlaXIgInBsdWcgaW4gYW5kIGdv IiBzeXN0ZW0gZnVuY3Rpb24g4oCLYXMgZGVzY3JpYmVkIHRoZXkgc3RhdGUKdGhhdCB0aGV5IHJl cXVpcmUgKGFzIG9uZSB3b3VsZCBleHBlY3QpIHBvd2VyIG1vbml0b3Jpbmcgb2YgdGhlIEFDIGdy aWQgYW5kClBWIGludGVyZmFjZXMgYW5kIGNvbW11bmljYXRpb25zIHdpdGggdGhlc2UgYW5kIHRo ZSBob21lJ3Mgc21hcnQgcG93ZXIKbWV0ZXIuIEkgaGF2ZSwgb2YgbmVjZXNzaXR5LCBpbnRpbWF0 ZSBleHBlcmllbmNlIHdpdGggdGhlIGZpcnN0IHR3byBvZgp0aGVzZSBhbmQgaW1wbGVtZW50YXRp b24gb2YgaW5kZXBlbmRlbnQgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5IHRvIHRoZQp0aGlyZCwg d2hpbGUgcGVvcGxlIEkgaGF2ZSBiZWVuIGludm9sdmVkIHdpdGggaGF2ZSBkaXJlY3QgZXhwZXJp ZW5jZSB3aXRoCm5vbi1yZWFsLXRpbWUgYXNwZWN0cyBvZiB0aGUgbGF0dGVyLiBOb25lIG9mIHRo aXMgaXMgb3Zlcmx5IGhhcmQgKGZvcgp0eXBpY2FsIHJhbmdlcyBvZiAgaGFyZCkgbm9yIGV4Y2Vz c2l2ZWx5IGV4cGVuc2l2ZSAtIGJ1dCBhbHNvIGFyZSBub3QKY29uc2lzdGVudCB3aXRoICJqdXN0 IHBsdWcgaXQgaW4gYW5kIGdvIi4KRldJVywgd2hpbGUgY3VycmVudCBtb25pdG9yaW5nIHRvIHJl YXNvbmFibGUgYnV0IGxlc3MgYWNjdXJhdGUgdGhhbiBpcwp1c3VhbGx5IGRlc2lyYWJsZSBhY2N1 cmFjeSBsZXZlbHMgY2FuIGJlIGRvbmUgd2l0aCBub24gY29udGFjdCB0ZWNobmlxdWVzCihhc2sg bWUgaG93IEkga25vdykgdGhlIG1vbml0b3Jpbmcgb2Ygdm9sdGFnZXMgQ0FOIGJlIGRvbmUgYnkg bm9uIGNvbnRhY3QKbWV0aG9kcyAoZWcgZWxlY3Ryb3N0YXRpYyBtZWFzdXJlbWVudHMpLCAgdGhl IG5vcm1hbCBtZWFucyBhcmUgYnkgZ2FsdmFuaWMKY29ubmVjdGlvbiwgZnVydGhlciB2aW9sYXRp bmcgdGhlICdqdXN0IHBsdWcgaXQgaW4nIGFzcGVjdHMuCgpJZiBvbmUgd2FudGVkIHRvIGNvbnNp ZGVyIG9uZSBhcmVhIHdoaWNoIGFwcGVhcmVkIGxpYWJsZSB0byBiZSBleGNlc3NpdmVseQpwcm9i bGVtYXRpYyB0aGVyZSB3b3VsZCBwcm9iYWJseSBiZSBhIGNob2ljZSwgYnV0IHRoZSB1c2Ugb2Yg YW4KaW50ZW50aW9uYWxseSB0cmlwcGVkIHN3aXRjaGJvYXJkIGxvY2F0ZWQgRUxDQiBhcyBhbiAi aXNsYW5kaW5nIiBpbnRlcmZhY2UKcG9pbnQgd2l0aCBtYW51YWwgcmVzZXQgYXMgcmVxdWlzaXRl IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0LiBUaGF0IGFueQpyZWd1bGF0b3J5IGJvZHkgd2lsbCBp biBmdXR1cmUgYWxsb3cgYSAzcmQgcGFydHkgZGV2aWNlIGRlc2lnbmVkIHRvIHByb3ZpZGUKY2ly Y3VpdCBpc29sYXRpb24gdW5kZXIgZmF1bHQgb3IgbWFpbnRlbmFuY2UgY29uZGl0aW9ucyB0byBi ZSB1c2VkIGFzIGEKZm9ybWFsIGlzbGFuZGluZyBpbnRlcmZhY2Ugc2VlbXMgaW4tY3JlZGlibGUg YW5kIHRoYXQgYSBzZXJpb3VzIHN5c3RlbQp3b3VsZCB1c2UgYSBkZXZpY2Ugd2hpY2ggcmVxdWly ZWQgbWFudWFsIHJlc2V0dGluZyBhZnRlciBlYWNoIGlzbGFuZGluZwpldmVudCB3b3VsZCBzZWVt IGVxdWFsbHkgaW4tY3JlZGlibGUuIEFzIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlcmUgaXMgYQp3 aG9sZSBob3NlIGxvYWQgaW4gZXhjZXNzIG9mIHRoZSAoUFYgKyBiYXR0ZXJ5KSArIGludmVydGVy IGNhcGFiaWxpdHksIGFuZApvbmUgd2lzaGVkIHRvIG9wZXJhdGUgdGhlIHNlbGVjdGVkIGNpcmN1 aXQgaW4gaXNsYW5kZWQgbW9kZSB3aXRoIHRoZQpyZW1haW5pbmcgbG9hZCB1bnBvd2VyZWQsIHRo ZSBpc2xhbmRpbmcgc3dpdGNoIG1heSBuZWVkIHRvIGN1dCBpbiBhbmQgb3V0IGEKbnVtYmVyIG9m IHRpbWVzIG92ZXIgYSBzaG9ydCBwZXJpb2QgQU5EIHRoZSJvdGhlciBsb2FkIiB3b3VsZCBuZWVk IHRvIGJlCmlzb2xhdGVkIHRvIHByZXZlbnQgaXQgYmVpbmcgZ3JpZCBwb3dlcmVkIGF0IHN1Y2gg dGltZXMuIFtbU3BlY2lmaWMgZXhhbXBsZQphcyBjbGFyaWZpY2F0aW9uOiBIb3VzZSBsb2FkIGFy b3VuZCBub29uIGlzIHJlZnJpZ2VyYXRvciwgbGlnaHRpbmcsIHNtYWxsCmFwcGxpYW5jZXMgKyBz dG9yZWQgaG90LXdhdGVyIGhlYXRpbmcgdW5kZXIgdGhlcm1vc3RhdCBjb250cm9sLiBJdCBpcwpk ZXNpcmVkIHRvIHByZXZlbnQgdGhlIGhvdCB3YXRlciBoZWF0aW5nIGxvYWQgY2F1c2luZyB0aGUg aG91c2UgdG8gZHJhdwpncmlkIGVuZXJneSBhdCB0aGlzIHBlcmlvZC4gVG8gZG8gdGhpcyB0aGUg UFYgKyBiYXR0ZXJ5IHRvIEFDIG91dHB1dCBtdXN0CmJlICJpc2xhbmRlZCIgdG8gYWxsb3cgdGhl bSB0byBzdXBwbHkgcmVmcmlnZXJhdG9yIGFuZCBsaWdodGluZyBhbmQgc21hbGwKYXBwbGlhbmNl cywgYW5kIHRoZSBob3Qgd2F0ZXIgaGVhdGVyIG11c3QgYm90aCBOT1QgYmUgb24gdGhlIHNhbWUg bG9jYWwKaXNsYW5kZWQgY2lyY3VpdCBhbmQgYWxzbyBhYmxlIHRvIGJlIGRpc2FibGVkIGZyb20g YmVpbmcgZ3JpZCBwb3dlcmVkLiBUaGlzCmlzIGVhc2lseSBlbm91Z2ggZG9hYmxlIGJ1dCBub3Qg dXNpbmcgYW55IG1ldGhvZCB0aGF0IHRoZXkgaGF2ZSBzbyBmYXIKZGVzY3JpYmVkLiAoQXNrIG1l IGhvdyBJIGtub3cgOi0pICkuCgrigItfX19fX19fX19fX19fX19fX18KClN1bW1hcnk6CgpQcm9i YWJseSBteSBsYXN0IGVmZm9ydCBvbiB0aGlzIGFzIEkndmUgc2FpZCB3aGF0IEkgbWVhbnQgdG8g c2F5IGFuZCBzYXlpbmcKbW9yZSB3b3VsZCBiZSByZXJlc2F5aW5nIGl0LgoKSSBoYXZlIG5vIGlz c3VlcyByZSB0aGUgYWJpbGl0eSB0byBwcm92aWRlICdtaWNyb2dyaWQnIHBvd2VyIGZyb20gc29h ciBhbmQKYmF0dGVyeSBzdG9yZXMgaW4gY29uanVuY3Rpb24gd3RoIGdyaWQgQUMgY29ubmVjdGlv bi4KCkkgZG8gaGF2ZSAiaXNzdWVzIiB3aXRoIHRoaXMgc3BlY2lmaWMgcHJvamVjdCBhcyByZWdh cmRzIHZhcmlvdXMgY2xhaW1zLAp0ZWNobmljYWwgbWV0aG9kcyBwcm9wb3NlZCwgbGFjayBvZiBw cm9wb3NlZCB0ZWNobmljYWwgbWV0aG9kcyB0byBtZWV0IHNvbWUKY2xhaW1zLCBsaWtlbHkgYmF0 dGVyeSBsaWZlLCBpbnRyb2R1Y3Rpb24gb2YgbmVjZXNzYXJ5IGV4dHJhIHN0dWZmCmluY3JlbWVu dGFsbHkgdG8gbWVldCBjbGFpbXMgd2hpbGUgdmlvbGF0aW5nICJqdXN0IHBsdWcgaXQgaW4iIGNs YWltcywgYW5kCm1vcmUuCgoK4oCLICAgICAgIFJ1c3NlbGwKCgoKUFM6IEkgYW0gZ3JhdGlmaWVk IHRvIGhlYXIgdGhhdCB0aGUgd29ybGQgcmVndWxhdG9yeSBib2RpZXMgYXJlIHdvcmtpbmcgdG8K Z3JlYXRseSByZWxheCBjZXJ0YWluIGluY29udmVuaWVudCBzYWZldHkgcHJvdmlzaW9ucyBhZnRl ciB5ZWFycyBvZgpjb25zaXN0ZW50bHkgbWFraW5nIHRoaW5ncyBoYXJkZXIgYW5kIHRpZ2h0ZXIg aW4gdGhpcyBhbmQgb3RoZXIgYXJlYXMgOi0pLgoKCuKAi+KAiwo+Cmh0dHBzOi8vd3d3LmtpY2tz dGFydGVyLmNvbS9wcm9qZWN0cy9lcmljY2xpZnRvbi9vcmlzb24tcmV0aGluay10aGUtcG93ZXIt b2YtZW5lcmd5P3V0bV9zb3VyY2U9d2Vic2l0ZSZ1dG1fbWVkaXVtPWJ1dHRvbiZ1dG1fY2FtcGFp Z249b3JnYW5pYwo+Cj4g4oCLICAgICAgICAgICDigIsKPiBodHRwOi8vb3Jpc29uLmVuZXJneS8g PGh0dHA6Ly9vcmlzb24uZW5lcmd5Lz4KLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJl Zi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1i ZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZv L3BpY2xpc3QK .