T24gV2VkLCBEZWMgMjksIDIwMTAgYXQgMTA6NDA6NDdBTSAtMDUwMCwgT2xpbiBMYXRocm9wIHdy b3RlOgo+IFBFVEVSIE9OSU9OIHdyb3RlOgo+ID4+ICBXb3JzZSwgd2hhdCBJICB3cm90ZSBhYm92 ZSB3b3VsZCBub3QgYmUKPiA+PiBpbnRlcnByZXRlZCBhcyBpbnRlbmRlZCwgYnV0IHdvdWxkIGJl IHBlcmZlY3RseSAgbGVnYWwgYW5kIG5vdAo+ID4+IGdlbmVyYXRlIGFueSBjb21waWxlIGVycm9y Lgo+ID4KPiA+IEluZGVlZCwgYnV0IHdobydzIGZhdWx0IGlzIHRoYXQgPyAgWW91IHdyb3RlIHZh bGlkIEMgYW5kIHRoYXQncwo+ID4gcmVhbGx5IGFsbCB0aGUgY29tcGlsZXIgY2FuIGNoZWNrIGZv ci4gIElmIHlvdXIgQyBjb2RlIGRvZXNuJ3QKPiA+IGRvIHdoYXQgeW91IGV4cGVjdGVkIGl0IHRv IGRvIHRoZW4gaXQncyBiZWNhdXNlIHlvdSBkb24ndCB1bmRlcnN0YW5kCj4gPiB0aGUgQyBzeW50 YXggYW5kIHRoYXQncyBub3QgdGhlIGNvbXBpbGVyJ3MgZmF1bHQgISA7LSkKPiAKPiBJdCdzIG5v dCBhYm91dCAiZmF1bHQiLCBhbmQgaW4gYW55IGNhc2UgaXQgY2FuJ3QgYmUgdGhlIGNvbXBpbGVy J3Mgc2luY2UKPiBpdCdzIGp1c3QgZm9sbG93aW5nIHRoZSBydWxlcyBvZiB0aGUgbGFuZ3VhZ2Uu ICBPZiBjb3Vyc2UgaXQncyBvbiB0aGUKPiBwcm9ncmFtbWVyIHRvIGtub3cgdGhlIHN5bnRheCBv ZiB0aGUgbGFuZ3VhZ2UsIGJ1dCB0aGVyZSBpcyBhbHNvIGdvb2QgYW5kCj4gYmFkIHN5bnRheCBk ZXNpZ24uCgpBZ3JlZWQuIEFtYmlndW91cyBzeW50YXggY3JlYXRlcyBhbiBlbnZpcm9ubWVudCBm b3IgdGhlIGNyZWF0aW9uIG9mIGJ1Z3MuCkJ1dCB3aGVuIHlvdSBoYWQgbWFjaGluZXMgdGhhdCBj b3N0IGluIHRoZSBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgZG9sbGFycwphbmQgaGFkIGxlc3Mg UkFNIGFuZCBkaXNrIHRoYW4gZXZlbiBhIHNpbmdsZSBQSUMgZG9lcyB0b2RheSwgaXQncyBzb21l d2hhdAp1bmRlcnN0YW5kYWJsZSBhcyB0byB3aHkgdGhleSBtYWRlIHRoZSBjaG9pY2VzIHRoYXQg dGhleSBtYWRlIGF0IHRoZSB0aW1lLgoKPiAKPiBJbiB0aGlzIGNhc2UgdGhlIHN5bnRheCBhbGxv d3MgYSBlYXNpbHkgbWFkZSBlcnJvciB0byBzdGlsbCByZXN1bHQgaW4gbGVnYWwKPiBjb2RlIGJ1 dCB0byBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgaW50ZW5kZWQuICBQcm9ncmFtbWVycyB3aWxsIGFs d2F5cyBjb21lIHVwCj4gd2l0aCBtb3JlIGNsZXZlciBlcnJvcnMgdGhhbiBhIGxhbmd1YWdlIGRl c2lnbmVyIGNhbiBhbmQgc2hvdWxkIGFjY291bnQgZm9yLAo+IGJ1dCBhIG1lYXN1cmUgb2YgZ29v ZCBsYW5ndWFnZSBkZXNpZ24gaXMgaG93IG11Y2ggY29tbW9uIGFuZAo+IHNob3VsZC1iZS1hbnRp Y2lwYXRlZCBlcnJvcnMgZ2V0IGNhdWdodCBhcyBpbGxlZ2FsIHN5bnRheC4gIEEgZ3JlYXQgZXhh bXBsZQo+IGlzIHRoZSByZWFsbHkgaXJyZXNwb25zaWJsZSBDLWlzbSAiaWYgKGk9MSkuLi4iLiAg V2hpbGUgdGhlIGVycm9yIGlzCj4gdGVjaG5pY2FsbHkgdGhlIHByb2dyYW1tZXJzLCB0aGUgc3lu dGF4IHJ1bGVzIGFyZSBqdXN0IGFza2luZyBmb3IgaHVtYW5zIHRvCj4gbWFrZSB0aGF0IG1pc3Rh a2UuCgpXaGljaCBpcyB3aHkgbW9zdCBjb21waWxlcnMgd2lsbCBhdCBsZWFzdCBnZW5lcmF0ZSBh IHdhcm5pbmcgYW5kIGFzayB0aGF0CnlvdSBkb3VibGUgcGFyZW4gdGhhdCBhc3NpZ25tZW50IGlm IHlvdSByZWFsbHkgd2FudCBpdC4KCj4gCj4gSW4gdGhlc2UgdHdvIGNhc2VzIGF0IGxlYXN0LCBQ YXNjYWwgZ2V0cyBpdCBhIGxvdCBtb3JlIHJpZ2h0IHRoYW4gQy4gIEluCj4gUGFzY2FsOgo+IAo+ ICAgaWYgb3V0ZXJfY29uZGl0aW9uIHRoZW4KPiAgICAgICBpZiBpbm5lcl9jb25kaXRpb24gdGhl biBjb3VudCA6PSAxOwo+ICAgICBlbHNlCj4gICAgICAgLi4uCj4gCj4gV291bGQgZ2VuZXJhdGUg YSBzeW50YXggZXJyb3IgYmVjYXVzZSB0aGUgIjsiIGVuZHMgdGhlIElGIHN0YXRlbWVudCBhbmQg RUxTRQo+IHRoZXJlZm9yZSBpcyBub3QgdmFsaWQgdGhlcmUuCj4gCj4gSW4gdGhlIHNlY29uZCBj YXNlLCB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBpcyAiOj0iIHdoZXJlYXMgIj0iIGlzIGEKPiBz dGF0ZW1lbnQgb2YgZXF1YWxpdHk6Cj4gCj4gICBpZiBpID0gMSB0aGVuIC4uLgo+IAo+IGRvZXMg ZXhhY3RseSB3aGF0IG1vc3QgcGVvcGxlIHJlYWRpbmcgaXQgd291bGQgdGhpbmsuICBJZiB5b3Ug YWN0dWFsbHkgd3JvdGUKPiAKPiAgIGlmIGkgOj0gMSB0aGVuIC4uLgo+IAo+IHRoZW4geW91J2Qg Z2V0IGEgY29tcGlsZSBlcnJvciBzaW5jZSBhIGFzc2lnbm1lbnQgc3RhdGVtZW50IGlzbid0IGFs bG93ZWQgYXMKPiB0aGUgY29uZGl0aW9uIGV4cHJlc3Npb24gb2YgYSBJRiBzdGF0ZW1lbnQuCgpJ IGtpbmQgb2YgbGlrZSBDJ3MgYWJpbGl0eSB0byB1c2UgYXNzaWdubWVudCBhcyBhbiBleHByZXNz aW9uLiBBZ2FpbiBpdApkb2VzIGZhY2lsaXRhdGUgYSBjb21wYWN0bmVzcyBvZiBleHByZXNzaW9u IHRoYXQgb3RoZXIgbGFuZ3VhZ2VzIGRvIG5vdApoYXZlIHRoZSBhYmlsaXR5IHRvIGFjY29tcGxp c2guIFRoZSBwcm9ibGVtIGlzIGhhdmluZyBhIHdheSB0byBkaXNhbWJpZ3VhdGUKYXNzaWdubWVu dCBmcm9tIGNvbXBhcmlzb24gd2hlbiBib3RoIGFyZSBsZWdhbC4gSSBmaW5kIHRoZSB3YXJuaW5n IGFuZCB0aGUKZG91YmxlIHBhcmVucyBzdWZmaWNpZW50LiBGb3IgZXhhbXBsZSB0aGlzIGNvZGUg d2l0aCB0aGUgR0NDIGNvbXBpbGVyOgoKI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpCnsK ICAgaW50IGk7CgogICBpZiAoaT0xKSB7CiAgICAgIHByaW50ZigidHJ1ZVxuIik7CiAgIH0KICAg cmV0dXJuIDA7Cn0KCldoaWxlIHBlcmZlY3RseSBsZWdhbCwgd2lsbCBnZW5lcmF0ZSB0aGUgZm9s bG93aW5nIHdhcm5pbmcgaWYgdGhlIGFsbAp3YXJuaW5ncyBmbGFnIGlzIG9uOgoKZHAuYzogSW4g ZnVuY3Rpb24g4oCYbWFpbuKAmToKZHAuYzo3OiB3YXJuaW5nOiBzdWdnZXN0IHBhcmVudGhlc2Vz IGFyb3VuZCBhc3NpZ25tZW50IHVzZWQgYXMgdHJ1dGggdmFsdWUKCkFuZCBpZiB5b3UgdXNlIHRo ZSBkb3VibGUgcGFyZW5zIGFzIHN1Y2g6CgojaW5jbHVkZSA8c3RkaW8uaD4KCmludCBtYWluKCkK ewogICBpbnQgaTsKCiAgIGlmICgoaT0xKSkgewogICAgICBwcmludGYoInRydWVcbiIpOwogICB9 CiAgIHJldHVybiAwOwp9CgpUaGUgd2FybmluZyBkaXNhcHBlYXJzLiBJdCdzIG5vdCBhIHBlcmZl Y3Qgc29sdXRpb24sIGJ1dCBzb21ldGltZXMgdG8gZ2FpbgpmbGV4aWJpbGl0eSBhbmQgY3JlYXRp dml0eSwgdGhlcmUgaGFzIHRvIGJlIGEgbWlkZGxlIGdyb3VuZC4KCj4gCj4gTGFuZ3VhZ2UgZGVz aWduICpkb2VzKiBtYXR0ZXIuICBVbmZvcnR1bmF0ZWx5IEMgaXMgYmFkbHkgZGVzaWduZWQgYnV0 IHNvCj4gbWFueSBwZW9wbGUgaGF2ZSBnb3R0ZW4gdXNlZCB0byBpdCB0aGV5IGhhdmUgYmVjb21l IGJsaW5kIHRvIHRoZSBwcm9ibGVtcy4KCkl0IGNlcnRhaW5seSBoYXMgaXRzIGlzc3Vlcy4gQnV0 IEkgZGlzYWdyZWUgYWJvdXQgcHJvZ3JhbW1lcnMgYmVpbmcgYmxpbmQKdG8gdGhlbS4gSSB0aGlu ayB0aGV5IGxpa2UgdGhlIGJlbmVmaXRzIG9mIHNvbWUgb2YgdGhlc2UgY29uc3RydWN0cyBhbmQg c28KYXJlIHdpbGxpbmcgdG8gbGl2ZSB3aXRoIHRoZSBjb25zZXF1ZW5jZXMuCgpCVFcgeW91IGRp ZG4ndCBldmVuIGdldCB0byB0aGUgb25lIHRoYXQganVzdCBzdGlja3MgaW4gbXkgY3JhdzoKClRo ZSBkZWZhdWx0IGRyb3AgdGhyb3VnaCBhY3Rpb24gb2YgY2FzZXMgaW4gdGhlIHN3aXRjaCBzdGF0 ZW1lbnQuCgpUYWxrIGFib3V0IGRyaXZpbmcgbWUgY3JhenkuIFRoZSByZWFsIHNjcmV3dXAgaXMg YnkgY2hvb3NpbmcgdGhlIHdyb25nCmRlZmF1bHQgYWN0aW9uLCB2aXJ0dWFsbHkgZXZlcnkgc3dp Y2ggZ2VuZXJhdGVzIG1vcmUgc291cmNlIGNvZGUgdGhhbiBpZgp0aGV5IGhhZCBzZWxlY3RlZCB3 aGF0IGV2ZXJ5b25lIGV4cGVjdHMgYW5kIHVzZXMgdGhlIHZhc3QgbWFqb3JpdHkgb2YgdGhlCnRp bWUuIEEgc3dpdGNoIGlzIGEgc2VsZWN0b3I6CgpjaG9pY2UgPSAxOwpzd2l0Y2ggKGNob2ljZSkg ewogICBjYXNlIDE6IHByaW50ZigiMSB3YXMgcGlja2VkXG4iKTsKICAgY2FzZSAyOiBwcmludGYo IjIgd2FzIHBpY2tlZFxuIik7CiAgIGNhc2UgMzogcHJpbnRmKCIzIHdhcyBwaWNrZWRcbiIpOwog ICBkZWZhdWx0OiBwcmludGYoIm90aGVyIHdhcyBwaWNrZWRcbiIpOwp9CgpOb3cgYXMgYSBzZWxl Y3Rvciwgc2luY2UgMSB3YXMgc2VsZWN0ZWQsIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gdG8gZXhl Y3V0ZQpjb2RlIGZvciB0aGUgb3RoZXIgY2hvaWNlcy4gU28gdGhlIGRlZmF1bHQgc2hvdWxkIGJl IHRoYXQgd2hlbiB5b3UgZXhlY3V0ZQp0aGUgY29kZSBmb3IgYSBjYXNlLCB3aGVuIHlvdSByZWFj aCB0aGUgZW5kIG9mIHRoYXQgY2FzZSwgdGhlbiB5b3UgbGVhdmUKdGhlIGNvbnN0cnVjdC4gVGhl IGNvZGUgYWJvdmUgc2hvdWxkIHByaW50IAoKMSB3YXMgcGlja2VkIAoKYW5kIGxlYXZlLgoKQnV0 IGluIGEgYmFmZmxpbmcgY2hvaWNlLCBkcm9wIHRocm91Z2ggd2FzIHNlbGVjdGVkIGFzIHRoZSBk ZWZhdWx0LiBTbyB0aGlzCmNvZGUgYWN0dWFsbHkgcHJpbnRzOgoKMSB3YXMgcGlja2VkIAoyIHdh cyBwaWNrZWQgCjMgd2FzIHBpY2tlZCAKb3RoZXIgd2FzIHBpY2tlZCAKCndoaWNoIGlzIHRvdGFs bHkgYXNzLWJhY2t3YXJkcyBzaW5jZSB0aGUgcG9pbnQgb2YgdGhlIGNvbnN0cnVjdCBpcyB0bwpz ZWxlY3QgYW4gb3B0aW9uLCB3aGljaCBwcmVzdW1lcyBtdXR1YWwgZXhjbHVzaW9uIHRvIHRoZSBv dGhlciBvcHRpb25zLgoKTm93IG9mIGNvdXJzZSB0aGUgYmVoYXZpb3IgY2FuIGJlIHNob3J0IGNp cmN1aXRlZCB3aXRoIHRoZSB1c2Ugb2YgYSBicmVhawpzdGF0ZW1lbnQ6CgoKY2hvaWNlID0gMTsK c3dpdGNoIChjaG9pY2UpIHsKICAgY2FzZSAxOiBwcmludGYoIjEgd2FzIHBpY2tlZFxuIik7CiAg ICAgICAgICAgYnJlYWs7CiAgIGNhc2UgMjogcHJpbnRmKCIyIHdhcyBwaWNrZWRcbiIpOwogICAg ICAgICAgIGJyZWFrOwogICBjYXNlIDM6IHByaW50ZigiMyB3YXMgcGlja2VkXG4iKTsKICAgICAg ICAgICBicmVhazsKICAgZGVmYXVsdDogcHJpbnRmKCJvdGhlciB3YXMgcGlja2VkXG4iKTsKICAg ICAgICAgICBicmVhazsgLy8gVW5uZWNjZXNzYXJ5IGJ1dCBvZnRlbiBwdXQgaW4gZm9yIGNvbnNp c3RlbmN5Lgp9CgpCdXQgdG8gbWUgdGhpcyBkZWZlYXRzIHRoZSBwdXJwb3NlIG9mIGNvbXBhY3Ru ZXNzIG9mIGV4cHJlc3Npb24uIEl0J3MKY29tcGxldGVseSBjb3VudGVyaW50dWl0aXZlLiBUaGUg b3JpZ2luYWwgY29uc3RydWN0IGFib3ZlIHNob3VsZCBoYXZlIHRoZQpkZWZhdWx0IGJlaGF2aW9y IG9mIHJ1bm5pbmcgdGhlIGNvZGUgZm9yIGEgc2luZ2xlIGNhc2UsIHRoZW4gbGVhdmluZy4gVGhl bgp0aGUgdmFzdCBtYWpvcml0eSBvZiB0aGUgY29kZSB3aWxsIGJlIHNtYWxsZXIgYW5kIG1ha2Ug YSBsb3QgbW9yZSBzaW5jZS4gCgpUaGUgb25seSBhcmd1bWVudCB0aGF0IGhvbGRzIHdhdGVyIGlz IHRoYXQgc2luY2UgcmFuZ2VzIGFyZSBub3QgYWxsb3dlZCwKdGhlIGRlZmF1bHQgZmFsbCB0aHJv dWdoIGFsbG93cyBtdWx0aXBsZSBjYXNlcyB0byBzaGFyZSB0aGUgc2FtZSBjb2RlOgoKY2hvaWNl ID0gMTsKc3dpdGNoIChjaG9pY2UpIHsKICAgY2FzZSAxOiAKICAgY2FzZSAyOiAKICAgY2FzZSAz OiBwcmludGYoIjEsMiwgb3IgMyB3YXMgcGlja2VkXG4iKTsKICAgICAgICAgICBicmVhazsKICAg ZGVmYXVsdDogcHJpbnRmKCJvdGhlciB3YXMgcGlja2VkXG4iKTsKICAgICAgICAgICBicmVhazsg Ly8gVW5uZWNjZXNzYXJ5IGJ1dCBvZnRlbiBwdXQgaW4gZm9yIGNvbnNpc3RlbmN5Lgp9CgpCdXQg dG8gbWFrZSBpdCB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdGhhdCByZWFzb24gc2VlbXMgc2ls bHkgdG8gbWUuCgpCVFcgSSB3b3VsZCBhbGxvdyBmb3IgZmFsbHRocm91Z2gsIGJ1dCBzaW1wbHkg bm90IG1ha2UgaXQgdGhlIGRlZmF1bHQuIEl0CndvdWxkIGhhdmUgYmVlbiBzaW1wbGUgdG8gaGF2 ZSBmYWxsdGhyb3VnaCBvY2N1ciB3aXRoIHRoZSB1c2Ugb2YgdGhlCmNvbnRpbnVlIHN0YXRlbWVu dC4gSW4gbXkgdmlldyB0aGUgbGFzdCBzbmlwcGV0IHNob3VsZCBiZSB3cml0dGVuIGFzOgoKCmNo b2ljZSA9IDE7CnN3aXRjaCAoY2hvaWNlKSB7CiAgIGNhc2UgMTogY29udGludWU7CiAgIGNhc2Ug MjogY29udGludWU7CiAgIGNhc2UgMzogcHJpbnRmKCIxLDIsIG9yIDMgd2FzIHBpY2tlZFxuIik7 CiAgICAgICAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6IHByaW50Zigib3RoZXIgd2FzIHBpY2tlZFxu Iik7CiAgICAgICAgICAgYnJlYWs7IC8vIFVubmVjY2Vzc2FyeSBidXQgb2Z0ZW4gcHV0IGluIGZv ciBjb25zaXN0ZW5jeS4KfQoKQ291cGxlIHRoYXQgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvciBv ZiBleGVjdXRlIG9uZSBjYXNlIHRoZW4gbGVhdmUKKHVubGVzcyBhIGNvbnRpbnVlIGlzIGF0IHRo ZSBlbmQgb2YgdGhlIGNhc2UpIGFuZCBJJ2QgYmUgYSBtdWNoIGhhcHBpZXIKY2FtcGVyLgoKSXQg d2FzIGEgcG9vciwgcG9vciBjaG9pY2UuIEl0J3MgbmVjayBhbmQgbmVjayB3aXRoIHRoZSBkaWZm ZXJlbmNlcyBiZXR3ZWVuCmFycmF5IGFuZCBzdHJ1Y3R1cmUgYmVoYXZpb3IgYXMgdGhlIHdvcnN0 IGRlc2lnbiBjaG9pY2VzIElNSE8uCgpCQUoKCi0tIApCeXJvbiBBLiBKZWZmCkRlcGFydG1lbnQg Q2hhaXI6IElUL0NTL0NORVQKQ29sbGVnZSBvZiBJbmZvcm1hdGlvbiBhbmQgTWF0aGVtYXRpY2Fs IFNjaWVuY2VzCkNsYXl0b24gU3RhdGUgVW5pdmVyc2l0eQpodHRwOi8vY2ltcy5jbGF5dG9uLmVk dS9iamVmZgotLSAKaHR0cDovL3d3dy5waWNsaXN0LmNvbSBQSUMvU1ggRkFRICYgbGlzdCBhcmNo aXZlClZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFu Lm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cg== .