ClNsaWNlQ09NIGFkYXB0ZXIgdXNlcidzIGRvY3VtZW50YXRpb24gLSBmb3IgdGhlIDAuNTEgZHJpdmVyIHZlcnNpb24KCldyaXR0ZW4gYnkgQmFydPNrIElzdHbhbiA8YmFydG9raUBpdGMuaHU+CgpFbmdsaXNoIHRyYW5zbGF0aW9uOiBMYWthdG9zIEd59nJneSA8Z3l1cmlAaXRjLmh1PgpNb24gRGVjIDExIDE1OjI4OjQyIENFVCAyMDAwCgpMYXN0IG1vZGlmaWVkOiBXZWQgQXVnIDI5IDE3OjI1OjM3IENFU1QgMjAwMQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClVzYWdlOgoKQ29tcGlsaW5nIHRoZSBrZXJuZWw6CgpDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKCVsqXSBQcm9tcHQgZm9yIGRldmVsb3BtZW50IGFuZC9vciBpbmNvbXBsZXRlIGNvZGUvZHJpdmVycwoKTmV0d29yayBkZXZpY2Ugc3VwcG9ydAoJV2FuIGludGVyZmFjZXMKCQk8TT4gTXVsdGlHYXRlIChDT01YKSBzeW5jaHJvbm91cwoJCQk8TT4gU3VwcG9ydCBmb3IgTVVOSUNIIGJhc2VkIGJvYXJkczogU2xpY2VDT00sIFBDSUNPTSAoTkVXKQoJCQk8TT4gU3VwcG9ydCBmb3IgSERMQyBhbmQgc3luY1BQUC4uLgoKCkxvYWRpbmcgdGhlIG1vZHVsZXM6Cgptb2Rwcm9iZSBjb214Cgptb2Rwcm9iZSBjb214LXByb3RvLXBwcAkJIyBtb2R1bGUgZm9yICBDaXNjby1IRExDIGFuZCBTeW5jUFBQIHByb3RvY29scwoKbW9kcHJvYmUgY29teC1ody1tdW5pY2gJCSMgdGhlIG1vZHVsZSBsb2dzIGluZm9ybWF0aW9uIGJ5IHRoZSBrZXJuZWwKCQkJCSMgYWJvdXQgdGhlIGRldGVjdGVkIGJvYXJkcwoKCkNvbmZpZ3VyaW5nIHRoZSBib2FyZDoKCiMgVGhpcyBpbnRlcmZhY2Ugd2lsbCB1c2UgdGhlIENpc2NvLUhETEMgbGluZSBwcm90b2NvbCwKIyB0aGUgdGltZXNsaWNlcyBhc3NpZ25lZCBhcmUgMSwyICgxMjggS2lCaXQgbGluZSBzcGVlZCkKIyAodGhlIGZpcnN0IGRhdGEgdGltZXNsaWNlIGluIHRoZSBHLjcwMyBmcmFtZSBpcyBuby4gMSkKIwpta2RpciAvcHJvYy9jb214L2NvbXgwLjEvCmVjaG8gc2xpY2Vjb20JPi9wcm9jL2NvbXgvY29teDAuMS9ib2FyZHR5cGUKZWNobyBoZGxjCT4vcHJvYy9jb214L2NvbXgwLjEvcHJvdG9jb2wKZWNobyAxIDIJPi9wcm9jL2NvbXgvY29teDAuMS90aW1lc2xvdHMKCgojIFRoaXMgaW50ZXJmYWNlIHVzZXMgU3luY1BQUCBsaW5lIHByb3RvY29sLCB0aGUgYXNzaWduZWQgCiMgaXMgbm8uIDMgKDY0IEtpQml0IGxpbmUgc3BlZWQpCiMKbWtkaXIgL3Byb2MvY29teC9jb214MC4yLwplY2hvIHNsaWNlY29tCT4vcHJvYy9jb214L2NvbXgwLjIvYm9hcmR0eXBlCmVjaG8gcHBwCT4vcHJvYy9jb214L2NvbXgwLjIvcHJvdG9jb2wKZWNobyAzCQk+L3Byb2MvY29teC9jb214MC4yL3RpbWVzbG90cwoKLi4uCgppZmNvbmZpZyBjb214MC4xIHVwCmlmY29uZmlnIGNvbXgwLjIgdXAKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgQ09NWCBpbnRlcmZhY2VzIHVzZSBhIDEwIHBhY2tldCB0cmFuc21pdCBxdWV1ZSBieSBkZWZhdWx0LCBob3dldmVyIFdBTgpuZXR3b3JrcyBzb21ldGltZXMgdXNlIGJpZ2dlciB2YWx1ZXMgKDIwIHRvIDEwMCksIHRvIHV0aWxpemUgdGhlIGxpbmUgYmV0dGVyCmJ5IGxhcmdlIHRyYWZmaWMgKHRob3VnaCB0aGUgbGluZSBkZWxheSBpbmNyZWFzZXMgYmVjYXVzZSBvZiBtb3JlIHBhY2tldHMKam9pbiB0aGUgcXVldWUpLgoKIyBpZmNvbmZpZyBjb214MCB0eHF1ZXVlbGVuIDUwCgpUaGlzIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBieSB0aGUgaWZjb25maWcgY29tbWFuZCBvZiB0aGUgbGF0ZXIgCmRpc3RyaWJ1dGlvbnMsIHdoaWNoIGNhbWUgd2l0aCAyLjIga2VybmVscywgc3VjaCBhcyBSZWRIYXQgNi4xIG9yIERlYmlhbiAyLjIuCgpZb3UgY2FuIGRvd25sb2FkIGEgbmV3ZXIgbmV0YmFzZSBwYWNrZXQgZnJvbSAKaHR0cDovL3d3dy5kZWJpYW4ub3JnL35yY3cvMi4yL25ldGJhc2UvIGZvciBEZWJpYW4gMi4xLCB3aGljaCBoYXMgYSBuZXcKaWZjb25maWcuIFlvdSBjYW4gZ2V0IGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgMi4yIGtlcm5lbCB3aXRoCkRlYmlhbiAyLjEgZnJvbSBodHRwOi8vd3d3LmRlYmlhbi5vcmcvcmVsZWFzZXMvc3RhYmxlL3J1bm5pbmcta2VybmVsLTIuMgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBTbGljZUNvbSBMRURzOgoKcmVkCS0gb24sIGlmIHRoZSBpbnRlcmZhY2UgaXMgdW5jb25maWd1cmVkLCBvciBpdCBnZXRzIFJlbW90ZSBBbGFybS1zCmdyZWVuCS0gb24sIGlmIHRoZSBib2FyZCBmaW5kcyBmcmFtZS1zeW5jIGluIHRoZSByZWNlaXZlZCBzaWduYWwgCQoKQSBiaXQgbW9yZSBkZXRhaWxlZDoKCnJlZDoJZ3JlZW46CW1lYW5pbmc6CgotCS0Jbm8gZnJhbWUtc3luYywgbm8gc2lnbmFsIHJlY2VpdmVkLCBvciBzaWduYWwgU05BRlUuCi0Jb24JIkV2ZXJ5dGhpbmcgaXMgT0siCm9uCW9uCVJlY2VwaW9uIGlzIG9rLCBidXQgdGhlIHJlbW90ZSBlbmQgc2VuZHMgUmVtb3RlIEFsYXJtCm9uCS0JVGhlIGludGVyZmFjZSBpcyB1bmNvbmZpZ3VyZWQKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGhhcmR3YXJlIHNldHRpbmcgb3B0aW9uczoKClRoZSBnZW5lcmFsIGFuZCB0aGUgcHJvdG9jb2wgbGF5ZXIgb3B0aW9ucyBkZXNjcmliZWQgaW4gdGhlICdjb214LnR4dCcgZmlsZQphcHBseSB0byB0aGUgU2xpY2VDb20gYXMgd2VsbCwgSSBvbmx5IHN1bW1hcml6ZSB0aGUgU2xpY2VDb20gaGFyZHdhcmUgc3BlY2lmaWMKc2V0dGluZ3MgYmVsb3cuCgpUaGUgJy9wcm9jL2NvbXgnIGNvbmZpZ3VyaW5nIGludGVyZmFjZToKCkFuIGludGVyZmFjZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIGNyZWF0ZWQgZm9yIGV2ZXJ5IHRpbWVzbG90IGdyb3VwIHdpdGgKJ21rZGlyJywgZSxnOiAnY29teDAnLCAnY29teDEnIGV0Yy4gVGhlIHRpbWVzbG90cyBjYW4gYmUgYXNzaWduZWQgaGVyZSB0byB0aGUKc3BlY2lmaWMgaW50ZXJmYWNlLiBUaGUgQ2lzY28tbGlrZSBuYW1pbmcgY29udmVudGlvbiAoc2VyaWFsMzoxIC0gZmlyc3QKdGltZXNsb3QgZ3JvdXAgb2YgdGhlIDNyZC4gYm9hcmQpIGNhbid0IGJlIHVzZWQgaGVyZSwgYmVjYXVzZSB0aGVzZSBtZWFuIElQCmFsaWFzaW5nIGluIExpbnV4LgoKWW91IGNhbiBnaXZlIGFueSBtZWFuaW5nZnVsIG5hbWUgdG8ga2VlcCB0aGUgY29uZmlndXJhdGlvbiBjbGVhcjsgCmUuZzogJ2NvbXgwLjEnLCAnY29teDAuMicsICdjb214MS4xJywgY29teDEuMicsIGlmIHlvdSBoYXZlIHR3byBib2FyZHMKd2l0aCB0d28gaW50ZXJmYWNlcyBlYWNoLgoKU2V0dGluZ3MsIHdoaWNoIGFwcGx5IHRvIHRoZSBib2FyZDoKCk5laXRoZXIgJ2lvJyBub3IgJ2lycScgc2V0dGluZ3MgcmVxdWlyZWQsIHRoZSBkcml2ZXIgdXNlcyB0aGUgcmVzb3VyY2VzCmdpdmVuIGJ5IHRoZSBQQ0kgQklPUy4KCmNvbXgwL2JvYXJkbnVtCS0gYm9hcmQgbnVtYmVyIG9mIHRoZSBTbGljZUNvbSBpbiB0aGUgUEMgKHVzaW5nIHRoZSAnbmF0dXJhbCcKCQlQQ0kgb3JkZXIpIGFzIGxpc3RlZCBpbiAnL3Byb2MvcGNpJyBvciB0aGUgb3V0cHV0IG9mIHRoZQoJIAknbHNwY2knIGNvbW1hbmQsIGdlbmVyYWxseSB0aGUgc2xvdHMgbmVhcmVyIHRvIHRoZSBtb3RoZXJib2FyZAoJCVBDSSBkcml2ZXIgY2hpcHMgaGF2ZSB0aGUgbG93ZXIgbnVtYmVycy4KCQkKCQlEZWZhdWx0OiAwICh0aGUgY291bnRpbmcgc3RhcnRzIHdpdGggMCkKClRob3VnaCB0aGUgb3B0aW9ucyBiZWxvdyBhcmUgdG8gYmUgc2V0IG9uIGEgc2luZ2xlIGludGVyZmFjZSwgdGhleSBhcHBseSB0byB0aGUKd2hvbGUgYm9hcmQuIFRoZSByZXN0cmljdGlvbiwgdG8gdXNlIHRoZW0gb24gJ1VQJyBpbnRlcmZhY2VzLCBpcyBiZWNhdXNlIHRoZSAKY29tbWFuZCBzZXF1ZW5jZSBiZWxvdyBjb3VsZCBsZWFkIHRvIHVucHJlZGljYWJsZSByZXN1bHRzLgoKCSMgZWNobyAwICAgICAgICA+Ym9hcmRudW0KCSMgZWNobyBpbnRlcm5hbCA+Y2xvY2tfc291cmNlCgkjIGVjaG8gMSAgICAgICAgPmJvYXJkbnVtCgpUaGUgc2VxdWVuY2Ugd291bGQgc2V0IHRoZSBjbG9jayBzb3VyY2Ugb2YgYm9hcmQgMC4KClRoZXNlIHNldHRpbmdzIHdpbGwgcGVyc2lzdCBhZnRlciBhbGwgdGhlIGludGVyZmFjZXMgYXJlIGNsZWFyZWQsIGJ1dCBhcmUKY2xlYXJlZCB3aGVuIHRoZSBkcml2ZXIgbW9kdWxlIGlzIHVubG9hZGVkIGFuZCBsb2FkZWQgYWdhaW4uCgpjb214MC9jbG9ja19zb3VyY2UgLSBzb3VyY2Ugb2YgdGhlIHRyYW5zbWl0IGNsb2NrCglVc2FnZToKCgkjIGVjaG8gbGluZSAgICAgPi9wcm9jL2NvbXgvY29teDAvY2xvY2tfc291cmNlCgkjIGVjaG8gaW50ZXJuYWwgPi9wcm9jL2NvbXgvY29teDAvY2xvY2tfc291cmNlCgoJbGluZQktIFRoZSBUeCBjbG9jayBpcyBiZWluZyBkZWNvZGVkIGlmIHRoZSBpbnB1dCBkYXRhIHN0cmVhbSwKCQlpZiBubyBjbG9jayBzZWVuIG9uIHRoZSBpbnB1dCwgdGhlbiB0aGUgYm9hcmQgd2lsbCB1c2UgaXQncwoJCW93biBjbG9jayBnZW5lcmF0b3IuCgoJaW50ZXJuYWwgLSBUaGUgVHggY2xvY2sgaXMgc3VwcGxpZWQgYnkgdGhlIGJ1aWx0aW4gY2xvY2sgZ2VuZXJhdG9yLiAJCgoJRGVmYXVsdDogbGluZQoKCU5vcm1hbGx5LCB0aGUgdGVsZWNvbW11bmljYXRpb24gY29tcGFueSdzIGVuZCBkZXZpY2UgKHRoZSBIRFNMCgltb2RlbSkgcHJvdmlkZXMgdGhlIFR4IGNsb2NrLCB0aGF0J3Mgd2h5ICdsaW5lJyBpcyB0aGUgZGVmYXVsdC4KCmNvbXgwL2ZyYW1pbmcJLSBTd2l0Y2hpbmcgQ1JDNCBvZmYvb24KCglDUkM0OiAxNiBQQ00gZnJhbWVzIChUaGUgMzIgNjRLaWJpdCBjaGFubmVscyBhcmUgbXVsdGlwbGV4ZWQgaW50byBhCglQQ00gZnJhbWUsIG5vdGhpbmcgdG8gZG8gd2l0aCBIRExDIGZyYW1lcykgYXJlIGRpdmlkZWQgaW50byAyeDgKCWdyb3VwcywgZWFjaCBncm91cCBoYXMgYSA0IGJpdCBDUkMuCgoJIyBlY2hvIGNyYzQJPi9wcm9jL2NvbXgvY29teDAvZnJhbWluZwoJIyBlY2hvIG5vLWNyYzQJPi9wcm9jL2NvbXgvY29teDAvZnJhbWluZwoKCURlZmF1bHQgaXMgJ2NyYzQnLCB0aGUgSHVuZ2FyaWFuIE1BVEFWIGxpbmVzIGJlaGF2ZSBsaWtlIHRoaXMuIAoJVGhlIHRyYWZmaWMgZ2VuZXJhbGx5IHBhc3NlcyBpZiB0aGlzIHNldHRpbmcgb24gYm90aCBlbmRzIGRvbid0IG1hdGNoLgoKY29teDAvbGluZWNvZGUJLSBTZXR0aW5nIHRoZSBsaW5lIGNvZGluZwoKCSMgZWNobyBoZGIzCT4vcHJvYy9jb214L2NvbXgwL2xpbmVjb2RlCgkjIGVjaG8gYW1pCT4vcHJvYy9jb214L2NvbXgwL2xpbmVjb2RlCgoJRGVmYXVsdCBhICdoZGIzJywgTUFUQVYgbGluZXMgdXNlIHRoaXMuCgkKCShBTUkgY29kaW5nIGlzIHJhcmVseSB1c2VkIHdpdGggRTEgbGluZXMpLiBGcmFtZSBzeW5jIG1heSBvY2N1ciwgaWYKCXRoaXMgc2V0dGluZyBkb2Vzbid0IG1hdGNoIHRoZSBvdGhlciBlbmQncywgYnV0IENSQzQgYW5kIGRhdGEgZXJyb3JzCgl3aWxsIGNvbWUsIHdoaWNoIHdpbGwgcmVzdWx0IGluIENSQyBlcnJvcnMgb24gSERMQy9TeW5jUFBQIGxldmVsLiAKCmNvbXgwL3JlZwktIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGJvYXJkJ3MgTVVOSUNIIChyZWcpIGFuZCBGQUxDIChsYmlyZWcpCmNvbXgwL2xiaXJlZwljaXJjdWl0J3MgcmVnaXN0ZXJzICAKCgkjIGVjaG8gPnJlZyAweDA0IDB4MAktIHdyaXRlIDAgdG8gcmVnaXN0ZXIgNAoJIyBlY2hvID5yZWcgMHgxMDQJLSB3cml0ZSB0aGUgY29udGVudHMgb2YgcmVnaXN0ZXIgNCB3aXRoCgkJCQlwcmludGsoKSB0byBzeXNsb2cKCldBUk5JTkchIFRoZXNlIGFyZSBvbmx5IGZvciBkZXZlbG9wbWVudCBwdXJwb3NlcywgbWVzc2luZyB3aXRoIHRoaXMgd2lsbAoJcmVzdWx0IG11Y2ggdHJvdWJsZSEKCmNvbXgwL2xvb3BiYWNrIC0gUGxhY2VzIGEgbG9vcCB0byB0aGUgYm9hcmQncyBHLjcwMyBzaWduYWxzCgoJIyBlY2hvIG5vbmUgICA+L3Byb2MvY29teC9jb214MC9sb29wYmFjawoJIyBlY2hvIGxvY2FsICA+L3Byb2MvY29teC9jb214MC9sb29wYmFjawoJIyBlY2hvIHJlbW90ZSA+L3Byb2MvY29teC9jb214MC9sb29wYmFjawoKCW5vbmUgICAtIG5vcm1hbCBvcGVyYXRpb24sIG5vIGxvb3AKCWxvY2FsICAtIHRoZSBib2FyZCByZWNlaXZlcyBpdCdzIG93biBvdXRwdXQKCXJlbW90ZSAtIHRoZSBib2FyZCBzZW5kcyB0aGUgcmVjZWl2ZWQgZGF0YSB0byB0aGUgcmVtb3RlIHNpZGUKCglEZWZhdWx0OiBub25lCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW50ZXJmYWNlIChjaGFubmVsIGdyb3VwIGluIENpc2NvIHRlcm1zKSBzZXR0aW5nczogCgpjb214MC90aW1lc2xvdHMJLSB3aGljaCB0aW1lc2xvdHMgYmVsb25nIHRvIHRoZSBnaXZlbiBpbnRlcmZhY2UKCglTZXR0aW5nOgoKCSMgZWNobyAnMSA1IDIgNiA3IDgnID4vcHJvYy9jb214L2NvbXgwL3RpbWVzbG90cwoKCSMgY2F0IC9wcm9jL2NvbXgvY29teDAvdGltZXNsb3RzCgkxIDIgNSA2IDcgOCAKCSMKCglGaW5kaW5nIGEgdGltZXNsb3Q6IAoKCSMgZ3JlcCAnIDQnIC9wcm9jL2NvbXgvY29teCovdGltZXNsb3RzCgkvcHJvYy9jb214L2NvbXgwL3RpbWVzbG90czoxIDMgNCA1IDYKCSMKCglUaGUgdGltZXNsb3RzIGNhbiBiZSBpbiBhbnkgb3JkZXIsICcxIDIgMycgaXMgdGhlIHNhbWUgYXMgJzEgMyAyJy4KCglUaGUgaW50ZXJmYWNlIGhhcyB0byBiZSBET1dOIGR1cmluZyB0aGUgc2V0dGluZyAoJ2lmY29uZmlnIGNvbXgwCglkb3duJyksIGJ1dCB0aGUgb3RoZXIgaW50ZXJmYWNlcyBjb3VsZCBvcGVyYXRlIG5vcm1hbGx5LgoKCVRoZSBkcml2ZXIgY2hlY2tzIGlmIHRoZSBhc3NpZ25lZCB0aW1lc2xvdHMgYXJlIHZhY2FudCwgaWYgbm90LCB0aGVuCgl0aGUgc2V0dGluZyB3b24ndCBiZSBhcHBsaWVkLgoKCVRoZSB0aW1lc2xvdCB2YWx1ZXMgYXJlIHRyZWF0ZWQgYXMgZGVjaW1hbCBudW1iZXJzLCBub3QgdG8gbWlzdW5kZXJzdGFuZAoJdmFsdWVzIG9mIDA4LCAwOSBmb3JtLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoZWNraW5nIHRoZSBpbnRlcmZhY2UgYW5kIGJvYXJkIHN0YXR1czoKCi0gTGluZXMgYmVnaW5uaW5nIHdpdGggJyAnIChzcGFjZSkgYmVsb25nIHRvIHRoZSBvcmlnaW5hbCBvdXRwdXQsIHRoZSBsaW5lcwp3aGljaCBiZWdpbiB3aXRoICcvLycgYXJlIHRoZSBjb21tZW50cy4KCiBwYXBheWE6fiQgY2F0IC9wcm9jL2NvbXgvY29teDEvc3RhdHVzCiBJbnRlcmZhY2UgYWRtaW5pc3RyYXRpdmUgc3RhdHVzIGlzIFVQLCBtb2RlbSBzdGF0dXMgaXMgVVAsIHByb3RvY29sIGlzIFVQCiBNb2RlbSBzdGF0dXMgY2hhbmdlczogMCwgVHJhbnNtaXR0ZXIgc3RhdHVzIGlzIElETEUsIHRidXN5OiAwCiBJbnRlcmZhY2UgbG9hZCAoaW5wdXQpOiA5NzgzNzYgLyA5NDc4MDggLyA5NTEwMjQgYml0cy9zICg1cy81bS8xNW0pCiAgICAgICAgICAgICAgIChvdXRwdXQpOiA5NzgzNzYgLyA5NDc4NDggLyA5NTEwMjQgYml0cy9zICg1cy81bS8xNW0pCiBEZWJ1ZyBmbGFnczogbm9uZQogUlggZXJyb3JzOiBsZW46IDIyLCBvdmVycnVuOiAxLCBjcmM6IDAsIGFib3J0czogMAogICAgICAgICAgICBidWZmZXIgb3ZlcnJ1bjogMCwgcGJ1ZmZlciBvdmVycnVuOiAwCiBUWCBlcnJvcnM6IHVuZGVycnVuOiAwCiBMaW5lIGtlZXBhbGl2ZSAodmFsdWU6IDEwKSBzdGF0dXMgVVAgWzBdCgovLyBUaGUgaGFyZHdhcmUgc3BlY2lmaWMgcGFydCBzdGFydHMgaGVyZToKIENvbnRyb2xsZXIgc3RhdHVzOgogICAgICAgICBObyBhbGFybXMKCi8vIEFsYXJtOiAKLy8KLy8gTm8gYWxhcm1zIC0gRXZlcnl0aGluZyBPSwovLwovLyBMT1MgIC0gTG9zcyBPZiBTaWduYWwgLSBObyBzaWduYWwgc2Vuc2VkIG9uIHRoZSBpbnB1dAovLyBBSVMgIC0gQWxhcm0gSW5kaWNhdGlvbiBTaWduYWwgLSBUaGUgcmVtb3Qgc2lkZSBzZW5kcyAnMTExMTExMTEnLXMsIAovLwlpdCB0ZWxscywgdGhhdCB0aGVyZSdzIGFuIGVycm9yIGNvbmRpdGlvbiwgb3IgaXQncyBub3QKLy8JaW5pdGlhbGlzZWQuCi8vIEFVWFAgLSBBdXhpbGlhcnkgUGF0dGVybiBJbmRpY2F0aW9uIC0gMDEwMTAxMDEuLiByZWNlaXZlZC4KLy8gTEZBICAtIExvc3Mgb2YgRnJhbWUgQWxpZ25tZW50IC0gbm8gZnJhbWUgc3luYyByZWNlaXZlZC4KLy8gUlJBICAtIFJlY2VpdmUgUmVtb3RlIEFsYXJtIC0gdGhlIHJlbW90ZSBlbmQncyBPSywgYnV0IHNpbmduYWxzIGVycm9yIGNvbmQuCi8vIExNRkEgLSBMb3NzIG9mIENSQzQgTXVsdGlmcmFtZSBBbGlnbm1lbnQgLSBubyBDUkM0IG11bHRpZnJhbWUgc3luYy4KLy8gTk1GICAtIE5vIE11bHRpZnJhbWUgYWxpZ25tZW50IEZvdW5kIGFmdGVyIDQwMCBtc2VjIC0gbm8gc3VjaCBhbGFybSB1c2luZwovLwluby1jcmM0IG9yIGNyYzQgZnJhbWluZywgc2VlIGJlbG93LgovLwovLyBPdGhlciBwb3NzaWJsZSBlcnJvciBtZXNzYWdlczoKLy8KLy8gVHJhbnNtaXQgTGluZSBTaG9ydCAtIHRoZSBib2FyZCBmZWx0LCB0aGF0IGl0J3Mgb3V0cHV0IGlzIHNob3J0LWNpcmN1aXRlZCwKLy8gCXNvIGl0IHN3aXRjaGVkIHRoZSB0cmFuc21pc3Npb24gb2ZmLiAoVGhlIGJvYXJkIGNhbid0IGRlZmluaXRlbHkgdGVsbCwKLy8JdGhhdCBpdCdzIG91dHB1dCBpcyBzaG9ydC1jaXJjdWl0ZWQuKQoKLy8gQ2hhaW5lZCBsaXN0IG9mIHRoZSByZWNlaXZlZCBwYWNrZXRzLCBmb3IgZGVidWcgcHVycG9zZXM6CgogUnggcmluZzoKICAgICAgICAgcmFmdXRvdHQ6IDAKICAgICAgICAgbGFzdGNoZWNrOiA1MDg0NTczMSwgamlmZmllczogNTEzMTQyODEKICAgICAgICAgYmFzZTogMDE3YjE4NTgKICAgICAgICAgcnhfZGVzY19wdHI6IDAKICAgICAgICAgcnhfZGVzY19wdHI6IDAxN2IxODU4CiAgICAgICAgIGh3X2N1cnJfcHRyOiAwMTdiMTg1OAogICAgICAgICAwNjA0MDAwMCAwMTdiMTg2OCAwMTdiMTg5OCBjMDE2ZmYwMAogICAgICAgICAwNjA0MDAwMCAwMTdiMTg3OCAwMTdiMWU5YyBjMDE2ZmYwMAogICAgICAgICA0NjA0MDAwMCAwMTdiMTg4OCAwMTdiMjRhMCBjMDE2ZmYwMAogICAgICAgICAwNjA0MDAwMCAwMTdiMTg1OCAwMTdiMmFhNCBjMDE2ZmYwMAoKLy8gQWxsIHRoZSBpbnRlcmZhY2VzIHVzaW5nIHRoZSBib2FyZDogY29teDEsIHVzaW5nIHRoZSAxLDIsLi4uMTYgdGltZXNsb3RzLAovLyBjb214MiwgdXNpbmcgdGltZXNsb3QgMTcsIGV0Yy4KCiBJbnRlcmZhY2VzIHVzaW5nIHRoaXMgYm9hcmQ6IChjaGFubmVsLWdyb3VwLCBpbnRlcmZhY2UsIHRpbWVzbG90cykKICAgICAgICAgIDAgY29teDE6IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2CiAgICAgICAgICAxIGNvbXgyOiAxNwogICAgICAgICAgMiBjb214MzogMTgKICAgICAgICAgIDMgY29teDQ6IDE5CiAgICAgICAgICA0IGNvbXg1OiAyMAogICAgICAgICAgNSBjb214NjogMjEKICAgICAgICAgIDYgY29teDc6IDIyCiAgICAgICAgICA3IGNvbXg4OiAyMwogICAgICAgICAgOCBjb214OTogMjQKICAgICAgICAgIDkgY29teDEwOiAyNQogICAgICAgICAxMCBjb214MTE6IDI2CiAgICAgICAgIDExIGNvbXgxMjogMjcKICAgICAgICAgMTIgY29teDEzOiAyOAogICAgICAgICAxMyBjb214MTQ6IDI5CiAgICAgICAgIDE0IGNvbXgxNTogMzAKICAgICAgICAgMTUgY29teDE2OiAzMQoKLy8gVGhlIG51bWJlciBvZiBldmVudHMgaGFuZGxlZCBieSB0aGUgZHJpdmVyIGR1cmluZyBhbiBpbnRlcnJ1cHQgY3ljbGU6CgogSW50ZXJydXB0IHdvcmsgaGlzdG9ncmFtOgogaGlzdFsgMF06ICAgICAgICAwIGhpc3RbIDFdOiAgICAgICAgMiBoaXN0WyAyXTogICAgMTg1NzQgaGlzdFsgM106ICAgICAgIDc5CiBoaXN0WyA0XTogICAgICAgMTQgaGlzdFsgNV06ICAgICAgICAxIGhpc3RbIDZdOiAgICAgICAgMCBoaXN0WyA3XTogICAgICAgIDEKIGhpc3RbIDhdOiAgICAgICAgMCBoaXN0WyA5XTogICAgICAgIDcKCi8vIFRoZSBudW1iZXIgb2YgcGFja2V0cyB0byBzZW5kIGluIHRoZSBUeCByaW5nLCB3aGVuIGEgbmV3IG9uZSBhcnJpdmVkOgoKIFR4IHJpbmcgaGlzdG9ncmFtOgogaGlzdFsgMF06ICAgICAyMzI5IGhpc3RbIDFdOiAgICAgICAgMCBoaXN0WyAyXTogICAgICAgIDAgaGlzdFsgM106ICAgICAgICAwCgovLyBUaGUgZXJyb3IgY291bnRlcnMgb2YgdGhlIEUxIGludGVyZmFjZSwgYWNjb3JkaW5nIHRvIHRoZSBSRkMyNDk1LAovLyAoc2ltaWxhciB0byB0aGUgQ2lzY28gInNob3cgY29udHJvbGxlcnMgZTEiIGNvbW1hbmQncyBvdXRwdXQ6Ci8vIGh0dHA6Ly93d3cuY2lzY28uY29tL3VuaXZlcmNkL2NjL3RkL2RvYy9wcm9kdWN0L3NvZnR3YXJlL2lvczExL3Jib29rL3JpbnRlcmZjLmh0bSN4dG9jaWQyNTY2OTEyNikKCkRhdGEgaW4gY3VycmVudCBpbnRlcnZhbCAoOTEgc2Vjb25kcyBlbGFwc2VkKToKICAgOTUxNiBMaW5lIENvZGUgVmlvbGF0aW9ucywgNjUgUGF0aCBDb2RlIFZpb2xhdGlvbnMsIDIgRS1CaXQgRXJyb3JzCiAgIDAgU2xpcCBTZWNzLCAyIEZyIExvc3MgU2VjcywgMiBMaW5lIEVyciBTZWNzLCAwIERlZ3JhZGVkIE1pbnMKICAgMCBFcnJvcmVkIFNlY3MsIDAgQnVyc3R5IEVyciBTZWNzLCAwIFNldmVyZWx5IEVyciBTZWNzLCAxMSBVbmF2YWlsIFNlY3MKRGF0YSBpbiBJbnRlcnZhbCAxICgxNSBtaW51dGVzKToKICAgMCBMaW5lIENvZGUgVmlvbGF0aW9ucywgMCBQYXRoIENvZGUgVmlvbGF0aW9ucywgMCBFLUJpdCBFcnJvcnMKICAgMCBTbGlwIFNlY3MsIDAgRnIgTG9zcyBTZWNzLCAwIExpbmUgRXJyIFNlY3MsIDAgRGVncmFkZWQgTWlucwogICAwIEVycm9yZWQgU2VjcywgMCBCdXJzdHkgRXJyIFNlY3MsIDAgU2V2ZXJlbHkgRXJyIFNlY3MsIDAgVW5hdmFpbCBTZWNzCkRhdGEgaW4gbGFzdCA0IGludGVydmFscyAoMSBob3VyKToKICAgMCBMaW5lIENvZGUgVmlvbGF0aW9ucywgMCBQYXRoIENvZGUgVmlvbGF0aW9ucywgMCBFLUJpdCBFcnJvcnMKICAgMCBTbGlwIFNlY3MsIDAgRnIgTG9zcyBTZWNzLCAwIExpbmUgRXJyIFNlY3MsIDAgRGVncmFkZWQgTWlucwogICAwIEVycm9yZWQgU2VjcywgMCBCdXJzdHkgRXJyIFNlY3MsIDAgU2V2ZXJlbHkgRXJyIFNlY3MsIDAgVW5hdmFpbCBTZWNzCkRhdGEgaW4gbGFzdCA5NiBpbnRlcnZhbHMgKDI0IGhvdXJzKToKICAgMCBMaW5lIENvZGUgVmlvbGF0aW9ucywgMCBQYXRoIENvZGUgVmlvbGF0aW9ucywgMCBFLUJpdCBFcnJvcnMKICAgMCBTbGlwIFNlY3MsIDAgRnIgTG9zcyBTZWNzLCAwIExpbmUgRXJyIFNlY3MsIDAgRGVncmFkZWQgTWlucwogICAwIEVycm9yZWQgU2VjcywgMCBCdXJzdHkgRXJyIFNlY3MsIDAgU2V2ZXJlbHkgRXJyIFNlY3MsIDAgVW5hdmFpbCBTZWNzCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKU29tZSB1bmlxdWUgb3B0aW9ucywgKG1heSBnZXQgaW50byB0aGUgZHJpdmVyIGxhdGVyKToKVHJlYXQgdGhlbSB2ZXJ5IGNhcmVmdWxseSwgdGhlc2UgY2FuIGNhdXNlIG11Y2ggdHJvdWJsZSEKCgltb2RpZmllZCBDUkMtNCwgZm9yIGltcHJvdmVkIGludGVyd29ya2luZyBvZiBDUkMtNCBhbmQgbm9uLUNSQy00CglkZXZpY2VzOiAoc2VlIHBhZ2UgMTA3IGFuZCBnNzA2IEFubmV4IEIpCgkJbGJpcmVnWyAweDFiIF0gfD0gMHgwOAoJCWxiaXJlZ1sgMHgxYyBdIHw9IDB4YzAKCgktIFRoZSBOTUYgLSAnTm8gTXVsdGlmcmFtZSBhbGlnbm1lbnQgRm91bmQgYWZ0ZXIgNDAwIG1zZWMnIGFsYXJtIAoJY29tZXMgaW50byBhY2NvdW50LgoKCUZBTEMgLSB0aGUgbGluZSBkcml2ZXIgY2hpcC4KCWxvY2FsIGxvb3AgLSBJIGhlYXIgbXkgdHJhbnNtaXNzaW9uIGJhY2suCglyZW1vdGUgbG9vcCAtIEkgZWNobyB0aGUgcmVtb3RlIHRyYW5zbWlzc2lvbiBiYWNrLgoKCVNvbWV0aGluZyB1c2VmdWwgZm9yIGZpbmRpbmcgZXJyb3JzOgoJCgkJLSBsb2NhbCBsb29wIGZvciB0aW1lc2xvdCAxIGluIHRoZSBGQUxDIGNoaXA6CgoJIyBlY2hvID5sYmlyZWcgMHgxZCAweDIxCgoJCS0gU3dpdGhpbmcgdGhlIGxvb3Agb2ZmOgoKCSMgZWNobyA+bGJpcmVnIDB4MWQgMHgwMAo=