[ruby-core:112978] [Ruby master Feature#19541] Proposal: Generate frame unwinding info for YJIT code
From:
"k0kubun (Takashi Kokubun) via ruby-core" <ruby-core@...>
Date:
2023-03-22 15:16:48 UTC
List:
ruby-core #112978
SXNzdWUgIzE5NTQxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgazBrdWJ1biAoVGFrYXNoaSBLb2t1YnVu KS4NDQoNDQoNDQo+IEkgd29uZGVyIGlmIHRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlIGltcGxlbWVu dGVkIGluIHRoZSBDIHBhcnRzIG9mIHJ1YnksIHJhdGhlciB0aGFuIGluIHJ1c3QuDQ0KDQ0KUkpJ VCdzIGdvYWwgaXMgdG8gaGVscCBZSklULiBXZSBzaG91bGRuJ3QgY29uc2lkZXIgd3JpdGluZyBz b21ldGhpbmcgaW4gQyBpbnN0ZWFkIG9mIFJ1c3QganVzdCBmb3IgUkpJVC4gV2Ugc2hvdWxkIGNo b29zZSB3aGF0J3MgdGhlIGJlc3QgZm9yIFlKSVQsIGFuZCBSSklUIGNvdWxkIHNlcGFyYXRlbHkg bWFpbnRhaW4gaXQgYXMgbmVlZGVkLg0NCg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NDQpGZWF0dXJlICMxOTU0MTogUHJvcG9zYWw6IEdlbmVyYXRlIGZyYW1lIHVu d2luZGluZyBpbmZvIGZvciBZSklUIGNvZGUNDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9p c3N1ZXMvMTk1NDEjY2hhbmdlLTEwMjUwNg0NCg0NCiogQXV0aG9yOiBranRzYW5ha3RzaWRpcyAo S0ogVHNhbmFrdHNpZGlzKQ0NCiogU3RhdHVzOiBBc3NpZ25lZA0NCiogUHJpb3JpdHk6IE5vcm1h bA0NCiogQXNzaWduZWU6IHlqaXQNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQ0KIyMgV2hhdCBpcyBiZWluZyBwcm9wc2VkPw0NCg0NCkN1cnJlbnRseSwgd2hlbiBS dWJ5IGNyYXNoZXMgd2l0aCB5aml0IGdlbmVyYXRlZCBjb2RlIG9uIHRoZSBzdGFjaywgYHJiX3By aW50X2JhY2t0cmFjZSgpYCBpcyB1bmFibGUgdG8gYWN0dWFsbHkgc2hvdyBhbnkgZnJhbWVzIHVu ZGVybmVhdGggdGhlIHlqaXQgY29kZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzZW5kIFNJR1NFR1Yg dG8gYSBSdWJ5IHByb2Nlc3MgcnVubmluZyB5aml0LCB0aGlzIGlzIHdoYXQgeW91IHNlZToNDQoN DQpgYGANDQovcnVieS9taW5pcnVieShyYl9wcmludF9iYWNrdHJhY2UrMHhjKSBbMHhhYWFhZDAy NzY4ODRdIC9ydWJ5L3ZtX2R1bXAuYzo3ODUNDQovcnVieS9taW5pcnVieShyYl92bV9idWdyZXBv cnQpIC9ydWJ5L3ZtX2R1bXAuYzoxMDkzDQ0KL3J1YnkvbWluaXJ1YnkocmJfYnVnX2Zvcl9mYXRh bF9zaWduYWwrMHhkMCkgWzB4YWFhYWQwMDc1NTgwXSAvcnVieS9lcnJvci5jOjgxMw0NCi9ydWJ5 L21pbmlydWJ5KHNpZ3NlZ3YrMHg1YykgWzB4YWFhYWQwMWJlZGFjXSAvcnVieS9zaWduYWwuYzo5 MTkNDQpsaW51eC12ZHNvLnNvLjEoX19rZXJuZWxfcnRfc2lncmV0dXJuKzB4MCkgWzB4ZmZmZjkx YTNlOGJjXQ0NCi9ydWJ5L21pbmlydWJ5KG1hcDwodXNpemUsIHlqaXQ6OmJhY2tlbmQ6OmlyOjpJ bnNuKSwgKHVzaXplLCB5aml0OjpiYWNrZW5kOjppcjo6SW5zbiksIHlqaXQ6OmJhY2tlbmQ6Omly Ojp7aW1wbCMxN306Om5leHRfbWFwcGVkOjp7Y2xvc3VyZV9lbnYjMH0+KzB4OGMpIFsweGFhYWFk MDNiOGIwMF0gL3J1c3RjLzg5N2UzNzU1M2JiYThiNDI3NTFjNjc2NTg5Njc4ODlkMTFlY2QxMjAv bGlicmFyeS9jb3JlL3NyYy9vcHRpb24ucnM6OTI5DQ0KL3J1YnkvbWluaXJ1YnkobmV4dF9tYXBw ZWQrMHgzYykgWzB4YWFhYWQwMjkxZGMwXSBzcmMvYmFja2VuZC9pci5yczoxMjI1DQ0KL3J1Ynkv bWluaXJ1YnkoYXJtNjRfc3BsaXQrMHgxMTQpIFsweGFhYWFkMDI4Nzc0NF0gc3JjL2JhY2tlbmQv YXJtNjQvbW9kLnJzOjM1OQ0NCi9ydWJ5L21pbmlydWJ5KGNvbXBpbGVfd2l0aF9yZWdzKzB4ODAp IFsweGFhYWFkMDI4YmY4NF0gc3JjL2JhY2tlbmQvYXJtNjQvbW9kLnJzOjExMDYNDQovcnVieS9t aW5pcnVieShjb21waWxlKzB4YzQpIFsweGFhYWFkMDI5MWFlMF0gc3JjL2JhY2tlbmQvaXIucnM6 MTE1OA0NCi9ydWJ5L21pbmlydWJ5KGdlbl9zaW5nbGVfYmxvY2srMHhlNDQpIFsweGFhYWFkMDJi MWY4OF0gc3JjL2NvZGVnZW4ucnM6ODU0DQ0KL3J1YnkvbWluaXJ1YnkoZ2VuX2Jsb2NrX3Nlcmll c19ib2R5KzB4OWMpIFsweGFhYWFkMDNiMDI1MF0gc3JjL2NvcmUucnM6MTY5OA0NCi9ydWJ5L21p bmlydWJ5KGdlbl9ibG9ja19zZXJpZXMrMHg1MCkgWzB4YWFhYWQwM2IwMTAwXSBzcmMvY29yZS5y czoxNjc2DQ0KL3J1YnkvbWluaXJ1YnkoYnJhbmNoX3N0dWJfaGl0X2JvZHkrMHg4MGMpIFsweGFh YWFkMDNiMWY2OF0gc3JjL2NvcmUucnM6MjAyMQ0NCi9ydWJ5L21pbmlydWJ5KHtjbG9zdXJlIzB9 KzB4MjgpIFsweGFhYWFkMDJlYjg2Y10gc3JjL2NvcmUucnM6MTkyNA0NCi9ydWJ5L21pbmlydWJ5 KGRvX2NhbGw8eWppdDo6Y29yZTo6YnJhbmNoX3N0dWJfaGl0Ojp7Y2xvc3VyZV9lbnYjMH0sICpj b25zdCB1OD4rMHg5OCkgWzB4YWFhYWQwMzViYTNjXSAvcnVzdGMvODk3ZTM3NTUzYmJhOGI0Mjc1 MWM2NzY1ODk2Nzg4OWQxMWVjZDEyMC9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzOjQ5Mg0N ClsweGFhYWFkMDM1YzliNF0NDQpgYGANDQoNDQoobi5iLiAtIEkgY29tcGlsZWQgUnVieSB3aXRo IGAtZmFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIOKAk3JkeW5hbWljIOKAk2dgIGluIGNmbGFn cyB0byBtYWtlIHN1cmUgZ2NjIGdlbmVyYXRlcyBhcHByb3ByaWF0ZSB1bndpbmQgaW5mbyAmIGtl ZXBzIHRoZSBzeW1ib2wgdGFibGVzKS4NDQoNDQpMaWtld2lzZSwgaWYgeW91IGF0dGFjaCBnZGIg dG8gYSBSdWJ5IHByb2Nlc3Mgd2l0aCB5aml0IGVuYWJsZWQsIGdkYiBjYW4ndCBzaG93IHRocmVh ZCBiYWNrdHJhY2VzIHRocm91Z2ggeWppdC1nZW5lcmF0ZWQgY29kZSBlaXRoZXIuDQ0KDQ0KTXkg cHJvcG9zYWwgaXMgdGhhdCBZSklUIGdlbmVyYXRlIHN1ZmZpY2llbnQgdW53aW5kaW5nIGFuZCBk ZWJ1ZyBpbmZvcm1hdGlvbiBvbiBhbGwgcGxhdGZvcm1zIHRvIGFsbG93IGJvdGggYHJiX3ByaW50 X2JhY2t0cmFjZSgpYCBhbmQgdGhlIHBsYXRmb3JtJ3MgZGVidWdnZXIgKGdkYi9sbGRiL1dpbkRi ZykgdG8gc2hvdzoNDQoNDQoqIEZ1bGwgc3RhY2sgdHJhY2VzIGFsbCB0aGUgd2F5IGJhY2sgdG8g YG1haW5gLiBUaGF0IGlzLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc2VlIGZyYW1lcyBfdW5k ZXJuZWF0aF8gYFsweGFhYWFkMDM1YzliNF1gIGZyb20gdGhlIGJhY2t0cmFjZSBhYm92ZS4NDQoq IE5hbWVzIGZvciB0aGUgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIHlqaXQgYmxvY2tzIChlLmcuIGlu c3RlYWQgb2YgYFsweGFhYWFkMDM1YzliNF1gLCB3ZSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtl IGB5aml0JCRuYW1lX29mX3J1YnlfbWV0aG9kYCwgd2hlcmUgYG5hbWVfb2ZfcnVieV9tZXRob2Rg IGlzIHRoZSBgbGFiZWxgIGZvciB0aGUgaXNlcSB0aGlzIGlzIEpJVCdkIGNvZGUgZm9yKS4NDQoN DQojIyBNb3RpdmF0aW9uDQ0KDQ0KSSBoYXZlIGEgZmV3IG1vdGl2YXRpb25zIGZvciB3YW50aW5n IHRoaXMuIEZpcnN0bHksIEkgZmVlbCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5kZXBlbmRlbnRs eSB1c2VmdWwuIFdoZW4gUnVieSBjcmFzaGVzLCB0aGUgbW9yZSBpbmZvcm1hdGlvbiB3ZSBjYW4g Z2V0LCB0aGUgbW9yZSBsaWtlbHkgd2UgYXJlIHRvIGZpbmQgdGhlIHJvb3QgY2F1c2UuIExpa2V3 aXNlLCB0aGUgc2FtZSBwcmluY2lwbGUgYXBwbGllcyB0byBkZWJ1Z2dpbmcgd2l0aCBnZGIgLSB5 b3UgY2FuIGdldCBhIGZ1bGxlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIHByb2Nlc3MgaXMg ZG9pbmcgaWYgeW91IHNlZSB0aGUgd2hvbGUgc3RhY2suDQ0KDQ0KSSBoYXZlIG9mdGVuIGZvdW5k IGF0dGFjaGluZyBnZGIgdG8gdGhlIFJ1YnkgaW50ZXJwcmV0ZXIgaGVscHMgaW4gdW5kZXJzdGFu ZGluZyBwcm9ibGVtcyBpbiBSdWJ5IGNvZGUgb3IgQyBleHRlbnNpb25zIGFuZCBpcyBzb21ldGhp bmcgSSBkbyByZWxhdGl2ZWx5IGZyZXF1ZW50bHk7IHlqaXQgYnJlYWtpbmcgdGhhdCB3aWxsIGRl ZmluaXRlbHkgYmUgaW5jb252ZW5pZW50IGZvciBtZSENDQoNDQojIyBJbXBsZW1lbnRhdGlvbg0N Cg0NCkkgaGF2ZSBhIGRyYWZ0IGltcGxlbWVudGF0aW9uIGhlcmUgb24gaG93IEknZCBpbXBsZW1l bnQgdGhpczogaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzc1NjcuIEl0J3MgY3Vy cmVudGx5IG1pc3NpbmcgdGVzdHMgJiBwbGF0Zm9ybSBzdXBwb3J0IChpdCBvbmx5IHdvcmtzIG9u IExpbnV4IGFhcmNoNjQpLiBBbHNvLCBpdCBpbXBsZW1lbnRzIHVud2luZCBpbmZvIGdlbmVyYXRp b24sIHNvIHVud2luZGluZyBjYW4gd29yayBfdGhyb3VnaF8geWppdCBjb2RlLCBidXQgaXQgZG9l cyBub3QgY3VycmVudGx5IGVtaXQgc3ltYm9scyB0byBnaXZlIF9uYW1lc18gdG8gdGhvc2UgeWpp dCBmcmFtZXMuDQ0KDQ0KTXkgUFIgY29udGFpbnMgYSBkb2N1bWVudCB3aGljaCBleHBsYWlucyBo b3cgdGhlIExpbnV4IGludGVyZmFjZXMgZm9yIHJlZ2lzdGVyaW5nIHVud2luZCBpbmZvIGZvciBK SVQnZCBjb2RlIHdvcmssIHNvIEkgd29uJ3QgZHVwbGljYXRlIHRoYXQgaW5mb3JtYXRpb24gaGVy ZS4NDQoNDQpUaGUgYmlnZ2VzdCBpbXBsZW1lbnRhdGlvbiBxdWVzdGlvbiBJIGhhZCBpcyBhcm91 bmQgdGhlIHVzZSBvZiBSdXN0IGNyYXRlcy4gQ3VycmVudGx5LCBJIHByb3RvdHlwZWQgbXkgaW1w bGVtZW50YXRpb24gdXNpbmcgdGhlIGdpbWxpICYgb2JqZWN0IGNyYXRlcywgZm9yIGdlbmVyYXRp bmcgRFdBUkYgaW5mbyBhbmQgRUxGIGJpbmFyaWVzLiBIb3dldmVyLCB0aGUgeWppdCBidWlsZCBk b2VzIHB1cnBvc2VmdWxseSBkb2VzIG5vdCB1c2UgY2FyZ28gJiBleHRlcm5hbCBjcmF0ZXMgZm9y IHJlbGVhc2UgYnVpbGRzLiBUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHdheXMgd2UgY291bGQg Z28gaGVyZToNDQoNDQoqIERvbid0IHVzZSB0aGUgZ2ltbGkgJiBvYmplY3QgY3JhdGVzOyBpbnN0 ZWFkLCByZS1pbXBsZW1lbnQgYWxsIGRlYnVnIGluZm8gJiBvYmplY3QgZmlsZSBnZW5lcmF0aW9u IGNvZGUgaW4geWppdC4NDQoqIERvbid0IHVzZSB0aGUgY3JhdGVzOyBpbnN0ZWFkLCBsaW5rIGFn YWludCBDIGxpYnJhcmllcyB0byBwcm92aWRlIHRoaXMgZnVuY3Rpb25hbGl0eSAmIGNhbGwgdGhl bSBmcm9tIFJ1c3QgKHBlcmhhcHMgc29tZSBjb21iaW5hdGlvbiBvZiBsaWJlbGYsIGxpYmR3LCBs aWJiZmQsIG9yIGxsdm0gbWlnaHQgZG8gd2hhdCB3ZSBuZWVkKQ0NCiogVXNlIGNhcmdvIGFmdGVy IGFsbCBmb3IgdGhlIHJlbGVhc2UgYnVpbGQgJiBkb3dubG9hZCB0aGUgY3JhdGVzIGF0IGJ1aWxk LXRpbWUNDQoqIFVzZSBjYXJnbyBmb3IgdGhlIHJlbGVhc2UgYnVpbGQsIGJ1dCB2ZW5kb3IgZXZl cnl0aGluZywgc28gdGhlIGJ1aWxkIGRvZXNuJ3QgbmVlZCB0byBkb3dubG9hZCBhbnl0aGluZw0N CiogT25seSBtYWtlIHVud2luZCBpbmZvIGdlbmVyYXRpb24gYXZhaWxhYmxlIGluIGRldiBtb2Rl IHdoZXJlIGNhcmdvIGlzIHVzZWQsIGFuZCBzbyBtYXJrIHRoZSBnaW1saS9vYmplY3QgZGVwZW5k ZW5jaWVzIGFzIG9wdGlvbmFsIGluIENhcmdvLnRvbWwuDQ0KDQ0KV2UnZCBuZWVkIHRvIGRlY2lk ZSBvbiBvbmUgb2YgdGhlc2UgYXBwcm9hY2hlcyBmb3IgdGhpcyBwcm9wb3NhbCB0byB3b3JrLiBJ IGRvbid0IHJlYWxseSBoYXZlIGEgc3Ryb25nIHNlbnNlIG9mIHRoZSBwcm9zL2NvbnMgb2YgZWFj aC4NDQoNDQooU2lkZSBub3RlIC0gbXkgUFIgYWN0dWFsbHkgZGVwZW5kcyBvbiBhIF9mb3JrXyBv ZiBnaW1saSAtIEkndmUgYmVlbiBkaXNjdXNzaW5nIGFkZGluZyB0aGUgbmVlZGVkIGludGVyZmFj ZXMgdXBzdHJlYW0gaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL2dpbWxpLXJzL2dpbWxpL2lzc3Vl cy82NDgpLg0NCg0NCiMjIEJlbmNobWFya3MNDQoNDQpJIHJhbiB0aGUgeWl0LWJlbmNoIHN1aXRl IG9uIG15IGJyYW5jaCBhbmQgY29tcGFyZWQgaXQgdG8gUnVieSBtYXN0ZXI6DQ0KDQ0KKiBNeSBi cmFuY2g6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0tKVHNhbmFrdHNpZGlzLzU3NDFhOWY2NGU1 Y2Q3NWNkZjVmZWRkODQ2MDkxYTRmDQ0KKiBSdWJ5IG1hc3RlcjogaHR0cHM6Ly9naXN0LmdpdGh1 Yi5jb20vS0pUc2FuYWt0c2lkaXMvNTkyZDNlYmNmOThmNjc0NWRmYTNlZmJkMzBhMjVhY2YNDQoN DQpUaGlzIGlzIGEgKHZlcnkgc2ltcGxlKSBjb21wYXJpc29uOg0NCg0NCmBgYA0NCi0tLS0tLS0t LS0tLS0tIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tDQ0KYmVuY2gg ICAgICAgICAgeWppdCAobXMpICAgIGJyYW5jaCAobXMpICBicmFuY2gveWppdCAoJSkNDQphY3Rp dmVyZWNvcmQgICA5Ny41ICAgICAgICAgOTguNSAgICAgICAgIDEwMS4wMyUNDQpoZXhhcGRmICAg ICAgICAyNDE1LjMgICAgICAgMjQ1OC4yICAgICAgIDEwMS43OCUNDQpsaXF1aWQtYyAgICAgICA2 MS45ICAgICAgICAgNjMuMSAgICAgICAgIDEwMS45NCUNDQpsaXF1aWQtcmVuZGVyICAxMzUuMyAg ICAgICAgMTM1LjAgICAgICAgIDk5Ljc4JQ0NCm1haWwgICAgICAgICAgIDEwNC42ICAgICAgICAx MDUuNSAgICAgICAgMTAwLjg2JQ0NCnBzeWNoLWxvYWQgICAgIDE4ODcuMSAgICAgICAxOTIyLjAg ICAgICAgMTAxLjg1JQ0NCnJhaWxzYmVuY2ggICAgIDE1NDQuNCAgICAgICAxNTU2LjAgICAgICAg MTAwLjc1JQ0NCnJ1YnktbHNwICAgICAgIDg4LjQgICAgICAgICA4OS41ICAgICAgICAgMTAxLjI0 JQ0NCnNlcXVlbCAgICAgICAgIDE0Ny41ICAgICAgICAxNTEuMSAgICAgICAgMTAyLjQ0JQ0NCmJp bmFyeXRyZWVzICAgIDMwMyAgICAgICAgICAzMDUuNiAgICAgICAgMTAwLjg2JQ0NCmNodW5reV9w bmcgICAgIDEwNzUuOCAgICAgICAxMDc5LjQgICAgICAgMTAwLjMzJQ0NCmVydWJpICAgICAgICAg IDM5Mi45ICAgICAgICAzOTIuMyAgICAgICAgOTkuODUlDQ0KZXJ1YmlfcmFpbHMgICAgMTQuNyAg ICAgICAgIDE0LjcgICAgICAgICAxMDAuMDAlDQ0KZXRhbm5pICAgICAgICAgNzkyLjMgICAgICAg IDc5MS40ICAgICAgICA5OS44OSUNDQpmYW5ua3VjaHJlZHV4ICAzODE1LjkgICAgICAgMzgxMy42 ICAgICAgIDk5Ljk0JQ0NCmxlZSAgICAgICAgICAgIDEwMzAuMiAgICAgICAxMDM5LjIgICAgICAg MTAwLjg3JQ0NCm5ib2R5ICAgICAgICAgIDQ5LjIgICAgICAgICA0OS4zICAgICAgICAgMTAwLjIw JQ0NCm9wdGNhcnJvdCAgICAgIDQxNDIgICAgICAgICA0MTQzLjMgICAgICAgMTAwLjAzJQ0NCnJ1 YnktanNvbiAgICAgIDI4NjAuNyAgICAgICAyODc0LjAgICAgICAgMTAwLjQ2JQ0NCnJ1Ynlrb24g ICAgICAgIDc5MDYuNiAgICAgICA3OTA0LjIgICAgICAgOTkuOTclDQ0KMzBrX2lmZWxzZSAgICAg MzQ4LjcgICAgICAgIDM0NS40ICAgICAgICA5OS4wNSUNDQozMGtfbWV0aG9kcyAgICA4MjguNiAg ICAgICAgODMxLjggICAgICAgIDEwMC4zOSUNDQpjZnVuY19pdHNlbGYgICAyOC44ICAgICAgICAg MjguOSAgICAgICAgIDEwMC4zNSUNDQpmaWIgICAgICAgICAgICAzNC40ICAgICAgICAgMzQuNSAg ICAgICAgIDEwMC4yOSUNDQpnZXRpdmFyICAgICAgICAxMTUuNSAgICAgICAgMTA5LjcgICAgICAg IDk0Ljk4JQ0NCmtleXdvcmRfYXJncyAgIDM3LjcgICAgICAgICAzOC4wICAgICAgICAgMTAwLjgw JQ0NCnJlc3BvbmRfdG8gICAgIDI2ICAgICAgICAgICAyNi4xICAgICAgICAgMTAwLjM4JQ0NCnNl dGl2YXIgICAgICAgIDMzLjggICAgICAgICAzMy41ICAgICAgICAgOTkuMTElDQ0Kc2V0aXZhcl9v YmplY3QgMjA4LjcgICAgICAgIDE5NC4zICAgICAgICA5My4xMCUNDQpzdHJfY29uY2F0ICAgICA1 Mi42ICAgICAgICAgNTIuMiAgICAgICAgIDk5LjI0JQ0NCnRocm93ICAgICAgICAgIDIzLjggICAg ICAgICAyNC4xICAgICAgICAgMTAxLjI2JQ0NCi0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLSAt LS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tDQ0KYGBgDQ0KDQ0KSXQgc2VlbXMgbGlrZSB0aGUg cGVyZm9ybWFuY2UgaW1wYWN0IG9mIGdlbmVyYXRpbmcgYW5kIHJlZ2lzdGVyaW5nIHRoZSBkZWJ1 ZyBpbmZvIGlzIG1hcmdpbmFsLg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxh bmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBU byB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxh bmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1h bjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==