MjAwMy0xMi0zMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIG9wdC8xMzQ3MwoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xKTogIFRha2UgY2FyZSBmb3IgUlRMIHNoYXJpbmcgaW5zaWRlCglBU00gaW5wdXQgb3BlcmFuZHMKCglQUiBvcHQvMTI2MTcKCSogdG9wbGV2LmMgKGR1bXBfZmlsZV9pbmRleCk6IFJlb3JkZXIgY2UzIGFuZCBiYnJvLgoJKGR1bXBfZmlsZSk6IExpa2V3aXNlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCglQUiBkZWJ1Zy8xMzM2NwoJKiBjZ3JhcGguYyAoY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2lubGluZWQpOiAgRXZlbiB3aXRoCglmbGFnX3JlYWxseV9ub19pbmxpbmUgd2UgaW5saW5lIGFsd2F5c19pbmxpbmUgZnVuY3Rpb25zLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9hbmFseXplX2Z1bmN0aW9uKTogQ2xlYXIgaW5saW5hYmxlIGZsYWcKCWZvciBub24tYWx3YXlzX2lubGluZSBmdW5jdGlvbnMgd2hlbiB0aGVyZSBpcyBmbGFnX3JlYWxseV9ub19pbmxpbmUuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZyk6IExpbWl0IHdvcmsgZG9uZSB3aGVuIG5vdCBpbmxpbmluZy4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkpOiBMaWtld2lzZS4KCShjZ3JhcGhfb3B0aW1pemVfZnVuY3Rpb24pOiBDaGVjayB3aGV0aGVyIHNvbWV0aGluZyBnb3QgaW5saW5lZC4KCSogYy1vYmpjLWNvbW1vbi5jIChjX2Rpc3JlZ2FyZF9pbmxpbmVfbGltaXRzKTogRG8gbm90IGFsd2F5cyBpbmxpbmUKCWV4dGVybiBpbmxpbmUgZnVuY3Rpb25zIHdoZW4gbm90IGlubGluaW5nLgoKCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6ICBEaXNhYmxlIGNyb3NzanVtcGluZyBhdCAtTzEKCSogaW52b2tlLnRleGkgKC1PMSk6IERvY3VtZW50IGNoYW5nZS4KCjIwMDMtMTItMzEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogRm9yIGhhcmQgcmVnaXN0ZXIsIHdyaXRlIG91dCByZWdpc3RlcgoJbnVtYmVyIGFuZCByZWdpc3RlciBuYW1lIGluc3RlYWQgb2YgY2FsbGluZyBQUklOVF9SRUcuCgkqIGRlZmF1bHRzLmggKFBSSU5UX1JFRyk6IERlbGV0ZWQuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAocHJpbnRfcmVnKTogUmVtb3ZlIGhhbmRsaW5nIG9mIENPREUgb2YgLTEuCglNb3ZlIGNvbW1lbnRzIGhlcmUgZnJvbSBpMzg2LmguCgkocHJpbnRfb3BlcmFuZCwgcHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogQ2FsbCBwcmludF9yZWcgZGlyZWN0bHkuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoUFJJTlRfUkVHKTogRGVsZXRlZC4KCjIwMDMtMTItMzEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2lhNjQvaHB1eC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lCglfSU5DTFVERV9MT05HTE9ORy4KCjIwMDMtMTItMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY2MuYyAoaW5pdF9zcGVjKTogQWRkIC1sdW53aW5kIHRvIHNoYXJlZCBjYXNlIHRvbyBpZgoJVVNFX0xJQlVOV0lORF9FWENFUFRJT05TLgoKMjAwMy0xMi0zMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvaW5jbHVkZS90ZXhpbmZvLnRleDogVXBkYXRlIHRvIHZlcnNpb24gMjAwMy0xMi0yMS4xMC4KCSogZG9jL2djYy50ZXhpLCBkb2MvZ2NjaW50LnRleGk6IERvbid0IHNldCBmb250IGZvcgoJQGRlZi4uLiBjb21tYW5kcy4KCSogZG9jL2ludm9rZS50ZXhpOiBEb24ndCB1c2UgZW1wdHkgQG9waW5kZXguCgoyMDAzLTEyLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAoY19leHBhbmRfZXhwcik6IFJlbW92ZSBjb2RlIHRvIHJldHVybiBhIHZhbHVlCglkaWZmZXJlbnQgZnJvbSB0aGF0IHJldHVybmVkIGJ5IGV4cGFuZF9leHByLgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBVc2UgdGhlIHZhbGlkaXR5IG9mIGEgdGFyZ2V0IE1FTSwgcmF0aGVyCgl0aGFuIGNoZWNraW5nIERFQ0xfUlRMIChleHApLCB0byBmaWd1cmUgb3V0IGlmIGEgY29weSBpcwoJcmVxdWlyZWQuCgoyMDAzLTEyLTMxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3Y4NTAvbGliMWZ1bmNzLmFzbTogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY29uZmlnL3Y4NTAvdjg1MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5tZDogTGlrZXdpc2UuCgoyMDAzLTEyLTMxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKm1vdnFpX2luc3ZfMik6IFJlbW92ZSBBTkQgaW4gdGhlCglzZXQgc291cmNlLgoKMjAwMy0xMi0zMSAgS2F6dWhpcm8gSW5hb2thICA8aW5hb2thLmthenVoaXJvQHJlbmVzYXMuY29tPgoKCSogY29uZmlnLmdjYzogQWRkZWQgbTMyci1saW51eCBtMzJybGUtZWxmIGFuZCBtMzJsZS1saW51eCB0YXJnZXRzLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1tZmx1c2gtZnVuYywgLW1mbHVzaC10cmFwIG9wdGlvbnMuCglBbHNvIGFkZCBkb2N1bWVudGF0aW9uIGZvciAtbWRlYnVnLCAtbWFsaWduLWxvb3BzLCAtbWlzc3VlLXJhdGUsCglhbmQgLW1icmFuY2gtY29zdCBvcHRpb25zLgoJKiBjb25maWcvbTMyci90LWxpbnV4OiBOZXcgZmlsZTogbTMyci1saW51eCBzdXBwb3J0LgoJKiBjb25maWcvbTMyci94bS1saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIveG0tbTMyci5oOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbGludXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL2xpdHRsZS5oOiBOZXcgZmlsZTogTGl0dGxlIGVuZGlhbiBjb2RlIGdlbmVyYXRpb24KCXN1cHBvcnQuCgkqIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmggKG0zMnJfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcywKCW0zMnJfbGVnaXRpbWF0ZV9waWNfb3BlcmFuZF9wLCBsb2FkX3BpY19yZWdpc3Rlcik6IEFkZAoJcHJvdG90eXBlcy4KCSogY29uZmlnL20zMnIvbTMyci5jIChtMzJyX2luaXQpOiBBZGQgb3B0aW9ucyBmb3IgY2FjaGUtZmx1c2guCgkoYWRkcjI0X29wZXJhbmQpOiBDaGFuZ2VzIGZvciBQSUMgY29kZSBnZW5lcmF0aW9uLgoJKiBjb25maWcvbTMyci9tMzJyLmggKExBQkVMX0FMSUdOKTogRGVmaW5lIHRvIGNhbGN1bGF0ZSBQTk9QCglsZW5ndGggYXQgbGFiZWxzLgoJKEFTTV9TUEVDKTogQWRkIFBJQyBzdXBwb3J0LgoJKEZVTkNUSU9OX1BST0ZJTEVSKTogTmV3IGRlZmluZS4KCShUUkFNUE9MSU5FX1NJWkUsIElOSVRJQUxJWkVfVFJBTVBPTElORSk6IENoYW5nZWQgdG8gc3VwcG9ydAoJdHJhbXBvbGluZS4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSwgQ09OU1RBTlRfQUREUkVTU19QLAoJIExFR0lUSU1JWkVfQUREUkVTUywgSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OLAoJIFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNLCBGSU5BTElaRV9QSUMsIExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCwKCSBBU01fT1VUUFVUX0FERFJfRElGRl9FTFQsIENBU0VfVkVDVE9SX01PREUpOiBEZWZpbmUgZm9yIFBJQy4KCShtb3ZlX3NyY19vcGVyYW5kLCBtMzJyX2NvbXB1dGVfZnJhbWVfc2l6ZSwgbTMycl9leHBhbmRfcHJvbG9ndWUsCgkgbTMycl9maW5hbGl6ZV9waWMpOiBDaGFuZ2VzIGZvciBQSUMgYW5kIHByb2ZpbGUgc3VwcG9ydC4KCShnbG9iYWxfb2Zmc2V0X3RhYmxlLCBsb2FkX3BpY19yZWdpc3RlciwgbTMycl9sZWdpdGltYXRlX3BpY19vcGVyYW5kX3AsCgkgbTMycl9sZWdpdGltaXplX3BpY19hZGRyZXNzKTogQWRkIGZvciBQSUMgc3VwcG9ydC4KCShtMzJyX2ZpbGVfc3RhcnQpOiBDaGFuZ2VkIGZvciBsaXR0bGUtZW5kaWFuLXRhcmdldC4KCSogY29uZmlnL20zMnIvbTMyci5tZCAobXZxaSwgbW92aGksIG1vdnNpLCBtb3ZkaSwgbW92c2YsIG1vdmRmLAoJdGFibGVqdW1wLCB0YWJsZWp1bXBfaW5zbiwgY2FsbCwgY2FsbF92YWx1ZSwgY2FsbF92YWx1ZV92aWFfbGFiZWwpOgoJQ2hhbmdlcyBmb3IgUElDLgoJKHBpY19sb2FkX2FkZHIsIGdldF9wYywgYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBBZGRlZCBmb3IgUElDLgoJKGZsdXNoX2ljYWNoZSk6IENoYW5nZXMgZm9yIGNhY2hlLWZsdXNoIHRyYXAuCgoyMDAzLTEyLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2kzODYvaTM4Ni5oOiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgI3VuZGVmLgoKMjAwMy0xMi0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjcHBmaWxlcy5jIChwY2hfb3Blbl9maWxlKTogTWlub3IgdHdlYWsgdG8gd29yay1hcm91bmQgbmF0aXZlCglIUFBBIGNvbXBpbGVyIGJ1Zy4KCjIwMDMtMTItMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvcnM2MDAwL2FpeC5oOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBMaWtld2lzZS4KCjIwMDMtMTItMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oOiBSZW1vdmUgcHJvdG90eXBlIGZvcgoJY29uc3RfaW50XzFfb3BlcmFuZC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChjb25zdF9pbnRfMV9vcGVyYW5kKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFBSRURJQ0FURV9DT0RFUyk6IFJlbW92ZQoJY29uc3RfaW50XzFfb3BlcmFuZC4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogUmVwbGFjZSBhbGwgdXNlcyBvZiBjb25zdF9pbnRfMV9vcGVyYW5kCgl3aXRoIGNvbnN0MV9vcGVyYW5kLgoJKiBjb25maWcvaTM4Ni9wZW50aXVtLm1kOiBMaWtld2lzZS4KCjIwMDMtMTItMzAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAZ3JlZWQubG9jYWw+CgoJKiBkb2MvdG0udGV4aSAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IERlc2NyaWJlIHVzZSBvZiBOT19SRUdTCgl3aXRoIGNvbnN0YW50cy4KCjIwMDMtMTItMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IFR1cm4gYml0ZmllbGRzIGludG8gb3JkaW5hcnkKCWZpZWxkcywgZXZlbiBpZiB0aGV5IGFyZSB0aGUgZmlyc3QgZmllbGQgaW4gYSBzdHJ1Y3R1cmUuCgoyMDAzLTEyLTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPENPTkRfRVhQUj46IERvbid0IHJlcXVpcmUgc3RyaWN0IHR5cGUKCWVxdWFsaXR5LCBpbnN0ZWFkIGp1c3QgcHJldmVudCByZXBsYWNpbmcgYSBDT05EX0VYUFIgb2Ygbm9uLXZvaWQKCXR5cGUgYnkgb25lIG9mIGl0cyBvcGVyYW5kcyBvZiB2b2lkIHR5cGUuCgoyMDAzLTEyLTMwICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZG9jL2MtdHJlZS50ZXhpOiBGaXggQGl0ZW0gdnMuIEBpdGVteC4KCSogZG9jL2NwcC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2luc3RhbGwudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgoyMDAzLTEyLTMwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYXBwbHlfYXJnc18xKTogRml4IHR5cG8gaW4gcHJldmlvdXMKCWNoYW5nZS4KCjIwMDMtMTItMzAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvMTE5MzYKCSogaTM4Ni5oIChDTEFTU19MSUtFTFlfU1BJTExFRF9QKTogUmV0dXJuIHRydWUgZm9yCglGUF9UT1BfUkVHL0ZQX1NFQ09ORF9SRUcuCgoyMDAzLTEyLTMwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJQmFja3BvcnQgZnJvbSB0cmVlLXNzYSAocmVsZXZhbnQgY2hhbmdlcyBvbmx5KToKCTIwMDMtMTItMTggIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGV0LWZvcmVzdC5oIChldF9mb3Jlc3RfY3JlYXRlLCBldF9mb3Jlc3RfZGVsZXRlLAoJZXRfZm9yZXN0X2FkZF9ub2RlLCBldF9mb3Jlc3RfYWRkX2VkZ2UsIGV0X2ZvcmVzdF9yZW1vdmVfbm9kZSwKCWV0X2ZvcmVzdF9yZW1vdmVfZWRnZSwgZXRfZm9yZXN0X3BhcmVudCwKCWV0X2ZvcmVzdF9jb21tb25fYW5jZXN0b3IsIGV0X2ZvcmVzdF9ub2RlX3ZhbHVlLAoJZXRfZm9yZXN0X2VudW1lcmF0ZV9zb25zKTogRGVjbGFyYXRpb25zIHJlbW92ZWQuCgkoc3RydWN0IGV0X25vZGUpOiBOZXcuCgkoZXRfbmV3X3RyZWUsIGV0X2ZyZWVfdHJlZSwgZXRfc2V0X2ZhdGhlciwgZXRfc3BsaXQsIGV0X25jYSwKCWV0X2JlbG93KTogRGVjbGFyZS4KCSogZXQtZm9yZXN0LmMgKHN0cnVjdCBldF9mb3Jlc3Rfb2NjdXJyZW5jZSwgc3RydWN0IGV0X2ZvcmVzdCwKCXN0cnVjdCBldF9mb3Jlc3Rfbm9kZSk6IFJlbW92ZWQuCgkoZXRfZm9yZXN0X2NyZWF0ZSwgZXRfZm9yZXN0X2RlbGV0ZSwKCWV0X2ZvcmVzdF9hZGRfbm9kZSwgZXRfZm9yZXN0X2FkZF9lZGdlLCBldF9mb3Jlc3RfcmVtb3ZlX25vZGUsCglldF9mb3Jlc3RfcmVtb3ZlX2VkZ2UsIGV0X2ZvcmVzdF9wYXJlbnQsCglldF9mb3Jlc3RfY29tbW9uX2FuY2VzdG9yLCBldF9mb3Jlc3Rfbm9kZV92YWx1ZSwKCWV0X2ZvcmVzdF9lbnVtZXJhdGVfc29ucywgc3BsYXksIHJlbW92ZV9hbGxfb2NjdXJyZW5jZXMsCglmaW5kX2xlZnRtb3N0X25vZGUsIGZpbmRfcmlnaHRtb3N0X25vZGUsIGNhbGN1bGF0ZV92YWx1ZSk6IFJlbW92ZWQuCgkoc3RydWN0IGV0X29jYyk6IE5ldy4KCShldF9ub2RlcywgZXRfb2NjdXJlbmNlcyk6IE5ldy4KCShzZXRfZGVwdGgsIHNldF9kZXB0aF9hZGQsIHNldF9wcmV2LCBzZXRfbmV4dCwgZXRfcmVjb21wX21pbiwKCWV0X2NoZWNrX29jY19zYW5pdHksIGV0X2NoZWNrX3Nhbml0eSwgZXRfY2hlY2tfdHJlZV9zYW5pdHksCglyZWNvcmRfcGF0aF9iZWZvcmVfMSwgcmVjb3JkX3BhdGhfYmVmb3JlLCBjaGVja19wYXRoX2FmdGVyXzEsCgljaGVja19wYXRoX2FmdGVyLCBldF9zcGxheSwgZXRfbmV3X29jYywgZXRfbmV3X3RyZWUsCglldF9mcmVlX3RyZWUsIGV0X3NldF9mYXRoZXIsIGV0X3NwbGl0LCBldF9uY2EsIGV0X2JlbG93KTogTmV3LgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgYmFzaWNfYmxvY2tfZGVmKTogTmV3IGZpZWxkIGRvbS4KCShzdHJ1Y3QgZG9taW5hbmNlX2luZm8pOiBUeXBlIHJlbW92ZWQuCgkoY2FsY3VsYXRlX2RvbWluYW5jZV9pbmZvLCBmcmVlX2RvbWluYW5jZV9pbmZvLAoJbmVhcmVzdF9jb21tb25fZG9taW5hdG9yLCBzZXRfaW1tZWRpYXRlX2RvbWluYXRvciwKCWdldF9pbW1lZGlhdGVfZG9taW5hdG9yLCBkb21pbmF0ZWRfYnlfcCwgZ2V0X2RvbWluYXRlZF9ieSwKCWFkZF90b19kb21pbmFuY2VfaW5mbywgZGVsZXRlX2Zyb21fZG9taW5hbmNlX2luZm8sCglyZWNvdW50X2RvbWluYXRvciwgcmVkaXJlY3RfaW1tZWRpYXRlX2RvbWluYXRvcnMsCglpdGVyYXRlX2ZpeF9kb21pbmF0b3JzLCB2ZXJpZnlfZG9taW5hdG9ycyk6IERlY2xhcmF0aW9ucwoJY2hhbmdlZC4KCShlbnVtIGRvbV9zdGF0ZSk6IE5ldy4KCShkb21fY29tcHV0ZWQpOiBOZXcgdmFyaWFibGUuCgkoZmlyc3RfZG9tX3NvbiwgbmV4dF9kb21fc29uKTogRGVjbGFyZS4KCSogZG9taW5hbmNlLmMgKHN0cnVjdCBkb21pbmFuY2VfaW5mbyk6IFJlbW92ZWQuCgkoQkJfTk9ERSwgU0VUX0JCX05PREUpOiBSZW1vdmVkLgoJKGNhbGN1bGF0ZV9kb21pbmFuY2VfaW5mbywgZnJlZV9kb21pbmFuY2VfaW5mbywKCW5lYXJlc3RfY29tbW9uX2RvbWluYXRvciwgc2V0X2ltbWVkaWF0ZV9kb21pbmF0b3IsCglnZXRfaW1tZWRpYXRlX2RvbWluYXRvciwgZG9taW5hdGVkX2J5X3AsIGdldF9kb21pbmF0ZWRfYnksCglhZGRfdG9fZG9taW5hbmNlX2luZm8sIGRlbGV0ZV9mcm9tX2RvbWluYW5jZV9pbmZvLAoJcmVjb3VudF9kb21pbmF0b3IsIHJlZGlyZWN0X2ltbWVkaWF0ZV9kb21pbmF0b3JzLAoJaXRlcmF0ZV9maXhfZG9taW5hdG9ycywgdmVyaWZ5X2RvbWluYXRvcnMsCglkZWJ1Z19kb21pbmFuY2VfaW5mbyk6IFdvcmsgb3ZlciBuZXcgZGF0YXN0cnVjdHVyZS4gIEFjY2VzcwoJZG9taW5hbmNlIGRhdGFzdHJ1Y3R1cmVzIHRocm91Z2ggQ0ZHLgoJKGFzc2lnbl9kZnNfbnVtYmVycywgY29tcHV0ZV9kb21fZmFzdF9xdWVyeSwgZmlyc3RfZG9tX3NvbiwKCW5leHRfZG9tX3Nvbik6IE5ldy4KCSogYnQtbG9hZC5jIChkb20pOiBWYXJpYWJsZSByZW1vdmVkLgoJKGF1Z21lbnRfbGl2ZV9yYW5nZSwgY29tYmluZV9idHJfZGVmcywgbWlncmF0ZV9idHJfZGVmLAoJbWlncmF0ZV9idHJfZGVmcywgYnJhbmNoX3RhcmdldF9sb2FkX29wdGltaXplKTogVXBkYXRlZCBmb3IgdGhlCgluZXcgaW50ZXJmYWNlIGZvciBkb21pbmFuY2UgaW5mb3JtYXRpb24uCgkqIGNmZy5jIHtleGl0X2VudHJ5X2Jsb2Nrcyk6IFVwZGF0ZSBpbml0aWFsaXplci4KCSogY2ZnbGF5b3V0LmMgKGNvcHlfYmJzKTogUmVtb3ZlZCBsb29wcyBhcmd1bWVudC4gVXBkYXRlZCBmb3IKCXRoZSBuZXcgaW50ZXJmYWNlIGZvciBkb21pbmFuY2UgaW5mb3JtYXRpb24uCgkqIGNmZ2xheW91dC5oIChjb3B5X2Jicyk6IERlY2xhcmF0aW9uIGNoYW5nZWQuCgkqIGNmZ2xvb3AuYyAoZmxvd19sb29wX3ByZV9oZWFkZXJfZmluZCwgZmxvd19sb29wc19jZmdfZHVtcCwKCWZsb3dfbG9vcF9zY2FuLCBjYW5vbmljYWxpemVfbG9vcF9oZWFkZXJzLCBmbG93X2xvb3BzX2ZpbmQpOiBVcGRhdGVkCglmb3IgdGhlIG5ldyBpbnRlcmZhY2UgZm9yIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCShmbG93X2xvb3Bfc2Nhbik6IExvb3BzIGFyZ3VtZW50IHJlbW92ZWQuCgkoZmxvd19sb29wc19mcmVlKTogRG9uJ3QgcmVsZWFzZSBkb21pbmF0b3JzLgoJKiBjZmdsb29wLmggKHN0cnVjdCBjZmcpOiBEb20gZmllbGQgcmVtb3ZlZC4KCShmbG93X2xvb3Bfc2NhbiwgbG9vcF9zcGxpdF9lZGdlX3dpdGgsIHNpbXBsZV9sb29wX3AsCglqdXN0X29uY2VfZWFjaF9pdGVyYXRpb25fcCwgc3BsaXRfbG9vcF9iYik6IERlY2xhcmF0aW9uIGNoYW5nZWQuCgkqIGNmZ2xvb3BhbmFsLmMgKHNpbXBsZV9sb29wX2V4aXRfcCwgc2ltcGxlX2luY3JlbWVudCwKCWp1c3Rfb25jZV9lYWNoX2l0ZXJhdGlvbl9wLCBzaW1wbGVfbG9vcF9wKTogUmVtb3ZlIGxvb3BzIGFyZ3VtZW50LgoJVXBkYXRlZCBmb3IgdGhlIG5ldyBpbnRlcmZhY2UgZm9yIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSogY2ZnbG9vcG1hbmlwLmMgKHJlbW92ZV9iYnMsIGZpbmRfcGF0aCwgY3JlYXRlX3ByZWhlYWRlciwKCXNwbGl0X2xvb3BfYmIsIGxvb3BpZnksIGR1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlLAoJZm9yY2Vfc2luZ2xlX3N1Y2NfbGF0Y2hlcywgbG9vcF9zcGxpdF9lZGdlX3dpdGgpOiBEaXR0by4KCSogZ2NzZS5jIChkb21pbmF0b3JzKTogVmFyaWFibGUgcmVtb3ZlZC4KCShmcmVlX2NvZGVfaG9pc3RfbWVtLCBjb21wdXRlX2NvZGVfaG9pc3RfZGF0YSwgaG9pc3RfY29kZSk6CglVcGRhdGVkIGZvciB0aGUgbmV3IGludGVyZmFjZSBmb3IgZG9taW5hbmNlIGluZm9ybWF0aW9uLgoJKiBpZmN2dC5jIChwb3N0X2RvbWluYXRvcnMpOiBWYXJpYWJsZSByZW1vdmVkLgoJKG1hcmtfbG9vcF9leGl0X2VkZ2VzLCBtZXJnZV9pZl9ibG9jaywgZmluZF9pZl9oZWFkZXIsCglmaW5kX2NvbmRfdHJhcCwgZmluZF9pZl9jYXNlXzEsIGZpbmRfaWZfY2FzZV8yLCBpZl9jb252ZXJ0KToKCVVwZGF0ZWQgZm9yIHRoZSBuZXcgaW50ZXJmYWNlIGZvciBkb21pbmFuY2UgaW5mb3JtYXRpb24uCgkqIGxvb3AtaW5pdC5jIChydGxfbG9vcF9vcHRpbWl6ZXJfaW5pdCwKCXJ0bF9sb29wX29wdGltaXplcl9maW5hbGl6ZSk6IERpdHRvLgoJKiBsb29wLXVucm9sbC5jIChkZWNpZGVfcGVlbF9zaW1wbGUsIGRlY2lkZV9wZWVsX29uY2Vfcm9sbGluZywKCWRlY2lkZV9wZWVsX2NvbXBsZXRlbHksIGRlY2lkZV91bnJvbGxfc3R1cGlkLAoJZGVjaWRlX3Vucm9sbF9jb25zdGFudF9pdGVyYXRpb25zLAoJZGVjaWRlX3Vucm9sbF9ydW50aW1lX2l0ZXJhdGlvbnMpOiBMb29wcyBhcmd1bWVudCByZW1vdmVkLgoJVXBkYXRlZCBmb3IgdGhlIG5ldyBpbnRlcmZhY2UgZm9yIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSh1bnJvbGxfYW5kX3BlZWxfbG9vcHMsIHBlZWxfbG9vcHNfY29tcGxldGVseSwKCXVucm9sbF9sb29wX3J1bnRpbWVfaXRlcmF0aW9ucyk6IFVwZGF0ZWQgZm9yIHRoZSBuZXcgaW50ZXJmYWNlIGZvcgoJZG9taW5hbmNlIGluZm9ybWF0aW9uLgoJKiBsb29wLXVuc3dpdGNoLmMgKG1heV91bnN3aXRjaF9vbl9wLCB1bnN3aXRjaF9sb29wcywKCXVuc3dpdGNoX3NpbmdsZV9sb29wLCB1bnN3aXRjaF9sb29wKTogVXBkYXRlZCBmb3IgdGhlIG5ldwoJaW50ZXJmYWNlIGZvciBkb21pbmFuY2UgaW5mb3JtYXRpb24uCgkqIHByZWRpY3QuYyAocHJvY2Vzc19ub3RlX3ByZWRpY3Rpb25zLCBwcm9jZXNzX25vdGVfcHJlZGljdGlvbiwKCWVzdGltYXRlX3Byb2JhYmlsaXR5LCBub3RlX3ByZWRpY3Rpb25fdG9fYnJfcHJvYik6IERpdHRvLgoJKiBzY2hlZC1yZ24uYyAoZmluZF9yZ25zLCBpbml0X3JlZ2lvbnMpOiBEaXR0by4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2JyYW5jaF9wcm9iKTogRnJlZSB0aGUgZG9taW5hdG9ycy4KCjIwMDMtMTItMzAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvMTM0NTYKCSogaTM4Ni5tZCAoYWxsb2NhdGVfc3RhY2tfd29ya2VyKTogIFVzZSBkaWZmZXJlbnQgcGF0dGVybiBmb3IgcHJlIGFuZAoJcG9zdCByZWxvYWQgZXhwYW5zaW9uLgoJKGFsbG9jYXRlX3N0YWNrX3dvcmtlcl8xLCBhbGxvY2F0ZV9zdGFja193b3JrZXJfcmV4NjQpOiBVc2UKCW1hdGNoX3NjcmF0Y2guCgkoYWxsb2NhdGVfc3RhY2tfd29yZGVyXzFfcG9zdHJlbG9hZCwKCWFsbG9jYXRlX3N0YWNrX3dvcmtlcl9yZXg2NF9wb3N0cmVsb2FkKTogTmV3LgoKMjAwMy0xMi0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2FwcGx5X2FyZ3NfMSk6IEFkZCBwcmV0ZW5kIGFyZ3Mgc2l6ZQoJdG8gdGhlIHZpcnR1YWwgaW5jb21pbmcgYXJncyBwb2ludGVyIGZvciBkb3dud2FyZCBzdGFja3MuCgoyMDAzLTEyLTI5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBmb3J0cmFuLzEyNjMyCgkqIGZvbGQtY29uc3QuYyAoZm9sZCkgPENPTkRfRVhQUj46IERvbid0IGZvbGQgYSBjb25zdGFudCBjb25kaXRpb24sCglpZiB0aGUgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgYnJhbmNoIGRvZXNuJ3QgbWF0Y2ggaXRzJyBwYXJlbnQuCgoyMDAzLTEyLTI5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb3ZlcmFnZS5jIChyZWFkX2NvdW50c19maWxlKTogQmV0dGVyIGVycm9yIG1lc3NhZ2VzOyBjYXVzZSBjb3JydXB0ZWQKCXByb2ZpbGVzIHRvIHByb2R1Y2UgaGFyZCBlcnJvcnMsIG5vdCBqdXN0IHdhcm5pbmdzCgkoZ2V0X2NvdmVyYWdlX2NvdW50cyk6IFNpbWlsYXJseS4KCgkqIHRvcGxldi5jIChyZXN0X29mX2hhbmRsZV9sb29wX29wdGltaXplKTogRW5hYmxlIExPT1BfQVVUT19VTlJPTEwuCgoyMDAzLTEyLTI5ICBQaGlsIEVkd2FyZHMgIDxwaGlsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvY3Bwb3B0cy50ZXhpOiAgVXNlIG9mIC1pZGlyYWZ0ZXIsIC1pcHJlZml4LCAtaXdpdGhwcmVmaXgsIGFuZAoJLWl3aXRocHJlZml4YmVmb3JlIGlzIG5vdCBkaXNjb3VyYWdlZC4KCjIwMDMtMTItMjggIE1vc3RhZmEgSGFnb2cgIDxtdXN0YWZhQGlsLmlibS5jb20+CgoJKiBzYml0bWFwLmMgKHNiaXRtYXBfdW5pb25fb2ZfZGlmZl9jZywgc2JpdG1hcF9hX2FuZF9iX2NnLAoJc2JpdG1hcF9hX3hvcl9iX2NnKTogQWNjdW11bGF0ZSAiY2hhbmdlZCIgcHJvcGVybHkuCgkoc2JpdG1hcF9ub3QpOiBaZXJvIGFsbCBiaXRzIHBhc3Qgbl9iaXQuCgoyMDAzLTEyLTI3ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgb3B0LzEzMTU5CgkqIGNmZ2xvb3BhbmFsLmMgKG1hcmtfaXJyZWR1Y2libGVfbG9vcHMpOiBGaXggdGhlIHN0cm9uZ2x5IGNvbm5lY3RlZAoJY29tcG9uZW50cyBkZXRlY3Rpb24uCgkqIGxvb3AtdW5zd2l0Y2guYyAodW5zd2l0Y2hfbG9vcCk6IFByZXNlcnZlIHNpbXBsZSBwcmVoZWFkZXJzLgoKMjAwMy0xMi0yNyAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvdWNsaW51eC5oIChMSUJfU1BFQyk6IEFkZCBlbGYyZmx0IG1hZ2ljIHJlcXVpcmVkIGZvcgoJY29ycmVjdCBsaW5raW5nIG9mIGV4ZWN1dGFibGVzIHVzaW5nIGlkLWJhc2VkIHNoYXJlZCBsaWJyYXJpZXMuCgoyMDAzLTEyLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4Lmg6IFJlbW92ZSB1c2VzIG9mICJyZWdpc3RlciIKCXNwZWNpZmllciBpbiBkZWNsYXJhdGlvbnMgb2YgYXJndW1lbnRzIGFuZCBsb2NhbCB2YXJpYWJsZXMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODZlbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3B0eDQtaS5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvc3lzdjQuaDogTGlrZXdpc2UuCgoyMDAzLTEyLTI2ICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCSAgICBHZW9mZnJleSBLZWF0aW5nIDxnZW9mZmtAYXBwbGUuY29tPgoJICAgIERhdmlkIEVkZWxzb2huIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wKTogRG8gbm90CglyZXN0cmljdCBERm1vZGUgYW5kIFRGbW9kZSB0byB3b3JkIGFsaWdubWVudC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdmRmX2hhcmRmbG9hdDY0KTogVXNlICdvJyBjb25zdHJhaW50Cglmb3IgbGQvc3RkIGFuZCBvcmRlciBiZWZvcmUgbXIuCgoyMDAzLTEyLTI2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoTElOS19DT01NQU5EX1NQRUMpOiBBcnJhbmdlCgktZnByb2ZpbGUtZ2VuZXJhdGUgdG8gaW1wbHkgLWxnY292LgoKMjAwMy0xMi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAobGRtX2g4MzAwc18yX25vcm1hbCk6IFVzZSBISW1vZGUgZm9yCglhZGRyZXNzZXMuCgoyMDAzLTEyLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL20zMnIvbTMyci5tZDogUmVtb3ZlIGEgY29uc3RyYWludCBmcm9tIGEgc3BsaXR0ZXIuCgoyMDAzLTEyLTI1ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBDKysvMTM0MjksIEMvMTE5NDQKCSogYy1jb21tb24uYyAoY19idWlsZF9xdWFsaWZpZWRfdHlwZSk6IFJldHVybiBlYXJseSB3aGVuIHR5cGUgaXMKCWVycm9yX21hcmtfbm9kZS4KCShjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IExpa2V3aXNlLgoKMjAwMy0xMi0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1tb2Rlcy5kZWY6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvbGliMWZ1bmNzLmFzbTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9vcGVuYnNkLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvdm1zLWNjLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvdm1zLWNydDAtNjQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS92bXMtY3J0MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL3Ztcy1sZC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL3Ztcy1wc3hjcnQwLTY0LmM6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvdm1zLXBzeGNydDAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS92bXMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcmMvYXJjLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FvZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0tbW9kZXMuZGVmOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL3Z4d29ya3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hdnIvYXZyLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYXZyL2F2ci5oOiBMaWtld2lzZS4KCjIwMDMtMTItMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcveHRlbnNhL2VsZi5oOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmM6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oOiBMaWtld2lzZS4KCjIwMDMtMTItMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXZyL2F2ci5jOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjb25maWcvYXZyL2F2ci5tZDogTGlrZXdpc2UuCgoyMDAzLTEyLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCVBSIHRhcmdldC8xMjcyMS4KCSogY29uZmlnL2F2ci9hdnIuYzogSW5jbHVkZSBnZ2MuaC4KCSh0bXBfcmVnX3J0eCk6IERlY2xhcmUgd2l0aCBHVFkuCgkoemVyb19yZWdfcnR4KTogTGlrZXdpc2UuCgkobGRpX3JlZ19ydHgpOiBSZW1vdmUuCgkoYXZyX292ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIHplcm9fcmVnX3J0eCBhbmQKCWxkaV9yZWdfcnR4LgoJKGF2cl9pbml0KTogUmVtb3ZlLgoJSW5jbHVkZSBndC1hdnIuaC4KCSogY29uZmlnL2F2ci9hdnIuaCAoTERJX1JFR19SRUdOTyk6IFJlbW92ZS4KCVJlbW92ZSBleHRlcm5zIGZvciB0bXBfcmVnX3J0eCwgemVyb19yZWdfcnR4LCBhbmQgbGRpX3JlZ19ydHguCgoyMDAzLTEyLTI0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgUG93ZXJQQyB2ZWN0b3IgcmVnaXN0ZXIgY29uc3RyYWludCBsZXR0ZXIuCgoyMDAzLTEyLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBSZWNvZ25pemUgY2FsbHMgdG8gInNxcnQiIGFuZCBjcmVhdGUKCWNvcnJlc3BvbmRpbmcgbm90ZXMuCgoyMDAzLTEyLTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBVc2UgYGluZm9ybScgaW5zdGVhZAoJb2YgYHdhcm5pbmcnIGZvciAtZyAtbWFiaT0zMiBhbmQgbmF0aXZlIGFzc2VtYmxlci4KCgkqIGNvbmZpZy9taXBzL3QtaXJpczYgKENSVFNUVUZGX1RfQ0ZMQUdTLCBUQVJHRVRfTElCR0NDMl9DRkxBR1MpOgoJRG9uJ3QgcGFzcyAtV25vLWVycm9yLgoKMjAwMy0xMi0yMyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogVXBkYXRlIG1heF9wYXJtX3JlZyBhbmQKCXBhcm1fcmVnX3N0YWNrX2xvYyB3aGVuIGFkZGluZyBuZXcgcGFybSByZWcuCgoyMDAzLTEyLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL25zMzJrL25zMzJrLmM6IENvbnZlcnQgdG8gSVNPLUMuCgoyMDAzLTEyLTIzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3ZhX2FyZyk6IFBhc3MgcG9pbnRlciBmb3IKCXZhcmlhYmxlLXNpemVkIHR5cGUgdGhyb3VnaCBjb252ZXJ0X21lbW9yeV9hZGRyZXNzLgoJKGlhNjRfaW5fc21hbGxfZGF0YV9wKTogQWx3YXlzIHJldHVybiBmYWxzZSBmb3IgRlVOQ1RJT05fREVDTHMuCgoyMDAzLTEyLTIzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21tb24ub3B0IChmcHJvZmlsZS1nZW5lcmF0ZSxmcHJvZmlsZS11c2UpOiBBZGQuCgkqIGdjYy5jIChMSU5LX0NPTU1BTkRfU1BFQyk6IEFycmFuZ2UgLWZwcm9maWxlLWdlbmVyYXRlIHRvIGltcGx5IC1sZ2NvdgoJKiBvcHRzLmMgKHByb2ZpbGVfYXJjX2ZsYWdfc2V0LCBmbGFnX3Byb2ZpbGVfdmFsdWVzX3NldCwKCWZsYWdfdW5yb2xsX2xvb3BzX3NldCwgZmxhZ190cmFjZXJfc2V0LAoJZmxhZ192YWx1ZV9wcm9maWxlX3RyYW5zZm9ybWF0aW9uc19zZXQsCglmbGFnX3BlZWxfbG9vcHNfc2V0KTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBEZWFsIHdpdGggLWZwcm9maWxlLWdlbmVyYXRlLy1mcHJvZmlsZS11c2UKCSogaW52b2tlLnRleGkgKC1mcHJvZmlsZS1nZW5lcmF0ZSwgLWZwcm9maWxlLXVzZSk6IERlc2NyaWJlLgoKMjAwMy0xMi0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IFJlbW92ZSBkd2FyZm91dC5vLgoJKGR3YXJmb3V0Lm8pOiBSZW1vdmUuCgkqIGNvbW1vbi5vcHQ6IFJlbW92ZSAtZ2R3YXJmLCAtZ2R3YXJmKy4KCSogZGVmYXVsdHMuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogRG8gbm90IGNoZWNrIGZvcgoJRFdBUkZfREVCVUdHSU5HX0lORk8uCgkqIGR3YXJmMm91dC5jOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiBkd2FyZm91dC5jOiBSZW1vdmUuCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBSZW1vdmUgT1BUX2dkd2FyZiwgT1BUX2dkd2FyZl8uCgkqIHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBSZW1vdmUgY2hlY2sgZm9yCglEV0FSRl9ERUJVR0dJTkdfSU5GTy4KCSogY29uZmlnL2VsZm9zLmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogRG8gbm90ICNkZWZpbmUgaXQgb3IKCSN1bmRlZiBpdC4KCSogY29uZmlnL25ldHdhcmUuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL3B0eDQuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL3Z4d29ya3MuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL3VuaWNvc21rLmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcmMvYXJjLmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3NjbzUuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYveDg2LTY0LmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLWVsZi5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbGl0ZWVsZi5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc29sMjYtc2xkLmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcDg2eC1lbGYuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBEbyBub3QgbWVudGlvbiAtZ2R3YXJmLCAtZ2R3YXJmLTEsIC1nZHdhcmYtMSssCglvciAtZ2R3YXJmKy4KCSogZG9jL3RtLnRleGk6IExpa2V3aXNlLgoKCSogYy1jb21tb24uYyAoZmxhZ19hYmlfdmVyc2lvbik6IERlZmF1bHQgdG8gMi4KCSogYy1jcHBidWlsdGluLmMgKGNfY3BwX2J1aWx0aW5zKTogRGVmaW5lIF9fR1hYX0FCSV9WRVJTSU9OCgl1bmlmb3JtbHkgZm9yIHZlcnNpb25zIGFib3ZlIDIuCgkqIGRvYy9pbnZva2UudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIC1mYWJpLXZlcnNpb24uCgoyMDAzLTEyLTIyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBDaGFuZ2UgbWFueSBpbnN0YW5jZXMgb2YgJyEKCVRBUkdFVF9QT1dFUlBDNjQnIHRvICdUQVJHRVRfMzJCSVQnIHdoZW4gdGhlIHBhdHRlcm4gYmVpbmcgZ3VhcmRlZAoJd2FzIGd1YXJkZWQgb25seSBiZWNhdXNlIGl0IGNoYW5nZWQgQ1IwIG9yIHRoZSBjYXJyeSBiaXQgaW4gWEVSLgoKMjAwMy0xMi0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTMzOTQKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBNb3ZlIGNhbGwgdG8KCWNoZWNrX2Z1bmN0aW9uX3JldHVybl93YXJuaW5ncyByaWdodCBhZnRlciB0aGUgc2liY2FsbAoJb3B0aW1pemF0aW9uIHBhc3MuCgoyMDAzLTEyLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIGMvMTMzODIKCSogYy10eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFdoZW4gY29udmVydGluZyBmcm9tCglpbnRlZ3JhbCB0eXBlIHRvIHBvaW50ZXIgdHlwZSwgYWx3YXlzIGNhbGwgY29udmVydC4KCjIwMDMtMTItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IERlcHJlY2F0ZSAtZndyaXRhYmxlLXN0cmluZ3MuCgoJKiBjLWNvbW1vbi5jIChmbGFnX2V4dGVybmFsX3RlbXBsYXRlcyk6IFJlbW92ZS4KCShmbGFnX2FsdF9leHRlcm5hbF90ZW1wbGF0ZXMpOiBMaWtld2lzZS4KCSogYy1jb21tb24uaCAoZmxhZ19leHRlcm5hbF90ZW1wbGF0ZXMpOiBSZW1vdmUuCgkoZmxhZ19hbHRfZXh0ZXJuYWxfdGVtcGxhdGVzKTogTGlrZXdpc2UuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogVW5zdXBwb3J0CgktZmFsdC1leHRlcm5hbC10ZW1wbGF0ZXMgYW5kIC1mdGVtcGxhdGVzLgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSBtZW50aW9uIG9mIC1mZXh0ZXJuYWwtdGVtcGxhdGVzIGFuZAoJLWZhbHQtZXh0ZXJuYWwtdGVtcGxhdGVzLgoKMjAwMy0xMi0yMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzEzNDY2CgkqIGNvbmZpZy5nY2MgKHBvd2VycGMtKi1kYXJ3aW4pOiBSZW1vdmUgb3ZlcnJpZGRlbiB2YWx1ZSBvZiBuZWVkXzY0Yml0X2h3aW50LgoKCSogZW1pdC1ydGwuYyAoY29weV9ydHhfaWZfc2hhcmVkKTogQWRkIGNvbW1lbnQgYWJvdXQgaXRzIHVzZSBvZgoJY29weV9ydHhfaWZfc2hhcmVkXzEuCgkoY29weV9ydHhfaWZfc2hhcmVkXzEpOiBBZGQgY29tbWVudCBhYm91dCB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzLgoKCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IENoYW5nZSBvcmRlciBvZiBjaGVja3MuCgkoY19leHBhbmRfYm9keSk6IExpa2V3aXNlLgoKMjAwMy0xMi0yMiAgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChsZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3ApOiBDb3JyZWN0CgljaGVjayBmb3IgdGhlIGxlZ2l0aW1hdGUgb2Zmc2V0IHdoZW4gbWVtb3J5IG9mCglESW1vZGUvREZtb2RlL1RGbW9kZS9USW1vZGUgbW9kZSBpcyBiZWluZyByZWZlcmVuY2VkIGFuZCB0YXJnZXQKCWlzIFRBUkdFVF9QT1dFUlBDNjQuCgoyMDAzLTEyLTIyICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiByZWxvYWQxLmM6ICBBZGQgcmVnX3JlbG9hZGVkX2NhbGxfcGFydF9jbG9iYmVyZWQuCgkocmVsb2FkX2FzX25lZWRlZCk6ICBVc2UgaXQuCgkoZm9yZ2V0X29sZF9yZWxvYWRzXzEpOiAgRGl0dG8uCgkoZW1pdF9yZWxvYWRfaW5zbnMpOiAgRGl0dG8uCgoyMDAzLTEyLTIyICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEyODI4CgkqIGxvb3AuYzogIEFkZCBmaW5kX3JlZ3NfbmVzdGVkIHRvIGxvb2sgaW5zaWRlIENMT0JCRVIoTUVNKS4KCShzY2FuX2xvb3ApOiAgQ2FsbCBpdC4KCSogcmVnY2xhc3MuYyAocmVnX3NjYW5fbWFya19yZWdzKTogIExvb2sgaW5zaWRlIENMT0JCRVIoTUVNKS4KCjIwMDMtMTItMjIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMvOTE2MwoJKiBjLWRlY2wuYyAocG9wbGV2ZWwpOiBPbmx5IHNldCBERUNMX0lOSVRJQUwgb2YgYSBjdXJyZW50IGZ1bmN0aW9uCglpZiBpdCBpcyBub24tbnVsbC4KCShmaW5pc2hfZnVuY3Rpb24pOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlIG9yIG51bGwgb24gREVDTF9SRVNVTFQgYW5kCglERUNMX1JFU1VMVCBvZiBmbmRlY2wuCgkoY19leHBhbmRfYm9keSk6IE9ubHkgZXhwYW5kIHdoZW4gREVDTF9JTklUSUFMIG9mIGZuZGVjbCBpcyBub3QKCWVycm9yX21hcmtfbm9kZSBhbmQgbm90IG51bGwuCgoyMDAzLTEyLTIxICBEYW4gTmljb2xhZXNjdSAgPGRhbm5AaWNzLnVjaS5lZHU+CgoJKiBydGwuaCAoZHVtcF9ydHhfc3RhdGlzdGljcyk6IERlY2xhcmUgaXQuCgkqIHJ0bC5jIChydHhfYWxsb2NfY291bnRzLCBydHhfYWxsb2Nfc2l6ZXMsIHJ0dmVjX2FsbG9jX2NvdW50cywKCXJ0eF9hbGxvY19zaXplcyk6IE5ldyBzdGF0aWMgdmFycy4KCShydHhfYWxsb2MsIHJ0dmVjX2FsbG9jKTogVXBkYXRlIHRoZW0uCgkoZHVtcF9ydHhfc3RhdGlzdGljcyk6IE5ldyBmdW5jdGlvbi4KCSogdG9wbGV2LmMgKGZpbmFsaXplKTogQ2FsbCBpdC4KCSogZ2djLXBhZ2UuYyAoc3RydWN0IGdsb2JhbHMpOiBGaXggY29tbWVudHMuIEFkZCBuZXcgbWVtYmVyCgl0b3RhbF9hbGxvY2F0ZWRfcGVyX29yZGVyLgoJKGdnY19hbGxvYyk6IEtlZXAgdHJhY2sgb2YgdGhlIHRvdGFsIGFsbG9jYXRlZCBtZW1vcnkuCgkoZ2djX3ByaW50X3N0YXRpc3RpY3MpOiBDbGFyaWZ5IG1lc3NhZ2UuIFByaW50IHRvdGFsIGFsbG9jYXRlZAoJbWVtb3J5IHN0YXRzLgoJKiBjb25maWd1cmUuaW4gKGdhdGhlci1kZXRhaWxlZC1tZW0tc3RhdHMpOiBOZXcgZmxhZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGRvYy9pbnN0YWxsLnRleGkgKENvbmZpZ3VyYXRpb24pOiBEb2N1bWVudAoJLS1lbmFibGUtZ2F0aGVyLWRldGFpbGVkLW1lbS1zdGF0cy4KCjIwMDMtMTItMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzeXN0ZW0uaCAoQ09OVkVSVF9IQVJEX1JFR0lTVEVSX1RPX1NTQV9QKTogUG9pc29uLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKENPTlZFUlRfSEFSRF9SRUdJU1RFUl9UT19TU0FfUCk6IFJlbW92ZS4KCjIwMDMtMTItMjEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2lhNjQvaHB1eC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9JTFAzMgoJd2hlbiBjb21waWxpbmcgaW4gSUxQMzIgbW9kZS4KCjIwMDMtMTItMjEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3Rsc19yZWZlcmVuY2VkX3ApOiBSZXR1cm4gZWFybHkgaWYKCVRBUkdFVF9IQVZFX1RMUyBpcyBmYWxzZS4KCjIwMDMtMTItMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaXAyay9pcDJrLXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWFzbV9vdXRwdXRfc2VjdGlvbl9uYW1lLgoJKiBjb25maWcvaXAyay9pcDJrLmMgKGFzbV9vdXRwdXRfc2VjdGlvbl9uYW1lKTogUmVtb3ZlLgoKMjAwMy0xMi0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFsaWFzLmM6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGFsbG9jLXBvb2wuYzogTGlrZXdpc2UuCgkqIGJpdG1hcC5jOiBMaWtld2lzZS4KCSogYml0bWFwLmg6IExpa2V3aXNlLgoJKiBidC1sb2FkLmM6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jOiBMaWtld2lzZS4KCSogYy1jb21tb24uaDogTGlrZXdpc2UuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4KCSogYy1vcHRzLmM6IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5jOiBMaWtld2lzZS4KCSogY2FsbGVyLXNhdmUuYzogTGlrZXdpc2UuCgkqIGNmZ2hvb2tzLmg6IExpa2V3aXNlLgoJKiBjZ3JhcGguYzogTGlrZXdpc2UuCgkqIGNvbGxlY3QyLmM6IExpa2V3aXNlLgoJKiBjcHBmaWxlcy5jOiBMaWtld2lzZS4KCSogY3BwbGliLmg6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogZmluYWwuYzogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmM6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoJKiBnZW5lbWl0LmM6IExpa2V3aXNlLgoJKiBnZ2MuaDogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmM6IExpa2V3aXNlLgoJKiBpZmN2dC5jOiBMaWtld2lzZS4KCSogbGliZ2NjMi5oOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogcHJlZGljdC5oOiBMaWtld2lzZS4KCSogdW53aW5kLWxpYnVud2luZC5jOiBMaWtld2lzZS4KCSogdmFyYXNtLmM6IExpa2V3aXNlLgoKMjAwMy0xMi0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRml4CglhIHdhcm5pbmcuCgoyMDAzLTEyLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FybS9hcm0uYzogQ29udmVydCB0byBJU08tQy4KCSogY29uZmlnL2F2ci9hdnIuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcDJrL2lwMmsuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYzogTGlrZXdpc2UuCgoyMDAzLTEyLTIwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnY2MuZ251Lm9yZz4KCSAgICBNYXR0IFRob21hcyAgPG1hdHRAM2FtLXNvZnR3YXJlLmNvbT4KCglQUiB0YXJnZXQvMTI3NDkKCSogY29uZmlnL2kzODYvaTM4Ni5jIChwcmludF9vcGVyYW5kKTogUHJpbnQgb25seSB0aGUgZmlyc3QKCTggY2hhcmFjdGVycyBvZiB0aGUgZmxvYXQgaW4gaGV4LgoKMjAwMy0xMi0yMCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmggKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBTaG9ydGVuIHNlcXVlbmNlIHdoZW4gZ2VuZXJhdGluZyBQQQoJMi4wIGNvZGUuCgkoVFJBTVBPTElORV9DT0RFX1NJWkUsIE1JTl9DQUNIRUxJTkVfU0laRSk6IE5ldyBkZWZpbmVzLgoJKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IFJld29yayB0byBwYXNzIGxpbmUgbGVuZ3RoLCBhbmQgYWxpZ25lZCBzdGFydAoJYW5kIGVuZCBhZGRyZXNzZXMgdG8gSSBhbmQgRCBjYWNoZSBpbnN0cnVjdGlvbiBwYXR0ZXJucy4KCSogcGEubWQgKGFuZGRpMywgaW9yZGkzKTogQ2hhbmdlIHByZWRpY2F0ZXMgb2Ygb3BlcmFuZHMgMSBhbmQgMiB0bwoJYW5kX29wZXJhbmQgYW5kIGlvcl9vcGVyYW5kLCByZXNwZWN0aXZlbHkuICBXaGVuIGdlbmVyYXRpbmcgNjQtYml0Cgljb2RlLCBvbmx5IG9uZSBvcGVyYW5kIG5lZWRzIHRvIGJlIGEgcmVnaXN0ZXIgb3BlcmFuZC4KCSh4b3JkaTMpOiBDaGFuZ2UgcHJlZGljYXRlcyBvZiBvcGVyYW5kcyAxIGFuZCAyIHRvIHJlZ2lzdGVyX29wZXJhbmQuCgkob25lX2NtcGxkaTIpOiBDaGFuZ2UgcHJlZGljYXRlIG9mIG9wZXJhbmQgMSB0byByZWdpc3Rlcl9vcGVyYW5kLgoJKGRjYWNoZWZsdXNoLCBpY2FjaGVmbHVzaCk6IFJldmlzZSB0byBmbHVzaCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCgljYWNoZSBsaW5lcy4KCjIwMDMtMTItMjAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglQUiBvcHRpbWl6YXRpb24vMTM0MzAsIFBSIG9wdGltaXphdGlvbi8xMjMyMgoJKiBiYi1yZW9yZGVyLmMgKGNvcHlfYmJfcCk6IERvIG5vdCBhbGxvdyBibG9jayB3aXRoIG1hbnkgc3VjY2Vzc29ycyB0bwoJYmUgY29waWVkLgoJKGZpbmRfdHJhY2VzXzFfcm91bmQpOiBTdXJyb3VuZCBjaGVjayBmb3IgZmFrZSBlZGdlcyBieQoJI2lmZGVmIEVOQUJMRV9DSEVDS0lORyAjZW5kaWYuCgoyMDAzLTEyLTIwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG90aGVyLzc5NTYKCSogZ2VubXVsdGlsaWI6IE5ldyB2YXJpYWJsZSBkaXNhYmxlX211bHRpbGliLiAgU2V0IGl0IHRvICd5ZXMnCglpZiBlbmFibGVfbXVsdGlsaWIgd2FzIHNldCB0byAnbm8nLiAgRW1pdCBESVNBQkxFX01VTFRJTElCCglpZiBkaXNhYmxlX211bHRpbGliIHdhcyBzZXQgdG8gJ3llcycuCgkqIGdjYy5jOiBJbmNsdWRlIG11bHRpbGliLmggYmVmb3JlIHRtLmguCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWJpLmggKExJTktfQVJDSF9TUEVDKTogRW1pdCBhbiBlcnJvcgoJbWVzc2FnZSBmb3IgbXVsdGlhcmNoIG9wdGlvbnMgaWYgRElTQUJMRV9NVUxUSUxJQiBpcyBzZXQuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWdsZC1iaS5oIChMSU5LX0FSQ0hfU1BFQyk6IExpa2V3aXNlLgoKMjAwMy0xMi0yMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBjLzEyMDg1CgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBJc3N1ZSBhIHdhcm5pbmcgaWYgYQoJZnVuY3Rpb24gaXMgY2FsbGVkIHRocm91Z2ggYW4gaW5jb21wYXRpYmxlIHByb3RvdHlwZSBhbmQKCXJlcGxhY2UgdGhlIGNhbGwgYnkgYSB0cmFwIGluIHRoaXMgY2FzZS4KCjIwMDMtMTItMTkgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGluc3RhbGwudGV4aSAoaWE2NC0qLWxpbnV4KTogRG9jdW1lbnQgbWluaW11bSBsaWJ1bndpbmQgdmVyc2lvbgoJbnVtYmVyLgoKMjAwMy0xMi0xOSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBsYW5naG9va3MuYyAobGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogIEZpeCBmb3IgUFIgYy8xMzExMC4KCURvbid0IGRvIHBwX25ld2xpbmU7IGl0IGNhdXNlcyBhbiBleHRyYSBibGFuayBsaW5lLgoJKiBwcmV0dHktcHJpbnQuYyAocHBfYmFzZV9mbHVzaCk6ICBDbGVhciBwcF9uZWVkc19uZXdsaW5lLgoKMjAwMy0xMi0xOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLmMgKGdldF91bndpZGVuZWQpOiBEZWNpZGUgd2hldGhlciB0byBuYXJyb3cgYSBiaXRmaWVsZAoJcmVmZXJlbmNlIGJhc2VkIG9uIFRZUEVfU0laRSwgbm90IFRZUEVfUFJFQ0lTSU9OLgoKCSogc3RtdC5jIChwYXJzZV9vdXRwdXRfY29uc3RyYWludCk6IFdhcm4gYWJvdXQgaW4tb3V0IGNvbnN0cmFpbnQKCXRoYXQgZG9lc24ndCBhbGxvdyBhIHJlZ2lzdGVyLgoJKHBhcnNlX2lucHV0X2NvbnN0cmFpbnQpOiBXYXJuIGFib3V0IG1hdGNoaW5nIGNvbnN0cmFpbnQgdGhhdAoJZG9lc24ndCBhbGxvdyBhIHJlZ2lzdGVyLgoKMjAwMy0xMi0xOSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogZmxvdy5jIChtYXJrX3NldF9yZWdzLCBjYXNlIFBBUkFMTEVMKTogU2NhbiBsb29wIGZvcndhcmRzLgoJQWRkIGNhc2UgZm9yIEFTTV9PUEVSQU5EUy4KCSogZ2xvYmFsLmMgKGdsb2JhbF9hbGxvYyk6IFNldCByZWdzX2V2ZXJfbGl2ZSBmb3IgcmVnc19hc21fY2xvYmJlcmVkCglyZWdpc3RlcnMuCgoyMDAzLTEyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwci5jIChjaGVja19tYXhfaW50ZWdlcl9jb21wdXRhdGlvbl9tb2RlKTogUmVtb3ZlLgoJKiBkb2p1bXAuYyAoZG9fanVtcCk6IERvbid0IHVzZSBNQVhfSU5URUdFUl9DT01QVVRBVElPTl9NT0RFLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBMaWtld2lzZS4KCSogc3lzdGVtLmggKE1BWF9JTlRFR0VSX0NPTVBVVEFUSU9OX01PREUpOiBQb2lzb24uCgkqIGRvYy90bS50ZXhpIChNQVhfSU5URUdFUl9DT01QVVRBVElPTl9NT0RFKTogUmVtb3ZlLgoKMjAwMy0xMi0xOSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29uZmlndXJlLmluOiBEZWxldGUgbGlidW53aW5kX2hhc19laF9zdXBwb3J0IHRlc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmdjYyAoaWE2NCotKi1saW51eCopOiBEZWxldGUgcmVmZXJlbmNlIHRvIHQtbGlidW53aW5kLW5vLWVoCglhbmQgbGlidW53aW5kX2hhc19laF9zdXBwb3J0IGNoZWNrLgoJKiBjb25maWcvdC1saWJ1bndpbmQtbm8tZWg6IERlbGV0ZS4KCjIwMDMtMTItMTkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1mb3JtYXQuYyAocHJpbnRfY2hhcl90YWJsZSk6IEFsbG93ICdJJyBmbGFnIG9uIGZsb2F0aW5nIHBvaW50CglkZWNpbWFsIGZvcm1hdHMuCgoyMDAzLTEyLTE5ICBTdHVhcnQgSGFzdGluZ3MgIDxzdHVhcnRAYXBwbGUuY29tPgoKCSogZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfY2FsbCwgeDg2X291dHB1dF9taV90aHVuayk6CglUcml2aWFsIGZpeGVzIGZvciBpMzg2LmMgb24gRGFyd2luL3g4Ni4KCjIwMDMtMTItMTkgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobGVnaXRpbWF0ZV9sb19zdW1fYWRkcmVzc19wKTogQWRkIGNvZGUgdG8KCXJlY29nbml6ZSBtYWNoby1zdHlsZSBsb19zdW0gYWRycmVzcyBwYXR0ZXJucy4KCjIwMDMtMTItMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkd2FyZm91dC5jOiBSZW1vdmUgdXNlcyBvZiAicmVnaXN0ZXIiIHNwZWNpZmllciBpbgoJZGVjbGFyYXRpb25zIG9mIGFyZ3VtZW50cyBhbmQgbG9jYWwgdmFyaWFibGVzLgoJKiBnZW5zdXBwb3J0LmM6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYzogTGlrZXdpc2UuCgoyMDAzLTEyLTE5ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNvbmZpZy5ndWVzczogUmVtb3ZlLgoKMjAwMy0xMi0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC91bndpbmQtaWE2NC5jIChpYTY0X2NvcHlfcmJzKTogTmV3IGZ1bmN0aW9uLgoJKHVud19hY2Nlc3NfZ3IpOiBPbmx5IGNhbGwgaWE2NF9yc2Vfcm5hdF9hZGRyIGlmIGFkZHIgaXMgYWJvdmUKCXJlZ3N0a190b3AuCgkodXdfZnJhbWVfc3RhdGVfZm9yKTogSGFuZGxlIGxvY2F0aW9ucyBpbnNpZGUgYnVuZGxlcy4KCSh1d19pbml0X2NvbnRleHRfMSk6IEluaXRpYWxpemUgY29udGV4dC0+cm5hdC4KCVNldCBjb250ZXh0LT5yZWdzdGtfdG9wIHRvIGxvd2VzdCByYnMgYWRkcmVzcyB3aGljaCBoYXMgbmF0IGNvbGxlY3Rpb24KCWluIGNvbnRleHQtPnJuYXQuCgkodXdfaW5zdGFsbF9jb250ZXh0KTogRml4IHJuYXQgcmVzdG9yaW5nLgoJUmVzdG9yZSBhci5yc2MgdG8gcHJldmlvdXMgc3RhdGUuCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUiwKCU1EX0hBTkRMRV9VTldBQkkpOiBIYW5kbGUgdW53aW5kaW5nIHRocm91Z2ggU0FfT05TVEFDSyBmcmFtZXMuCgoyMDAzLTEyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMTMyMzkKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZXhwZWN0X2p1bXApOiBVcGRhdGUKCVRSRUVfVkFMVUUgKGFyZ2xpc3QpIGlmIHVuc2F2ZV9leHByX25vdyBsYW5naG9vawoJY3JlYXRlZCBhIG5ldyB0cmVlLgoKMjAwMy0xMi0xOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAodGh1bWJfYmFzZV9yZWdpc3Rlcl9ydHhfcCk6IFVzZSByZWdubyBpbiBjb21wYXJpc29uIGFnYWluc3QKCUZJUlNUX1BTRVVET19SRUdJU1RFUi4KCjIwMDMtMTItMTggIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMgKFVTRV9BTFRJVkVDX0ZPUl9BUkdfUCk6IERvbid0IGNoZWNrCglmb3IgU1ZSNCBBQkkuCgoyMDAzLTEyLTE4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWl4LmggKE9TX01JU1NJTkdfUE9XRVJQQzY0KTogRGVmaW5lLgoJKE9TX01JU1NJTkdfQUxUSVZFQyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoQVNNX1NQRUMpOiBCZSBnZW5lcm91cyBhYm91dCBzdXBwbHlpbmcKCS1mb3JjZV9jcHVzdWJ0eXBlX0FMTC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBSZWFycmFuZ2UKCUNQVSBpbmZvcm1hdGlvbiB0YWJsZTsgbm93IGFsd2F5cyBzZXQgYWxsIENQVS1zcGVjaWZpYyB2YWx1ZXMuCglBbHNvLCB1c2UgQWx0aXZlYyBhbmQgcG93ZXJwYzY0IHdoZW4gY2hpcCBhbmQgT1Mgc3VwcG9ydHMgdGhlbS4KCjIwMDMtMTItMTggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoZGFyd2luX21hY2hvX2R5bGRoKTogTmV3LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMy0xMi0xOCAgRGFyYSBIYXplZ2hpICA8ZGhhemVnaGlAeWFob28uY29tPgoKCSogdmVyc2lvbi5jICh2ZXJzaW9uX3N0cmluZyk6IFJlbnVtYmVyIGFzIDMuNC4wCgkqIGRvYy9pbmNsdWRlL2djYy1jb21tb24udGV4aTogTGlrZXdpc2UKCjIwMDMtMTItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZW5yZWNvZy5jIChwcmludF9ob3N0X3dpZGVfaW50KTogTmV3LgoJKHdyaXRlX3N3aXRjaCwgd3JpdGVfY29uZCk6IFVzZSBpdC4KCjIwMDMtMTItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoY2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGgpOiBSZW1vdmUgZW51bSBzcGVjaWFsCgljYXNlIHN1cHByZXNzaW9uIG9mIHBlZHdhcm4uCgkqIHN5c3RlbS5oIChFTlVNX0JJVEZJRUxEKTogVXNlIF9fZXh0ZW5zaW9uX18uCgkoQ0hBUl9CSVRGSUVMRCk6IExpa2V3aXNlLgoKMjAwMy0xMi0xOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoJICAgIE1hcmsgRGV0dGluZ2VyICA8ZGV0dGluZ2VAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKFVOU1BFQ19TUlNUKTogTmV3IGNvbnN0YW50LgoJKCJzdHJsZW5kaSIsICJzdHJsZW5zaSIpOiBOZXcgZXhwYW5kZXJzLgoJKCIqc3RybGVuZGkiLCAiKnN0cmxlbnNpIik6IE5ldyBpbnNucy4KCjIwMDMtMTItMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc29sMi5oIChMSU5LX0FSQ0gzMl9TUEVDKTogRGVmaW5lIGluIHRlcm1zIG9mIC4uLgoJKExJTktfQVJDSDMyX1NQRUNfQkFTRSk6IC4uLiB0aGlzIG5ldyBtYWNyby4KCSogY29uZmlnL3NwYXJjL3NvbDItYmkuaCAoTElOS19BUkNINjRfU1BFQyk6IERlZmluZSBpbiB0ZXJtcyBvZgoJLi4uCgkoTElOS19BUkNINjRfU1BFQ19CQVNFKTogLi4uIHRoaXMgbmV3IG1hY3JvLgoJKiBjb25maWcvc3BhcmMvc29sMi1nbGQtYmkuaCAoTElOS19BUkNIMzJfU1BFQyk6IE5ldyBtYWNyby4KCShMSU5LX0FSQ0g2NF9TUEVDKTogTGlrZXdpc2UuCgoyMDAzLTEyLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzEzMjM0CgkqIHRyZWUtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlICdyJyBhbmQgJ3MnIGNvZGUKCWNsYXNzZXMuCgoyMDAzLTEyLTE4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAodHJhY2VyLm8sIGJiLXJlb3JkZXIubyk6IERlcGVuZCBvbiB0aW1ldmFyLmgKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX3Jlb3JkZXJfYmxvY2tzLCByZXN0X29mX2hhbmRsZV90cmFjZXIpOgoJRG9uJ3QgcHVzaCBhbmQgcG9wIFRWX1JFT1JERVJfQkxPQ0tTIHRpbWV2YXJzLCBkbyBpdC4uLgoJKiBiYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogLi4uaGVyZSwgYW5kLi4uCgkqIHRyYWNlci5jICh0cmFjZXIpOiBoZXJlLgoKMjAwMy0xMi0xOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogbG9vcC5jIChtb3ZlX21vdmFibGVzKTogSGFuZGxlIGNvbWJpbmF0aW9uIG9mIG0tPmNvbnNlYywKCW0tPm1vdmVfaW5zbl9maXJzdCwgYW5kIG0tPmluc2VydF90ZW1wIGFsbCBub256ZXJvIGNvcnJlY3RseS4KCjIwMDMtMTItMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjYWxscy5jIChsb2FkX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiBEb24ndCB1c2UKCUxPQURfQVJHU19SRVZFUlNFRC4KCSogc3lzdGVtLmggKExPQURfQVJHU19SRVZFUlNFRCk6IFBvaXNvbi4KCSogZG9jL3RtLnRleGkgKExPQURfQVJHU19SRVZFUlNFRCk6IFJlbW92ZS4KCjIwMDMtMTItMTcgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZW1pdC1ydGwuYyAoc2V0X25ld19maXJzdF9hbmRfbGFzdF9sYWJlbF9udW0pOiAgUmVtb3ZlIGZ1bmN0aW9uLgoJKiBydGwuaCAoc2V0X25ld19maXJzdF9hbmRfbGFzdF9sYWJlbF9udW0pOiAgUmVtb3ZlIGRlY2xhcmF0aW9uLgoKMjAwMy0xMi0xNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfaWZjdnRfbW9kaWZ5X2luc24pOiBEb24ndCBsZWF2ZSBhbG9uZQoJc2NyYXRjaCBpbnNucyBvZiB0aGUgdGhlbiBicmFuY2ggdGhhdCBjbG9iYmVyIHJlZ3MgbmVlZGVkIGJ5IHRoZQoJZWxzZSBicmFuY2guCgoyMDAzLTEyLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBVcGRhdGUgY29tbWVudHMuCgkqIHN5c3RlbS5oIChQUkVURU5EX09VVEdPSU5HX1ZBUkFSR1NfTkFNRUQpOiBQb2lzb24uCgkqIHRhcmdob29rcy5jOiBEbyBub3QgcmVmZXIgdG8gUFJFVEVORF9PVVRHT0lOR19WQVJBUkdTX05BTUVELgoKMjAwMy0xMi0xNyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoJICAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogTWFrZWZpbGUuaW4gKGdjc2Uubyk6IEFkZCAkKFRSRUVfSCkgdG8gZGVwZW5kZW5jaWVzLgoJKiBnY3NlLmM6IEluY2x1ZGUgdHJlZS5oLgoJKGltcGxpY2l0X3NldF9jb25kX3ApOiBOZXcuCgkoZmluZF9pbXBsaWNpdF9zZXRzKTogQ2FsbCBpdC4KCjIwMDMtMTItMTcgIFNhbnRpYWdvIFZpbGEgIDxzYW52aWxhQHVuZXguZXM+CgoJKiBjb25maWcva2ZyZWVic2RnbnUuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFJlbmFtZSBmcm9tCglUQVJFVF9PU19DUFBfQlVJTFRJTlMuCgoyMDAzLTEyLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZW1pdC1ydGwuYzogRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKMjAwMy0xMi0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBwcmVkaWN0LmMgKHN0cnVjdCBibG9ja19pbmZvX2RlZiwgc3RydWN0IGVkZ2VfaW5mb19kZWYpOiBDaGFuZ2UKCWJpdC1maWVsZHMgb2Ygd2lkdGggMSB0byB1bnNpZ25lZCBpbnQuCgoyMDAzLTEyLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiAxMjQ4MAoJKiBjLXBjaC5jIChwY2hfaW5pdCk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHByZWNvbXBpbGVkCgloZWFkZXIgY2FuJ3QgYmUgd3JpdHRlbi4KCglQUiAxMjYwNgoJKiBjLXBjaC5jIChwY2hfaW5pdCk6IE1ha2UgYSBQQ0ggZmlsZSBhcHBlYXIgaW52YWxpZCB3aGlsZSBpdCdzCgliZWluZyB3cml0dGVuLgoJKGNfY29tbW9uX3dyaXRlX3BjaCk6IE1ha2UgaXQgdmFsaWQgb25jZSBpdCdzIGRvbmUuCgoyMDAzLTEyLTE3ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJUFIgdGFyZ2V0LzExOTkyCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqY21wbWVtX2xvbmdfNjQiKTogVXNlIENMQ0xFIGluc3RydWN0aW9uCglpbnN0ZWFkIG9mIENMQ0wuCgkoIipjbXBtZW1fbG9uZ18zMSIpOiBMaWtld2lzZS4KCjIwMDMtMTItMTcgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jOiBBZGQgbW9yZSBjb21tZW50cyBhYm91dCBpbnNuIGJ1bmRsaW5nLgoKMjAwMy0xMi0xNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEwNTkyCgkqIGNhbGxlci1zYXZlLmMgKG1hcmtfcmVmZXJlbmNlZF9yZWdzKTogRG9uJ3Qgc2hvcnQtY2lyY3VpdCBhIHJlZwoJb3Igc3VicmVnIGluIFNFVF9ERVNUIGlmIGl0IGlzbid0IGEgaGFyZCByZWdpc3Rlci4KCjIwMDMtMTItMTcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBBZGQgLWZuby1wcm9maWxlLWFyY3MgLWZuby10ZXN0LWNvdmVyYWdlCgktZm5vLWJyYW5jaC1wcm9iYWJpbGl0aWVzIHRvIGFyZ3VtZW50cyB3aGVuIGNvbXBpbGluZyBjdG9ycyBhbmQKCWR0b3JzLgoKMjAwMy0xMi0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmg6IFNldCBTVVBQT1JUU19JTklUX1BSSU9SSVRZIHRvIDAuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWdsZC5oOiBTZXQgU1VQUE9SVFNfSU5JVF9QUklPUklUWSB0byAxLgoKMjAwMy0xMi0xNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAodGh1bWJfYmFzZV9yZWdpc3Rlcl9ydHhfcCk6IERvbid0IGFsbG93IHZpcnR1YWwgcmVnaXN0ZXJzCglhcyBiYXNlIHJlZ2lzdGVycyBmb3Igc3ViLXdvcmQgb3BlcmF0aW9ucy4KCSh0aHVtYl9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IFNpbXBsaWZ5IFJFRytSRUcgdGVzdC4KCjIwMDMtMTItMTcgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPGJvZXNzZW5AZGUuaWJtLmNvbT4KCgkqIG9wdHMuYyAod3JhcF9oZWxwKTogRml4IG92ZXJmbG93LgoKMjAwMy0xMi0xNyAgRnJlZCBGaXNoICA8Zm5mQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSBjb2RlIHRvIGV4YW1pbmUgbGlua2VyIHNjcmlwdHMgYW5kIHNldAoJSEFWRV9NSVBTX0xJQkdMT1NTX1NUQVJUVVBfRElSRUNUSVZFUy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDAzLTEyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMjIxOAoJKiB2YXJhc20uYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IEFsbG93IGEgY29udmVyc2lvbiBmcm9tCglhbiBpbnRlZ3JhbCBjb25zdGFudCB0byBhbiBPRkZTRVRfVFlQRS4KCjIwMDMtMTItMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdGFyZ2V0LzExMDEyCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAoZ2VuX2NvbXBhcmUpOiBDYWxsIGdlbl9hZGRzaTMgaW5zdGVhZCBvZgoJZ2VuX2NtcF9uZV9zbWFsbF9jb25zdF9pbnNuLgoJKiBjb25maWcvbTMyci9tMzJyLm1kIChjbXBfbmVfc21hbGxfY29uc3RfaW5zbik6IFJlbW92ZS4KCjIwMDMtMTItMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCSAgICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzMzNDcKCSogYy1kZWNsLmMgKGVudW1fZGVjbF9jb250ZXh0KTogUmVtb3ZlIEJJVEZJRUxELgoJKGdyb2tkZWNsYXJhdG9yKTogVGFrZSBiaXQtZmllbGQgd2lkdGggYXMgYW4gaW5wdXQuCglQZXJmb3JtIGJpdC1maWVsZCB3aWR0aCB2YWxpZGF0aW9uIHdpdGgKCWNoZWNrX2JpdGZpZWxkX3R5cGVfYW5kX3dpZHRoIHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yCglmaW5pc2hfc3RydWN0LgoJKGdyb2t0eXBlbmFtZSwgZ3Jva3R5cGVuYW1lX2luX3Bhcm1fY29udGV4dCwgc3RhcnRfZGVjbCwKCXB1c2hfcGFybV9kZWNsLCBncm9rZmllbGQsIHN0YXJ0X2Z1bmN0aW9uKTogVXBkYXRlIGNhbGxzIHRvCglncm9rZGVjbGFyYXRvci4KCShjaGVja19iaXRmaWVsZF90eXBlX2FuZF93aWR0aCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3RydWN0KTogTW92ZSBiaXQtZmllbGQgdmFsaWRhdGlvbiB0byBncm9rZGVjbGFyYXRvcgoJYW5kIGNoZWNrX2JpdGZpZWxkX3R5cGVfYW5kX3dpZHRoLgoKMjAwMy0xMi0xNiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBib290c3RyYXAvMTMzODYKCSogY29uZmlndXJlLmluIChnY2NfY3ZfbGRfaGlkZGVuKTogU2V0IHRvIHllcyBvbiBocHBhNjQqLSotaHB1eCogd2hlbgoJdXNpbmcgSFAgbmF0aXZlIGxpbmtlci4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMy0xMi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTMyNzUKCSogYy1jb21tb24uaCAoZW51bSByaWQpOiBBZGQgUklEX09GRlNFVE9GLgoJKiBjLXBhcnNlci5pbiAocmlkX3RvX3l5KTogSWdub3JlIFJJRF9PRkZTRVRPRi4KCSogZ2luY2x1ZGUvc3RkZGVmLmggKG9mZnNldG9mKTogUmVpbXBsZW1lbnQgZm9yIEMrKywgdXNpbmcKCV9fb2Zmc2V0b2ZfXy4KCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBfX29mZnNldG9mX18uCgoyMDAzLTEyLTE2ICBTdGFuIENveCAgPHNjb3hAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmg6IEZvcm1hdHRpbmcuCgkoTUFYX0lOVF9UWVBFX1NJWkUsIE1BWF9JTlRfVFlQRV9TSVpFLCBDT05TVF9DT1NUUywgUlRYX0NPU1RTKQoJKEFERFJFU1NfQ09TVCwgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCwgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCkKCShJTVBMSUNJVF9GSVhfRVhQUiwgRUFTWV9ESVZfRVhQUiwgU0xPV19aRVJPX0VYVEVORCk6IFJlbW92ZQoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jOiBGb3JtYXR0aW5nLgoJKGlxMjAwMF9ydHhfY29zdHMpOiBOZXcuCgoyMDAzLTEyLTE2ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoYWRkc2kzX2NhcnJ5aW5fc2hpZnQpOiBBZGQgbWlzc2luZyByZWdpc3RlciBjb25zdHJhaW50cy4KCjIwMDMtMTItMTYgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiB0ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5laC9iYWRhbGxvYzEuQzogVHdlYWsgdG8KCXBhc3Mgd2l0aCAtcHRocmVhZCBvbiBGcmVlQlNEIHN5c3RlbXMuCgoyMDAzLTEyLTE2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZmlsZV9lbmQpOiBPbmx5IHdyaXRlIHN5bWJvbHMgdGhhdCBoYXZlCgliZWVuIHJlZmVyZW5jZWQgYXQgc29tZSBwb2ludC4KCjIwMDMtMTItMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYzogSW5jbHVkZSBsYW5naG9va3MuaAoJKG1pcHNfYnVpbGRfYnVpbHRpbl92YV9saXN0KTogVXNlIGxhbmdfaG9va3MudHlwZXMubWFrZV90eXBlLgoKMjAwMy0xMi0xNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTMzMTMKCSogY29tYmluZS5jIChtYWtlX2V4dHJhY3Rpb24pIFtSRUddOiBEbyBub3QgdXNlCglnZW5fbG93cGFydF9mb3JfY29tYmluZSB3aGVuIFBPUyBpcyBub24temVyby4KCjIwMDMtMTItMTYgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogYWx0aXZlYy5oICh2ZWNfY21wbGUsIHZlY19hbGxfbnVtZXJpYyk6IEZpeCB0eXBvLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL2FsdGl2ZWMtMTAuYzogVGVzdCBmb3IgYWJvdmUuCgoyMDAzLTEyLTE1ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogTWFrZWZpbGUuaW4gKENQUEZMQUdTKTogSW5pdGlhbGl6ZSBmcm9tIGNvbmZpZ3VyZS4KCjIwMDMtMTItMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTM0MDAKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogRGlzYWJsZSB1bmNvbmRpdGlvbmFsIHdyaXRlCglvcHRpbWl6YXRpb25zIGlmIHdlIGNvdWxkIGludHJvZHVjZSBhIHN0b3JlIHRvIHRyYXBwaW5nIG1lbW9yeQoJdGhhdCB3YXNuJ3QgcHJlc2VudCBwcmV2aW91c2x5LgoKMjAwMy0xMi0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN5c3RlbS5oIChERUZBVUxUX0NBTExFUl9TQVZFUyk6IFBvaXNvbi4KCSogdG9wbGV2LmMgKGZsYWdfY2FsbGVyX3NhdmVzKTogQWx3YXlzIGluaXRpYWxpemUgd2l0aCAwLgoJKiBkb2MvdG0udGV4aSAoREVGQVVMVF9DQUxMRVJfU0FWRVMpOiBSZW1vdmUuCgoyMDAzLTEyLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZmxvdy5jIChFWElUX0lHTk9SRV9TVEFDSyk6IE1vdmUgdG8gLi4uCgkqIGRlZmF1bHRzLmggKEVYSVRfSUdOT1JFX1NUQUNLKTogLi4uIGhlcmUuCgkqIGRvanVtcC5jIChjbGVhcl9wZW5kaW5nX3N0YWNrX2FkanVzdCk6IERvbid0IHVzZSAjaWZkZWYKCUVYSVRfSUdOT1JFX1NUQUNLLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxsb2MpOiBMaWtld2lzZS4KCSogcmEuYyAoaW5pdF9yYSk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKGluaXRfZWxpbV90YWJsZSk6IExpa2V3aXNlLgoJKiByZW9yZy5jIChmaWxsX3NpbXBsZV9kZWxheV9zbG90cyk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChpbml0X3Jlc291cmNlX2luZm8pOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKEVYSVRfSUdOT1JFX1NUQUNLKTogRG9jdW1lbnQgdGhhdCB0aGUgZGVmYXVsdAoJaXMgMC4KCjIwMDMtMTItMTUgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogcmVsb2FkLmMgKHJlZ19vdmVybGFwX21lbnRpb25lZF9mb3JfcmVsb2FkX3ApOgoJV2hlbiBsb29raW5nIGF0IGEgUExVUyBpbiBYLCBhdm9pZCBzcHVyaW91c2x5IHJldHVybmluZyBub256ZXJvCgl3aGVuIElOIGlzIGEgUkVHIG9yIGFub3RoZXIgc2ltcGxlIFBMVVMsIG9yIGEgTUVNIGNvbnRhaW5pbmcgb25lLgoKCSogbG9vcC5jIChsb29wX2ludmFyaWFudF9wKTogQW1lbmQgY29tbWVudCBhYm91dCB3aGVyZSBuZXcgcmVnaXN0ZXJzCgltaWdodCBjb21lIGZyb20uCgoyMDAzLTEyLTE1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogUmVtb3ZlCgloYW5kbGluZyBvZiBvYnNvbGV0ZSBsYW5ndWFnZSBDSElMTC4KCjIwMDMtMTItMTUgIFdhbGRlayBIZWJpc2NoICA8aGViaXNjaEBtYXRoLnVuaS53cm9jLnBsPgoKCSogdHJlZS5jIChpbml0aWFsaXplcl96ZXJvcCk6IEFkZCB0ZXN0IGZvciBlbXB0eSBzZXQuCgkqIGludGVncmF0ZS5jIChmdW5jdGlvbl9jYW5ub3RfaW5saW5lX3ApOiBGb3JiaWQgaW5saW5pbmcKCWZ1bmN0aW9ucyBjYWxsaW5nIGBsb25nam1wJy4KCjIwMDMtMTItMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzExNzczCgkqIGRvYy9nY292LnRleGkgKEdjb3YgYW5kIE9wdGltaXphdGlvbik6IERvY3VtZW50IGlubGluZSBmdW5jdGlvbgoJYmVoYXZpb3VyLiBGaXggc29tZSBmaWxlIHN1ZmZpeGVzLgoKMjAwMy0xMi0xNCAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoX19hbWQ2NCwgX19hbWQ2NF9fKTogUmVtb3ZlIGR1cGxpY2F0ZXMuCgoyMDAzLTEyLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoY19wYXJzZV9lcnJvcik6IERlY2xhcmUgaXQuCgkqIGMtY29tbW9uLmMgKGNfcGFyc2VfZXJyb3IpOiBOZXcgZnVuY3Rpb24uCgkqIGMtcGFyc2UueSAoeXllcnJvcik6IFVzZSBpdC4KCjIwMDMtMTItMTQgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzEzMDU0CgkqIHBhLXByb3Rvcy5oIChpbmRleGVkX21lbW9yeV9vcGVyYW5kLCBib3J4X3JlZ19vcGVyYW5kLAoJbW92ZV9kZXN0X29wZXJhbmQsIG1vdmVfc3JjX29wZXJhbmQpOiBOZXcgcHJvdHlwZXMuCgkoYmFzZXJlZ19vcGVyYW5kLCBtb3ZlX29wZXJhbmQsIHJlZ19vcl9ub25zeW1iX21lbV9vcGVyYW5kKTogRGVsZXRlZC4KCSogcGEuYyAoY29weV9yZWdfcG9pbnRlciwgaW5kZXhlZF9tZW1vcnlfb3BlcmFuZCwgbW92ZV9kZXN0X29wZXJhbmQsCgltb3ZlX3NyY19vcGVyYW5kKTogTmV3IGZ1bmN0aW9ucy4KCShiYXNlcmVnX29wZXJhbmQsIHJlZ19vcl9ub25zeW1iX21lbV9vcGVyYW5kLCBtb3ZlX29wZXJhbmQpOiBEZWxldGUuCgkocmVnX29yXzBfb3Jfbm9uc3ltYl9tZW1fb3BlcmFuZCk6IFJldHVybiBmYWxzZSBmb3IgdW5zY2FsZWQgaW5kZXhlZAoJYWRkcmVzcyB1bnRpbCBjc2UgaXMgbm90IGV4cGVjdGVkIG9uIHRhcmdldHMgd2l0aCBub24tZXF1aXZhbGVudAoJc3BhY2UgcmVnaXN0ZXJzLgoJKGhwcGFfbGVnaXRpbWl6ZV9hZGRyZXNzKTogQ2Fub25pY2FsaXplIHVuc2NhbGVkIGluZGV4ZWQgYWRkcmVzc2VzCglvbiB0YXJnZXRzIG5vbi1lcXVpdmFsZW50IHNwYWNlIHJlZ2lzdGVycy4KCShlbWl0X21vdmVfc2VxdWVuY2UpOiBCcmVhayBvdXQgaW5kZXhlZCBhZGRyZXNzZXMgZnJvbSBkZXN0aW5hdGlvbgoJb3BlcmFuZC4gIFNpbWlsYXJseSwgYnJlYWsgb3V0IHVuc2NhbGVkIGluZGV4ZWQgYWRkcmVzc2VzIGZyb20KCXNvdXJjZSBvcGVyYW5kIG9uIHRhcmdldHMgd2l0aCBub24tZXF1aXZhbGVudCBzcGFjZSByZWdpc3RlcnMuICBGaXgKCVJFR19QT0lOVEVSIGZsYWcgd2hlbiBwb3NzaWJsZS4gIE1hcmsgcmVnaXN0ZXIgcG9pbnRlciB3aGVuIGNyZWF0aW5nCgluZXcgcG9pbnRlcnMuCgkocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSB1bnNjYWxlZCBpbmRleCBhZGRyZXNzZXMuCgkqIHBhLmggKElTX0lOREVYX0FERFJfUCwgSVNfTE9fU1VNX0RMVF9BRERSX1ApOiBOZXcgbWFjcm8gc3Vicm91dGluZXMKCWZvciBFWFRSQV9DT05TVFJBSU5ULgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBSZXdvcmsgdG8gbWFrZSBtb3JlIHJlYWRhYmxlLgoJKE1PREVfT0tfRk9SX1NDQUxFRF9JTkRFWElOR19QLCBNT0RFX09LX0ZPUl9VTlNDQUxFRF9JTkRFWElOR19QKTogTmV3CglzdWJyb3V0aW5lcyBmb3IgR09fSUZfTEVHSVRJTUFURV9BRERSRVNTLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFJld29yayB1c2luZyBuZXcgc3Vicm91dGluZXMuICBBbGxvdyBzY2FsZWQKCWFuZCB1bnNjYWxlZCBhZGRyZXNzZXMuICBDYW5vbmljYWxpemUgdW5zY2FsZWQgaW5kZXhlZCBhZGRyZXNzZXMgb24KCXRhcmdldHMgd2l0aCBub24tZXF1aXZhbGVudCBzcGFjZSByZWdpc3RlcnMuICBEb2N1bWVudCBpc3N1ZXMgaW4KCWhhbmRsaW5nIGluZGV4ZWQgYWRkcmVzcyBtb2RlcyBvbiBQQS1SSVNDLgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZSBmb3IgbmV3IGFuZCBkZWxldGVkIHByZWRpY2F0ZXMuCgkqIHBhLm1kIChtb3ZlX2Rlc3Rfb3BlcmFuZCwgbW92ZV9zcmNfb3BlcmFuZCwgaW5kZXhlZF9tZW1vcnlfb3BlcmFuZCk6CglVc2UgbmV3IHByZWRpY2F0ZXMgaW4gbW92ZSBwYXR0ZXJucy4KCUFkZCBwZWVwaG9sZTIgcGF0dGVybnMgdG8gb3B0aW1pemUgZmxvYXRpbmcgcG9pbnQgc3RvcmVzLiAgRml4Cgljb25zdHJhaW4gcHJlZmVyZW5jaW5nIGluIG1vdmUgcGF0dGVybnMuICBEZWxldGUgcGF0dGVybnMgZm9yIGhhbmRsaW5nCgl1bnNjYWxlZCBpbmRleGVkIG1lbW9yeSBsb2Fkcy4gIEFkZCBtaXNzaW5nIGxvYWQgYW5kIHN0b3JlIHdpdGgKCWJhc2UtcmVnaXN0ZXIgbW9kaWZpY2F0aW9uIHBhdHRlcm5zLiAgQ29ycmVjdCBTRm1vZGUgZmxvYXRpbmcgcG9pbnQKCXN0b3JlIHBhdHRlcm4uICBBZGQgbWlzc2luZyB6ZXJvIGV4dGVuc2lvbiBsb2Fkcy4KCjIwMDMtMTItMTMgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGdnYy16b25lLmMgKHN0cnVjdCBhbGxvY196b25lKTogRG9uJ3QgcHJlLWRlY2xhcmUsIGl0IGFscmVhZHkKCWNvbWVzIGluIHdpdGggZ2djLmguICBBZGQgYSBuZXcgYm9vbCBmaWVsZCBgZGVhZCcuCgkoZGVzdHJveV9nZ2Nfem9uZSk6IERvbid0IGRlc3Ryb3kgYSB6b25lIGF0IG9uY2UuICBJbnN0ZWFkLCBvbmx5CglzZXQgdGhlIGBkZWFkJyBmbGFnIGZvciB0aGUgZGVhZCB6b25lLiAgV3JhcCBhIHNhbml0eSBjaGVjayBpbgoJRU5BQkxFX0NIRUNLSU5HLgoJKGdnY19jb2xsZWN0XzEpOiBBbHdheXMgbWFyayBhbmQgc3dlZXAgaWYgYSB6b25lIGhhcyB0aGUgYGRlYWQnCglmbGFnIHNldC4KCShnZ2NfY29sbGVjdCk6IEZyZWUgZGVhZCB6b25lcyBhZnRlciBjb2xsZWN0aW5nLgoKMjAwMy0xMi0xMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY292ZXJhZ2UuYyAoZ2V0X2NvdmVyYWdlX2NvdW50cyk6ICBVc2UgaW5mb3JtIGluc3RlYWQgb2Ygd2FybmluZwoJYWJvdXQgbWlzc2luZyBwcm9maWxlLgoKMjAwMy0xMi0xMiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKG9wdHMubywgZXhwbG93Lm8pOiBEZXBlbmQgb24gbGFuZ2hvb2tzLmgKCjIwMDMtMTItMTIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnLmdjYyA8aVszNDU2N104Ni0qLWRhcndpbio+OiBEb24ndCB1c2UgZml4cHJvdG8uCgk8cG93ZXJwYy0qLWRhcndpbio+OiBMaWtld2lzZS4KCjIwMDMtMTItMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvbGludXguaCAoSUE2NF9HQVRFX0FSRUFfRU5EKTogSW5jcmVhc2UgYnkgNjRLLgoJKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IFNldCBmcHNyX2xvYywgYnJfbG9jWzZdIGFuZAoJYnJfbG9jWzddLiAgVXBkYXRlIGNvbW1lbnQuCgkoTURfSEFORExFX1VOV0FCSSk6IERlZmluZS4KCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYyAoc3RydWN0IHVud19zdGF0ZV9yZWNvcmQpOiBBZGQKCXVud2FiaSBmaWVsZC4KCShzdHJ1Y3QgX1Vud2luZF9Db250ZXh0KTogSW5jcmVhc2UgYnJfbG9jIGFycmF5IHNpemUgdG8gOCBlbnRyaWVzLgoJKGRlc2NfYWJpKTogU2V0IHVud2FiaS4KCSh1d191cGRhdGVfcmVnX2FkZHJlc3MpOiBBbGxvdyBiciB1cCB0byA3LgoJKHV3X3VwZGF0ZV9jb250ZXh0KTogSW52b2tlIE1EX0hBTkRMRV9VTldBQkkgaWYgZGVmaW5lZC4KCSh1d19pbnN0YWxsX2NvbnRleHQpOiBMb2FkIGIxLi5iNSBmcm9tIGNvcnJlY3QgbG9jYXRpb25zLgoJRml4IGluc24gbG9hZGluZyBhci5mcHNyLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgTURfSEFORExFX1VOV0FCSS4KCjIwMDMtMTItMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMzAzNwoJKiBsb29wLmMgKHVwZGF0ZV9naXZfZGVyaXZlKTogSWdub3JlIHJlZHVuZGFudCBzZXRzIG9mIGEgYml2IHdoZW4KCWNhbGN1bGF0aW5nIGhvdyB0byBkZXJpdmUgYSBnaXYgZnJvbSBhIGJpdi4KCjIwMDMtMTItMTIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCglQUiBwcmVwcm9jZXNzb3IvMTI5MzUgcHJlcHJvY2Vzc29yLzEyOTUyIHByZXByb2Nlc3Nvci8xMzA0NgoJKiBjcHBsaWIuYyAocHJlcGFyZV9kaXJlY3RpdmVfdHJhZCk6IENsZWFyIHNraXBwaW5nIG9ubHkgaW4KCSNpZiBhbmQgI2VsaWYgZGlyZWN0aXZlcy4KCShkb191bmRlZik6IENhbGwgdGhlIGhhbmRsZXIgZXZlbiBpZiB0aGUgaWRlbnRpZmllciBpcyBub3QgYSBtYWNyby4KCSogY3BwdHJhZC5jIChzY2FuX3BhcmFtZXRlcnMpOiBFbWl0IGFuIGVycm9yIG1lc3NhZ2UuCgkoX2NwcF9jcmVhdGVfdHJhZF9kZWZpbml0aW9uKTogUmVtZW1iZXIgdGhlIHBhcmFtcyBsaXN0IGV2ZW4gb24KCWZhaWx1cmUuCgoyMDAzLTEyLTExICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYXJtLmMgKEFSTV9BRERSRVNTX0NPU1QsIFRIVU1CX0FERFJFU1NfQ09TVCk6IENvbnZlcnQgbWFjcm9zCgl0byBpbmxpbmUgZnVuY3Rpb25zOiBhcm1fYXJtX2FkZHJlc3NfY29zdCwgYXJtX3RodW1iX2FkZHJlc3NfY29zdAoJcmVzcGVjdGl2ZWx5LgoJKGFybV9hZGRyZXNzX2Nvc3QpOiBVc2UgJ2VtLgoKMjAwMy0xMi0xMiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvYWxwaGEvb3NmLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUKCV9fU1REQ19WRVJTSU9OX18gdG8gSVNPIEM5NCBmb3IgQysrLgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYWxwaGFfd2NoYXIpOiBOZXcgZml4LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS93Y2hhci5oOiBOZXcgZmlsZS4KCjIwMDMtMTItMTEgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogdW53aW5kLWxpYnVud2luZC5jIChfVW53aW5kX1NldEdSKTogQ2xlYXIgdGhlIE5hVCBiaXQgYXMKCXJlcXVpcmVkIGJ5IEMrKyBBQkkgZm9yIEl0YW5pdW0uCgkqIGNvbmZpZy90LWxpYnVud2luZCAoTElCMkFEREVIKTogUmVtb3ZlIHVud2luZC1saWJ1bndpbmQuYy4KCSogY29uZmlnL3QtbGlidW53aW5kLW5vLWVoOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluOiBDaGVjayBsaWJ1bndpbmQgZm9yIF9VbndpbmRfUmVzdW1lKCkgYW5kIGlmIGl0J3MKCXByZXNlbnQsIHNldCBsaWJ1bndpbmRfaGFzX2VoX3N1cHBvcnQgdG8gInllcyIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmdjYyAoaWE2NCotKi1saW51eCopOiBJZiAkbGlidW53aW5kX2hhc19laF9zdXBwb3J0IGlzCglzZXQgdG8geWVzLCB1c2UgdC1saWJ1bndpbmQsIG90aGVyd2lzZSwgdXNlIHQtbGlidW53aW5kLW5vLWVoLgoKMjAwMy0xMi0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2dsb2JhbF9wb2ludGVyKTogRm9yY2UgZnVuY3Rpb25zIHdpdGgKCWEgbm9ubG9jYWwgZ290byB0byBzZXQgdXAgJGdwLgoKMjAwMy0xMi0xMSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCVBSIHRhcmdldC8xMzEzMgoJKiBmdW5jdGlvbi5jIChnZW5fbWVtX2FkZHJlc3NvZik6IFdoZW4gbm8gZGVjbCwgZXhwbGljaXRseSBjbGVhciBmbGFnCgliaXRzLgoKMjAwMy0xMi0xMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYzogQ29udmVydCB0byBJU08tQwoKMjAwMy0xMi0xMiAgS2F6dWhpcm8gSW5hb2thICA8aW5hb2thLmthenVoaXJvQHJlbmVzYXMuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBSZXBsYWNlIE1pdHN1YmlzaGkgd2l0aCBSZW5lc2FzLgoJKiBjb25maWcvbTMyci9tMzJyLmg6IERpdHRvLgoJKiBjb25maWcvbTMyci9tMzJyLmM6IERpdHRvLgoJKiBjb25maWcvbTMyci9tMzJyLm1kOiBEaXR0by4KCjIwMDMtMTItMTEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIGJhc2ljLWJsb2NrLmggKEJMT0NLX0hFQUQsIEJMT0NLX0VORCk6IFJlbW92ZS4KCShCTE9DS19IRUFEX1RSRUUsIEJMT0NLX0VORF9UUkVFKTogUmVtb3ZlLgoJKGJhc2ljX2Jsb2NrX2RlZik6IFJlbmFtZSBgaGVhZCcgdG8gYGhlYWRfJyBhbmQgYGVuZCcgdG8gYGVuZF8nLgoJKEJCX0hFQUQsIEJCX0VORCk6IE5ldyBhY2Nlc3NvciBtYWNyb3MgZm9yIHRoZSBgaGVhZF8nIGFuZCBgZW5kXycKCWZpZWxkcyBvZiBhIGJhc2ljIGJsb2NrLgoJKiBiYi1yZW9yZGVyLmMsIGJ0LWxvYWQuYywgY2FsbGVyLXNhdmUuYywgY2ZnLmMsIGNmZ2FuYWwuYywKCWNmZ2J1aWxkLmMsIGNmZ2NsZWFudXAuYywgY2ZnbGF5b3V0LmMsIGNmZ2xvb3AuYywgY2ZnbG9vcGFuYWwuYywKCWNmZ2xvb3BtYW5pcC5jLCBjZmdydGwuYywgY29tYmluZS5jLCBjb25mbGljdC5jLCBkZi5jLCBlbWl0LXJ0bC5jLAoJZmluYWwuYywgZmxvdy5jLCBmdW5jdGlvbi5jLCBnY3NlLmMsIGdsb2JhbC5jLCBncmFwaC5jLAoJaGFpZmEtc2NoZWQuYywgaWZjdnQuYywgbGNtLmMsIGxvY2FsLWFsbG9jLmMsIGxvb3AtdW5zd2l0Y2guYywKCWxvb3AuYywgcG9zdHJlbG9hZC5jLCBwcmVkaWN0LmMsIHByb2ZpbGUuYywgcmEtYnVpbGQuYywgcmEtZGVidWcuYywKCXJhLXJld3JpdGUuYywgcmEuYywgcmVjb2cuYywgcmVnLXN0YWNrLmMsIHJlZ2NsYXNzLmMsIHJlZ21vdmUuYywKCXJlZ3JlbmFtZS5jLCByZWxvYWQxLmMsIHJlc291cmNlLmMsIHNjaGVkLWViYi5jLCBzY2hlZC1yZ24uYywKCXNpYmNhbGwuYywgdHJhY2VyLmMsIGNvbmZpZy9mcnYvZnJ2LmMsIGNvbmZpZy9pMzg2L2kzODYuYywKCWNvbmZpZy9pYTY0L2lhNjQuYzogVXNlIHRoZSBCQl9IRUFEIGFuZCBCQl9FTkQgbWFjcm9zIGluc3RlYWQgb2YKCWFjY2Vzc2luZyB0aGUgYGhlYWQnIGFuZCBgZW5kJyBmaWVsZHMgb2YgYSBiYXNpYyBibG9jayBkaXJlY3RseS4KCgkqIGdlbmd0eXBlLmM6IFRlYWNoIGFib3V0ICJ2b2lkKioiIHBvaW50ZXJzIGFuZCAidm9pZCAqIiBmdW5jdGlvbgoJdHlwZXMuICBGaXhlcyBlYXJsaWVyIGNvbW1pdC4KCjIwMDMtMTItMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChWZWN0b3IgRXh0ZW5zaW9ucyk6IERvY3VtZW50IHRoYXQgYml0d2lzZQoJb3BlcmF0aW9ucyBhbHNvIHdvcmsgb24gdmVjdG9ycy4KCjIwMDMtMTItMTAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kOiBOZXcgc3BsaXQgcGF0dGVybnMgZm9yIG9wdGltaXppbmcgYml0ZmllbGQgYWNjZXNzZXMuCgoyMDAzLTEyLTEwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBSRUFETUUuUG9ydGFiaWxpdHk6IFJlbW92ZSBLK1Igc2VjdGlvbi4KCgkqIGdlbmd0eXBlLWxleC5sOiBUZWFjaCBhYm91dCAidm9pZCoqIiBwb2ludGVycyBhbmQKCSJ2b2lkKiIgZnVuY3Rpb24gdHlwZXMuCgoyMDAzLTEyLTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMzM1NAoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfb3V0cHV0X21pX3RodW5rKTogTG9hZCBERUxUQQoJbWFudWFsbHkgaWYgb25lIGNhbiBkbyB0aGF0IHdpdGggb25seSBvbmUgaW5zdHJ1Y3Rpb24uCgoyMDAzLTEyLTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAoYXJtLWxpbnV4KTogSW5jbHVkZSBsaW51eC5oIGluIHRtX2ZpbGUgc28gdGhhdAoJTElOVVhfVEFSR0VUX09TX0NQUF9CVUlMVElOUyBpcyBkZWZpbmVkLgoJKiBjb25maWcvYXJtL2xpbnV4LWVsZi5oIChMSUJfU1BFQyk6IFByb3RlY3QgdGhlIGRlZmluaXRpb24uCgoyMDAzLTEyLTA5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBydGwuZGVmIChDT0RFX0xBQkVMLCBOT1RFKTogQ29ycmVjdCBvcGVyYW5kIG51bWJlcnMgaW4gY29tbWVudHMuCgoyMDAzLTEyLTA5ICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCglQUiBjLzEzMTM0CgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IHZpc2liaWxpdHkgZmxhZyB3aGVuIGFwcHJvcHJpYXRlLgoKMjAwMy0xMi0wOSAgS2F6dWhpcm8gSW5hb2thIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmg6IEFkZCBzdXBwb3J0IGZvciBtMzJyMiBwcm9jZXNzb3IuICBJbmNsdWRpbmcKCWEgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24gLW0zMnIyIHRvIHNlbGVjdCBpdC4KCSogY29uZmlnL20zMnIvbTMyci5jOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBwcm9jZXNzb3IgdmFyaWFudC4KCSogY29uZmlnL20zMnIvbTMyci5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL3QtbTMycjogQWRkIG0zMnIyIG11bHRpbGlicy4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCB0aGUgbmV3IGNvbW1hbmQgbGluZSBzd2l0Y2guCgoyMDAzLTEyLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZGVmYXVsdHMuaCAoTE9DQUxfUkVHTk8pOiBHaXZlIHRoZSBkZWZhdWx0IGRlZmluaXRpb24uCgkqIGZsb3cuYyAoTE9DQUxfUkVHTk8pOiBSZW1vdmUuCgkqIHJlbG9hZDEuYyAoTE9DQUxfUkVHTk8pOiBMaWtld2lzZS4KCjIwMDMtMTItMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVBSIHRhcmdldC8xMTg0OAoJKiByczYwMDAuaCAoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogQWxsb3cgY2hhbmdlIG9mIG1vZGUKCWluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycyBiZXR3ZWVuIFRGbW9kZSBhbmQgREltb2RlLgoJKiByczYwMDAuYyAocnM2MDAwX2VtaXRfbW92ZSk6IFNwbGl0IG1vdmVzIGVhcmx5LgoJKHNlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBSYW5kb20gV2hpdGVzcGFjZSBDaGFuZ2UuCgkocnM2MDAwX3NwbGl0X211bHRpcmVnX21vdmUpOiBTdXBwb3J0IG1vdmVzIGludm9sdmluZyBGUCByZWdpc3RlcnMuCglFbWl0IGluc3RydWN0aW9ucyBkaXJlY3RseS4KCSogcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGFsdGl2ZWMubWQ6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byByczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZS4KCSogcnM2MDAwLm1kOiBVcGRhdGUgZm9yIGNoYW5nZXMgdG8gcnM2MDAwX3NwbGl0X211bHRpcmVnX21vdmUuCgkobW92dGZfaW50ZXJuYWwpOiBTdXBwb3J0IG1vdmVzIHRvL2Zyb20gR1BScy4KCjIwMDMtMTItMDggIFN0dWFydCBIYXN0aW5ncyAgPHN0dWFydEBhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBUeXBvIGluIHNwbGl0IG9mIGZwLXZhbHVlZCBpZl90aGVuX2Vsc2UuCgoyMDAzLTEyLTA4ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgdGFyZ2V0LzEzMTMyCgkqIGV4cG1lZC5jIChleHRyYWN0X2JpdF9maWVsZCk6IE9ubHkgY2FsbCBtb2RlX2Zvcl9zaXplIGZvciBzY2FsYXIKCWludGVnZXIgbW9kZXMuCgoyMDAzLTEyLTA4ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFJldmVydCBjaGFuZ2Ugb2YgRGVjIDc7IGdjYyBpcyBzdGlsbCBhIDIuMTMKCWRpcmVjdG9yeS4KCjIwMDMtMTItMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYubWQgKHN1YmRpMik6IE1lcmdlIHdpdGggX2ludGVybmFsIGluc25fYW5kX3NwbGl0LAoJYnkgdXNpbmcgbWF0Y2hfc2NyYXRjaC4KCShuZWdkaTIpOiBOZXcuCgoyMDAzLTEyLTA4ICBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgoJICAgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCVBSIGRlYnVnLzExMTE0CglTdXBwb3J0IG5hbWVzcGFjZXMgaW4gRFdBUkYgMiBvdXRwdXQuCgkqIGR3YXJmMm91dC5jIChnZW5fbmFtZXNwYWNlX2RpZSk6IE5ldyBmdW5jdGlvbi4KCShmb3JjZV9uYW1lc3BhY2VfZGllLCBzZXR1cF9uYW1lc3BhY2VfY29udGV4dCk6IE5ldyBmbnMuCgkoZGVjbGFyZV9pbl9uYW1lc3BhY2UpOiBOZXcgZm4uCgkoZ2VuX2RlY2xfZGllKTogQ2FsbCBkZWNsYXJlX2luX25hbWVzcGFjZS4gIEhhbmRsZSBuYW1lc3BhY2VzLgoJKGR3YXJmMm91dF9kZWNsKTogSGFuZGxlIG5hbWVzcGFjZXMuCgkoc2NvcGVfZGllX2Zvcik6IFBhc3MgdGhyb3VnaCBhIG5hbWVzcGFjZSBzY29wZS4KCShjbGFzc19zY29wZV9wKTogUmVuYW1lIHRvIGNsYXNzX29yX25hbWVzcGFjZV9zY29wZV9wLgoJKGdlbl9zdWJwcm9ncmFtX2RpZSwgZ2VuX3ZhcmlhYmxlX2RpZSk6IEFkanVzdC4KCShnZW5fc3RydWN0X29yX3VuaW9uX2RpZSk6IEFsd2F5cyBlbWl0IGEgZGVjbGFyYXRpb24KCWlmIGNvbnRleHRfZGllIGlzIGEgbmFtZXNwYWNlLgoKMjAwMy0xMi0wOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdW53aW5kLXBlLmggKHJlYWRfdWxlYjEyOCk6IEZpeCBoYW5kbGluZyBvZiBsYXJnZSB2YWx1ZXMKCShyZWFkX3NsZWIxMjgpOiBGaXggaGFuZGxpbmcgb2YgbGFyZ2UgdmFsdWVzCgoyMDAzLTEyLTA4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzEwMDYwCgkqIGVtaXQtcnRsLmMgKGNvcHlfcnR4X2lmX3NoYXJlZCk6IFNwbGl0IG91dCBpbnRvIC4uLgoJKGNvcHlfcnR4X2lmX3NoYXJlZF8xKTogaGVyZSBhbmQgb3B0aW1pemUgdGhlIGxhc3Qgb25lCglpbiB0aGUgc2VxdWVuY2UgaW50byB0YWlsLXJlY3Vyc2lvbi4KCShyZXNldF91c2VkX2ZsYWdzKTogT3B0aW1pemUgdGhlIGxhc3Qgb25lCglpbiB0aGUgc2VxdWVuY2UgaW50byB0YWlsLXJlY3Vyc2lvbi4KCjIwMDMtMTItMDggIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kOiBOZXcgc3BsaXQgdG8gdHJhbnNmb3JtICgoWCA8PCB5KSAtIDEpIGludG8gfih+KFgtMSkgPDwgeSkKCWZvciBjb25zdGFudCBYLgoKMjAwMy0xMi0wOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEb24ndCB0cnkgdXNpbmcgdGFpbCBvciByZWN1cnNpdmUgY2FsbHMKCWFmdGVyIHRoZSBmdW5jdGlvbiBib2R5IGhhcyBiZWVuIGV4cGFuZGVkLgoKMjAwMy0xMi0wOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoY21wc3RyIGV4cGFuZGVyKTogT2JleSBUQVJHRVRfSU5MSU5FX0FMTF9TVFJJTkdPUFMKCjIwMDMtMTItMDggIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xMzMyNCwgUFIgYWRhLzEyNjE0CgkqIGRvYy9pbnN0YWxsLnRleGk6IFVwZGF0ZSByZXF1aXJlbWVudHMgZm9yIGJ1aWxkaW5nIEFkYS4KCjIwMDMtMTItMDcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCSAgICBHcmFoYW0gUmVlZCA8Z3JlZWRAcG9ib3guY29tPgoKCSogY29sbGVjdDIuYyAoR0NDX09LX1NZTUJPTCk6IEFkZCBzdXBwb3J0IGZvciBBSVggQ19XRUFLRVhULgoJKEdDQ19VTkRFRl9TWU1CT0wpOiBTYW1lLgoKMjAwMy0xMi0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IERvbid0IHVzZSBGSU5BTF9QUkVTQ0FOX0xBQkVMLgoJKiBzeXN0ZW0uaCAoRklOQUxfUFJFU0NBTl9MQUJFTCk6IFBvaXNvbi4KCSogZG9jL3RtLnRleGkgKEZJTkFMX1BSRVNDQU5fTEFCRUwpOiBSZW1vdmUuCgoyMDAzLTEyLTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoY29tcGFyZSk6IENvbWJpbmUgdG9wbGV2ZWwgYW5kICQoU1VCRElSUykgY2FzZXMuCgoyMDAzLTEyLTA3ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiwgYWNsb2NhbC5tNDogUmV2ZXJ0IHRvIHByZS0yLjV4IGNvbnZlcnNpb24gc3RhdHVzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgd2l0aCBhdXRvY29uZiAyLjEzLgoKCSogY29uZmlndXJlLmluOiBSZXBsYWNlIEFDX0lOSVQsIEFDX09VVFBVVCwgQUNfQ0FOT05JQ0FMX1NZU1RFTQoJd2l0aCBtb2Rlcm4gZXF1aXZhbGVudHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogUmVwbGFjZSBnY2NfQUNfQ0hFQ0tfVFlQRSB3aXRoIEFDX0NIRUNLX1RZUEUuCgkqIGFjbG9jYWwubTQgKGdjY19BQ19DSEVDS19UWVBFKTogUmVtb3ZlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgd2l0aCAocHJlZmVycmVkKSBhdXRvY29uZiAyLjU3LgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBOb3RlIHRoYXQgJ2djYycgaXMgbm93IGEgMi41NyBkaXJlY3RvcnkuCgoyMDAzLTEyLTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMjk2NQoJKiBjYWxsZXItc2F2ZS5jIChzYXZlX2NhbGxfY2xvYmJlcmVkX3JlZ3MpOiBEbyBub3Qgc2F2ZS9yZXN0b3JlCglyZWdpc3RlcnMgYXJvdW5kIG5vLXJldHVybiBjYWxscy4KCjIwMDMtMTItMDcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBNYWtlIG1pbmltdW0gbmVjZXNzYXJ5IGNoYW5nZXMgZm9yIGF1dG9jb25mIDIuNXguCgkqIGFjbG9jYWwubTQ6IE1ha2UgbWluaW11bSBuZWNlc3NhcnkgY2hhbmdlcyBmb3IgYXV0b2NvbmYgMi41eC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlIHdpdGggYXV0b2NvbmYgMi41OC4KCjIwMDMtMTItMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEzMzE4CgkqIGxvb3AuYyAoZXhwcmVzc19mcm9tKTogUHJvdGVjdCBpbnRlZ2VyIGRpdmlzaW9uIGZyb20gb3ZlcmZsb3cuCgoyMDAzLTEyLTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMzA2MAoJKiBmdW5jdGlvbi5jIChmaXh1cF92YXJfcmVmc18xKSBbU1VCUkVHXTogUmVjb2duaXplIGV2ZW4gaWYgYQoJcmVwbGFjZW1lbnQgYWxyZWFkeSBleGlzdHMuICBGaXggYWdhaW4gdGhlIHdob2xlIGluc24gaWYgdGhhdCBmYWlscy4KCjIwMDMtMTItMDYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobWFjaG9fYnJhbmNoX2lzbGFuZHMpOiBVc2UKCUhPU1RfV0lERV9JTlRfUFJJTlRfVU5TSUdORUQuCgoyMDAzLTEyLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAoaW5jb3Jwb3JlYWxfZnVuY3Rpb25fcCk6IE5ldy4KCShhc3NlbWJsZV9leHRlcm5hbCk6IFVzZSBpdCBhcyBhIGZpbHRlci4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9leHRlcm5hbCk6IERvbid0IGNoZWNrIGZvciBidWlsdGluCglmdW5jdGlvbnMgaGVyZS4KCjIwMDMtMTItMDYgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFucnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChJT1IgKENPTVBBUklTT04pIChBTkQpKTogTmV3IGRlZmluZV9zcGxpdHMuCgoyMDAzLTEyLTA2ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKHByb2dyYW1fdHJhbnNmb3JtX2Nyb3NzX25hbWUpOiBEZWxldGUuCgkoR0NDX0NST1NTX05BTUUsIENQUF9DUk9TU19OQU1FKTogRGVsZXRlLgoJKFBST1RPSVpFX0NST1NTX05BTUUsIFVOUFJPVE9JWkVfQ1JPU1NfTkFNRSk6IERlbGV0ZS4KCShBUl9GT1JfVEFSR0VULCBSQU5MSUJfRk9SX1RBUkdFVCwgTk1fRk9SX1RBUkdFVCk6IEFkanVzdCBmb3IgYWJvdmUuCgkoaW5zdGFsbF9jcHAsIGluc3RhbGxfZHJpdmVyLCBpbnN0YWxsLW1hbiwgdW5pbnN0YWxsKTogTGlrZXdpc2UuCgoyMDAzLTEyLTA2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIDEzMTY5CgkqIGJhc2ljLWJsb2NrLmggKFBST1BfQVNNX1NDQU4pOiBEZWZpbmUuCgkqIGZpbmFsLmMgKHJlZ3NfYXNtX2Nsb2JiZXJlZCk6IE5ldyBhcnJheS4KCSogcmVncy5oIChyZWdzX2FzbV9jbG9iYmVyZWQpOiBEZWNsYXJlLgoJKiBmbG93LmMgKGxpZmVfYW5hbHlzaXMpOiBJbml0IGl0LgoJKG1hcmtfc2V0X3JlZ3MpOiBTZXQgUFJPUF9BU01fU0NBTiBmb3IgYXNtcy4KCShtYXJrX3NldF8xKTogU2V0IHJlZ3NfYXNtX2Nsb2JiZXJlZC4KCSogZ2xvYmFsLmMgKGdsb2JhbF9hbGxvYyk6IERvbid0IHNldCBlbGltaW5hYmxlX3JlZ3NldCB3aGVuCglyZWdzX2FzbV9jbG9iYmVyZWQuCgoyMDAzLTEyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBEZWZpbmUuCgoJUFIgYysrLzEzMzE0CgkqIGVtaXQtcnRsLmMgKHNldF9tZW1fYXR0cmlidXRlc19taW51c19iaXRwb3MpOiBSb2J1c3RpZnkuCgoyMDAzLTEyLTA1ICBBbmRyZXcgUGluc2tpIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGRyaXZlci8xMzIxMQoJKiBnY2MuYyAoZXhlY3V0ZSkgSW5jcmVtZW50IGV4ZWN1dGlvbl9jb3VudCB3aGVuIHJldHVybmluZwoJZWFybHkgYmVjYXVzZSB2ZXJib3NlX29ubHlfZmxhZyBpcyB0cnVlLgoKMjAwMy0xMi0wNSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBjcHBmaWxlcy5jIChmaWxlX2hhc2hfaGFzaCk6ICBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGhhc2hfc3RyaW5nX2VxKTogIFJlbmFtZWQgc3RhdGljIGZ1bmN0aW9uIHRvIGZpbGVfaGFzaF9lcS4KCShfY3BwX2luaXRfZmlsZXMpOiAgQ3JlYXRlIGZpbGVfaGFzaCB0YWJsZSB3aXRoIGFib3ZlIGNhbGxiYWNrcy4KCShjcHBfaW5jbHVkZWQpOiAgTXVzdCB1c2UgaHRhYl9maW5kX3dpdGhfaGFzaCBpbnNlYWQgb2YgaHRhYl9maW5kLgoJKF9jcHBfZmluZF9maW5kLCBtYWtlX2NwcF9kaXIpOiAgTXVzdCB1c2UgaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoLgoKMjAwMy0xMi0wNSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBsaW5lLW1hcC5oIChzb3VyY2VfbG9jYXRpb24pOiAgTmV3IHR5cGVkZWYuCgkoZmlsZWxpbmUpOiAgUmVkZWZpbmVkIGFzIHNvdXJjZV9sb2NhdGlvbi4KCShzdHJ1Y3QgbGluZV9tYXAsIGxpbmVtYXBfYWRkLCBsaW5lbWFwX2xvb2t1cCk6ICBSZXBsYWNlIGZpbGVmaWxlCglieSBzb3VyY2VfbG9jYXRpb24uCgkqIGxpbmUtbWFwLmMgKGxpbmVtYXBfYWRkLCBsaW5lbWFwX2xvb2t1cCk6ICBVc2Ugc291cmNlX2xvY2F0aW9uLgoKMjAwMy0xMi0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBBZGQgZHVtbXkKCWZpZWxkIHRvIHN1cHByZXNzIC1XcGFkZGVkIHdhcm5pbmdzLgoKMjAwMy0xMi0wNSAgU3R1YXJ0IEhhc3RpbmdzICA8c3R1YXJ0QGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBDb3JyZWN0IG1hY3JvIHRlc3Qgb2YgVEFSR0VUX01BQ0hPLgoKMjAwMy0xMi0wNSAgU3R1YXJ0IE1lbmVmeSA8c3R1YXJ0Lm1lbmVmeUBzdC5jb20+CgkgICAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJUFIgdGFyZ2V0LzEzMzAyCgkqIHNoLmMgKHNoX2J1aWxkX2J1aWx0aW5fdmFfbGlzdCk6IFVzZSAoKmxhbmdfaG9va3MudHlwZXMubWFrZV90eXBlKS4KCjIwMDMtMTItMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZG9qdW1wLmMgKGRvX2p1bXApOiBJZiB0aGUgZXhwcmVzc2lvbiBiZWluZyBjb21wYXJlZCBhZ2FpbnN0Cgl6ZXJvLCBpcyB0aGUgc3VicmVnIG9mIGEgcHJvbW90ZWQgdmFyaWFibGUsIHBlcmZvcm0gdGhlIGNvbXBhcmlzb24KCWluIHRoZSBwcm9tb3RlZCBtb2RlLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogT3B0aW1pemUgc2lnbiBhbmQKCXplcm8tZXh0ZW5zaW9ucyBvZiBzdWJyZWdzIG9mIHByb21vdGVkIHZhcmlhYmxlcyB3aGVyZSB0aGUKCWV4dGVuc2lvbiBpcyBpZGVudGljYWwgdG8gdGhhdCB1c2VkIHRvIHByb21vdGUgdGhlIHZhcmlhYmxlLgoKMjAwMy0xMi0wNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJUFIgdGFyZ2V0LzEzMjU2CgkqIHJlc291cmNlLmggKGVudW0gbWFya19yZXNvdXJjZV90eXBlKTogUmVtb3ZlIG1lbWJlciBNQVJLX0RFU1QuCglUaGUgb25seSB1c2VyIGNoYW5nZWQgYXMgZm9sbG93czoKCSogcmVzb3VyY2UuYyAobWFya19zZXRfcmVzb3VyY2VzKSA8Y2FzZSBTRVQ+OiBBbHdheXMgcmVjdXJzZSBmb3IKCVNFVF9TUkMgKHgpLgoJPGNhc2UgU0lHTl9FWFRSQUNULCBjYXNlIFpFUk9fRVhUUkFDVD46IEFsd2F5cyByZWN1cnNlIG9uCglvcGVyYW5kcy4KCTxjYXNlIFNUUklDVF9MT1dfUEFSVD46IERlbGV0ZSwgZGVmZXJyaW5nIHRvIGRlZmF1bHQgY29kZS4KCjIwMDMtMTItMDUgIFdhbGRlayBIZWJpc2NoIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CgoJKiBzdG10LmMgKGV4cGFuZF9ubF9nb3RvX3JlY2VpdmVyKTogQ29weSBoYXJkIHJlZ2lzdGVyIGNsb2JiZXJzCglhbmQgQVNNX0lOUFVUIGJhcnJpZXIgZnJvbSBleHBhbmRfYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIuCgoyMDAzLTEyLTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZXhwYW5kX2NhbGwpOiBEb24ndCBhbGxvdyBsYXppeSBiaW5kaW5nCglmb3IgbjMyICYgbjY0IGFiaWNhbGxzLgoKMjAwMy0xMi0wNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIGJvb3RzdHJhcC8xMzE0NQoJKiBjb25maWcvbWlwcy9taXBzLmggKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IEFkanVzdCBjb21tZW50LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmVnX25hbWVzLCBtaXBzX3N3X3JlZ19uYW1lcyk6IEFkZCAkZmNhbGwuCgkobWlwc19sb2FkX2dvdCk6IEFsd2F5cyBjcmVhdGUgYSBjb25zdGFudCBNRU0uCgkobWlwc19leHBhbmRfY2FsbCk6IFVzZSBsb2FkX2NhbGxzaSBhbmQgbG9hZF9jYWxsZGkuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19MT0FEX0NBTEwsIEZBS0VfQ0FMTF9SRUdOTyk6IE5ldyBjb25zdHMuCgkobG9hZF9jYWxsc2ksIGxvYWRfY2FsbGRpKTogTmV3IHBhdHRlcm5zLgoKMjAwMy0xMi0wNSAgUGV0ZXIgR2Vyd2luc2tpIDxwZXRlckBnZXJ3aW5za2kuZGU+CgoJKiB0cmVlLmRlZiAoUExBQ0VIT0xERVJfRVhQUik6IENsYXJpZnkgY29tbWVudGFyeS4KCjIwMDMtMTItMDUgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGNvbmZpZy9kMzB2L2QzMHYtcHJvdG9zLmggLCBjb25maWcvZDMwdi9kMzB2LmMsCgljb25maWcvZHNwMTZ4eC9kc3AxNnh4LXByb3Rvcy5oLCBjb25maWcvZHNwMTZ4eC9kc3AxNnh4LmMsCgljb25maWcvZnIzMC9mcjMwLXByb3Rvcy5oLCBjb25maWcvZnIzMC9mcjMwLmMsCgljb25maWcvaTM3MC9pMzcwLXByb3Rvcy5oLCBjb25maWcvaTM3MC9pMzcwLmMsCgljb25maWcvaTk2MC9pOTYwLXByb3Rvcy5oLCBjb25maWcvaTk2MC9pOTYwLmMsCgljb25maWcvaXAyay9pcDJrLXByb3Rvcy5oLCBjb25maWcvaXAyay9pcDJrLmMsCgljb25maWcvbTMyci9tMzJyLXByb3Rvcy5oLCBjb25maWcvbTMyci9tMzJyLmMsCgljb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oLCBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMsCgljb25maWcvbnMzMmsvbnMzMmstcHJvdG9zLmgsIGNvbmZpZy9uczMyay9uczMyay5jOgoJQ29udmVydCB0byBJU08gQzkwIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMuCgoyMDAzLTEyLTA1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2V4dGVuZC50ZXhpIChDb25zdHJ1Y3RpbmcgQ2FsbHMpOiBBZGQgd2FybmluZyBhYm91dAoJdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMuCgoyMDAzLTEyLTA1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG1pZGRsZS1lbmQvMTExNTEKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogTmV3IGZpZWxkICd4X25ha2VkX3JldHVybl9sYWJlbCcuCgkqIGZ1bmN0aW9uLmMgKGZyZWVfYWZ0ZXJfY29tcGlsYXRpb24pOiBTZXQgaXQgdG8gTlVMTC4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogRW1pdCAnbmFrZWRfcmV0dXJuX2xhYmVsJyBpZiBpdCBleGlzdHMuCgkqIHJ0bC5oIChleHBhbmRfbmFrZWRfcmV0dXJuKTogRGVjbGFyZS4KCSogc3RtdC5jIChleHBhbmRfbmFrZWRfcmV0dXJuKTogTmV3IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEKCWp1bXAgdG8gJ25ha2VkX3JldHVybl9sYWJlbCcuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3JldHVybik6IENhbGwgZXhwYW5kX25ha2VkX3JldHVybgoJaW5zdGVhZCBvZiBleHBhbmRfbnVsbF9yZXR1cm4uCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAodW50eXBlZF9yZXR1cm4pOiBMaWtld2lzZS4KCjIwMDMtMTItMDQgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8xMTMyMgoJKiBjb25maWcvc2gvbmV0YnNkLWVsZi5oIChOT19QUk9GSUxFX0NPVU5URVJTKTogRGVmaW5lLgoKCVBSIHRhcmdldC8xMjQ2NwoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfdm1zdW1tYm0pOiBGaXggdHlwby4KCjIwMDMtMTItMDQgIFN0dWFydCBIYXN0aW5ncyAgPHN0dWFydEBhcHBsZS5jb20+CgoJKiByczYwMDAuYyAob3V0cHV0X2NhbGwsIG1hY2hvX2JyYW5jaF9pc2xhbmRzLAoJYWRkX2NvbXBpbGVyX2JyYW5jaF9pc2xhbmQsIG5vX3ByZXZpb3VzX2RlZiwgZ2V0X3ByZXZpb3VzX2xhYmVsKQoJUmV2aXNpb25zIG9mIHh4X3N0dWIgZnVuY3Rpb25zIGZvciBicmFuY2ggaXNsYW5kcywKCWFkZCAtZlBJQyBzdXBwb3J0IGZvciBEYXJ3aW4uCgkqIHJzNjAwMC1wcm90b3MuaCAob3V0cHV0X2NhbGwpIFByb3RvdHlwZS4KCSogcnM2MDAwLm1kIFVzZSBvdXRwdXRfY2FsbC4KCSogaW52b2tlLnRleGkgRXhwbGFpbiBEYXJ3aW4gc2VtYW50aWNzIG9mIC1sb25nY2FsbC4KCSogdGVzdHN1aXRlL2djYy5kZy9kYXJ3aW4tYWJpLTEuYyBSZXZpc2UgdGVzdGNhc2UgZm9yIC1sb25nY2FsbC9qYnNyLgoKMjAwMy0xMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFkZHFpM19jYXJyeSk6IFVzZSBxIG5vdCByIGNvbnN0cmFpbnRzLgoJKHN1YnFpM19jYXJyeSk6IExpa2V3aXNlLgoKMjAwMy0xMi0wNCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEzMjYwCgkqIHNoLXByb3Rvcy5oIChzaF9leHBhbmRfdF9zY2MpOiBEZWNsYXJlLgoJKiBzaC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgY21wc2lfb3BlcmFuZC4KCSogc2guYyAoY21wc2lfb3BlcmFuZCwgc2hfZXhwYW5kX3Rfc2NjKTogTmV3IGZ1bmN0aW9ucy4KCSogc2gubWQgKGNtcHNpKTogVXNlIGNtcHNpX29wZXJhbmQuICBJZiBUX1JFRyBpcyBjb21wYXJlZCB0bwoJc29tZXRoaW5nIHRoYXQgaXMgbm90IGEgQ09OU1RfSU5ULCBjb3B5IGl0IGludG8gYSBwc2V1ZG8gcmVnaXN0ZXIuCgkoc3ViYyk6IEZpeCBkZXNjcmlwdGlvbiBvZiBuZXcgVCB2YWx1ZS4KCShzbHQsIHNndCwgc2dlLCBzZ3R1KTogRG9uJ3QgY2xvYmJlciBUIGFmdGVyIHJ0bCBnZW5lcmF0aW9uIGlzIG92ZXIuCgkoc2x0dSwgc2xldSwgc2dldSk6IExpa2V3aXNlLgoJKHNlcSwgc25lKTogTGlrZXdpc2UuIFVzZSBzaF9leHBhbmRfdF9zY2MuCgoyMDAzLTEyLTA0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogR2VuZXJhbGl6ZSB0aGUgQ09ORklHX0hFQURFUlMgcGF0dGVybiB1bmRlciB3aGljaAoJd2Ugc3RhbXAgY3N0YW1wLWguCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogUHVsbCBBQ19DSEVDS19IRUFERVIgY2FsbCBvdXQgb2Ygc2hlbGwgaWYgc3RhdGVtZW50Cgl0byBhdm9pZCB0cm91YmxlIHdoZW4gdXBkYXRpbmcgdG8gYXV0b2NvbmYgMi41eC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlICh3aXRoIGF1dG9jb25mIDIuMTMgc3RpbGwpLgoKMjAwMy0xMi0wNCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5tZCAodHJ1bmNkaXFpMik6IFVzZSBhbmRpIG9wY29kZSBmb3IgaW1tZWRpYXRlLgoJKHJlbG9hZF9vdXRkZisxLHJlbG9hZF9vdXRkZisyKTogUmVtb3ZlIGNvbnN0cmFpbnRzLgoJKG1vdnYxNnNmX2kpOiBGeGkgbXVsdGlwbGllciBmb3IgU1VCUkVHX0JZVEUuCgkobW92djhxaV9pKzIpOiBaZXJvLWV4dGVuZCBsb3cgYnl0ZSBiZWZvcmUgYWRkaW5nIGl0IHRvIGhpZ2ggYnl0ZS4KCShmaXByLCBmdHJ2KTogQWRkIC5zIHN1ZmZpeCB0byBvcGNvZGUuCgoyMDAzLTEyLTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzEzMTg2CgoJUmV2ZXJ0IGFsbCBvZiB0aGUgZm9sbG93aW5nIHBhdGNoLCBleGNlcHQgdGhlIGFkZGl0aW9uIG9mCglob29rX2Jvb2xfbWFjaGluZV9tb2RlX3RydWU6CgoJMjAwMy0xMS0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRhcmdob29rcy5vLCByZWxvYWQubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkoR1RGSUxFUyk6IEFkZCB0YXJnaG9va3MuYy4KCShndC10YXJnaG9va3MuaCk6IE5ldyBydWxlOyBkZXBlbmQgb24gcy1ndHlwZS4KCSogdGFyZ2V0LmggKGRpcmVjdF9wb29sX2xvYWRfcCk6IE5ldyBob29rLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9ESVJFQ1RfUE9PTF9MT0FEX1ApOiBOZXcgbWFjcm8uCgkoVEFSR0VUX0lOSVRJQUxJWkVSKTogSW5jbHVkZSBpdC4KCSogdGFyZ2hvb2tzLmggKGRlZmF1bHRfZGlyZWN0X3Bvb2xfbG9hZF9wKTogRGVjbGFyZS4KCShob29rX2Jvb2xfbWFjaGluZV9tb2RlX3RydWUpOiBEZWNsYXJlLgoJKiB0YXJnaG9va3MuYzogSW5jbHVkZSBpbnNuLWNvbmZpZy5oLCByZWNvZy5oLCBnZ2MuaCBhbmQKCWd0LXRhcmdob29rcy5oLgoJKHBvb2xfc3ltYm9sKTogTmV3IHZhcmlhYmxlLgoJKGRlZmF1bHRfZGlyZWN0X3Bvb2xfbG9hZF9wKTogTmV3IGZ1bmN0aW9uLgoJKGhvb2tfYm9vbF9tYWNoaW5lX21vZGVfdHJ1ZSk6IE5ldyBmdW5jdGlvbi4KCSogcmVsb2FkLmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkoZmluZF9yZWxvYWRzKTogSWYgYW4gYWx0ZXJuYXRpdmUgd2lsbCBmb3JjZSBhIGNvbnN0YW50IGludG8gbWVtb3J5LAoJY291bnQgYW4gZXh0cmEgcmVsb2FkIGlmIGNvbnN0YW50IHBvb2wgc3ltYm9scyBhcmUgbm90IHZhbGlkCglhZGRyZXNzZXMuICBJZiBhbiBhbHRlcm5hdGl2ZSB1c2VzIG1lbW9yeSB0byBtb3ZlIHZhbHVlcyBiZXR3ZWVuCglyZWdpc3RlcnMsIGNvdW50IHRoZSBtb3ZlIGFzIHR3byByZWxvYWRzIHJhdGhlciB0aGFuIG9uZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChUQVJHRVRfRElSRUNUX1BPT0xfTE9BRF9QKTogRGVmaW5lLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0RJUkVDVF9QT09MX0xPQURfUCk6IERvY3VtZW50LgoKMjAwMy0xMi0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2hwdXguaCAoVEFSR0VUX0hBVkVfVExTKTogRGVmaW5lIGl0IHRvIGZhbHNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFRBUkdFVF9IQVZFX1RMUyk6IERlZmluZSBpdCB0byB0cnVlIGlmCglIQVZFX0FTX1RMUyBpcyB0cnVlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKFRBUkdFVF9IQVZFX1RMUyk6IERvIG5vdCBkZWZpbmUgaXQuCgoyMDAzLTEyLTAzICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBnY2MuYyAoaW5pdF9zcGVjKTogUGFzcyAtbHVud2luZCB0byBpbml0X2djY19zcGVjcyBpbiBlaF9uYW1lLgoKCSogZ2NjLXBhZ2UuYyAoZXh0cmFfb3JkZXJfc2l6ZV90YWIpOiBDb3JyZWN0IGNvbW1lbnQuCgoyMDAzLTEyLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKHB1c2gpOiBDYWxsIGdlbl9wdXNoX2g4MzAwaHNfYWR2YW5jZWQKCWluc3RlYWQgb2YgZ2VuX3B1c2hfaDgzMDBocy4KCShwb3ApOiBDYWxsIGdlbl9wb3BfaDgzMDBoc19hZHZhbmNlZCBpbnN0ZWFkIG9mCglnZW5fcG9wX2g4MzAwaHMuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChUUkFNUE9MSU5FX1NJWkUpOiBVc2UgUG1vZGUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKnRhYmxlanVtcF9oODMwMGhzX2FkdmFuY2VkKToKCVRpZ2h0ZW4gdGhlIHByZWRpY2F0ZS4KCSgqdGFibGVqdW1wX2g4MzAwaHNfbm9ybWFsKTogVGlnaHRlbiB0aGUgcHJlZGljYXRlLgoJKHB1c2hfaDgzMDBocyk6IENoYW5nZSB0bwoJcHVzaF9oODMwMGhzX2FkdmFuY2VkLgoJKHBvcF9oODMwMGhzKTogQ2hhbmdlIHRvIHBvcF9oODMwMGhzX2FkdmFuY2VkLgoKMjAwMy0xMi0wMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBydGwuYzogRml4IHR5cG8uCgkqIGNvbmZpZy9taXBzL21pcHMuaDogRGl0dG8uIEZpeCBmb3JtYXR0aW5nLgoKMjAwMy0xMi0wNCAgQmVuIEVsbGlzdG9uICA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZnV0dXJlLm9wdGlvbnM6IFJlbW92ZS4gTW92ZSB0byBnbnUub3JnIHdlYiBwYWdlcy4KCjIwMDMtMTItMDMgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogYy1wYXJzZS5pbiAoY19pbl9pdGVyYXRpb25fc3RtdCwgY19pbl9jYXNlX3N0bXQpOiBNb3ZlCglmcm9tIGhlcmUuLi4KCSogYy10cmVlLmg6IHRvIGhlcmUuCgoyMDAzLTEyLTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgb3B0aW1pemF0aW9uLzEyMzI0CgkqIHRvcGxldi5jICAocmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uKTogRG8gbm90IGRlZmZlciB3aGVuIGNvbXBpbGluZwoJaW4gdW5pdC1hdC1hLXRpbWUgbW9kZS4KCjIwMDMtMTItMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IE9ubHkgc2V0IFJUWF9VTkNIQU5HSU5HX1AgZm9yCglyZWFkLW9ubHkgZmllbGQgaWYgY2xlYXJlZCBpcyAwLgoKMjAwMy0xMi0wMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBNYXJrIG9ic29sZXRlIHRhcmdldHMgZm9yIEdDQyAzLjQuCgoyMDAzLTEyLTAzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYWNsb2NhbC5tNCAoQU1fSUNPTlYpOiBBZGQgZXhwbGljaXQgY2hlY2sgZm9yIGljb252LmguCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlLmluOiBSZWdlbmVyYXRlLgoJKiBjcHBoYXNoLmg6IENoZWNrIGJvdGggSEFWRV9JQ09OViBhbmQgSEFWRV9JQ09OVl9IIGJlZm9yZQoJaW5jbHVkaW5nIGljb252LmguCgoyMDAzLTEyLTAzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8xMTIyOQoJKiBjc2UuYyAoY3NlX2luc24pOiBTZXQgY2xhc3NwIHVzaW5nIHNyY19jb25zdF9lbHQgaWYKCXNyY19lcXZfZWx0IGlzIE5VTEwuCgoyMDAzLTEyLTAzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGdjc2UuYyAocmVnX2NsZWFyX2xhc3Rfc2V0KTogTmV3IGZ1bmN0aW9uLgoJKHJlZ19zZXRfaW5mbyk6IElmIGRhdGEgaXMgbm9uLW51bGwsIHRyZWF0IGl0IGFzIGFuIHNiaXRtYXAgb2YKCXJlZ2lzdGVycywgc2V0IHRoZSBiaXQgZm9yIHRoZSByZWdpc3RlciBiZWluZyBzZXQuCgkoY29tcHV0ZV9zdG9yZV90YWJsZSk6IEFsbG9jYXRlIGxhc3Rfc2V0X2luIHdpdGggeGNhbGxvYy4gIERvIG5vdAoJbWVtc2V0IHRoaXMgYXJyYXkgb24gZWFjaCBpdGVyYXRpb24uICBQYXNzIHJlZ19zZXRfaW5fYmxvY2tbYmItPmluZGV4XQoJdG8gbm90ZV9zdG9yZXMgd2hpbGUgY29tcHV0aW5nIGxhc3Rfc2V0X2luIGluc3RlYWQgb2Ygc2Nhbm5pbmcKCWxhc3Rfc2V0X2luIGFmdGVyIHRoZSBmaXJzdCBwYXNzIHRocm91Z2ggdGhlIGluc25zLgoJQ2xlYXIgbGFzdF9zZXRfaW4gdXNpbmcgcmVnX2NsZWFyX2xhc3Rfc2V0IGluc3RlYWQgb2YgZXhwbGljaXRseQoJcmVzY2FubmluZyBhZnRlciBlYWNoIGluc24uICBJZiBjaGVja2luZyBpcyBlbmFibGVkLCBhc3NlcnQgdGhhdAoJbGFzdF9zZXRfaW4gaXMgY29tcGxldGVseSB6ZXJvZWQgYWZ0ZXIgZWFjaCBiYiBoYXMgYmVlbiBwcm9jZXNzZWQuCgoyMDAzLTEyLTAyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGdlb2Zmay5vcmc+CgoJKiBkZi5jIChkZl91c2VzX3JlY29yZCkgPE1FTT46IFRoZSBhcmd1bWVudCBvZiBhIE1FTSBpcyByZWFkLW9ubHksCgluZXZlciByZWFkLXdyaXRlLgoJPFJFRz46IERlbGV0ZSBpbmNvcnJlY3QgY29tbWVudC4KCTxTRVQ+OiBSZW1vdmUgJ3VzZV9mbGFncycgdmFyaWFibGUuCgoyMDAzLTEyLTAzICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBNYWtlIHN1cmUgcGFybSBQQVJBTExFTCBjb21iaW5lZAoJaW4gcmVnIGlzIGNvbXBvc2VkIG9mIG1vcmUgdGhhbiBvbmUgb2JqZWN0IGFuZCB0aGUgbW9kZSByZWFsbHkKCXByb2R1Y2VzIGEgcmVnLgoKMjAwMy0xMi0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChjbGFzc2lmeV9hcmd1bWVudCk6IE1ha2UgaXQgNjRiaXQgY2xlYW4uCgoyMDAzLTEyLTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2V4dGVybmFsKTogUmVwbGFjZSBjaGVja3MgZm9yCglzcGVjaWZpYyBidWlsdGluLWluIGZ1bmN0aW9ucyB3aXRoIGEgY2hlY2sgZm9yIERFQ0xfQlVJTFRJTl9JTi4KCjIwMDMtMTItMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoUFVUX0NPREUsIFBVVF9NT0RFKTogUmVtb3ZlIEVOVU1fQklURklFTEQgY2FzdC4KCSogdHJlZS5oIChUUkVFX1NFVF9DT0RFKTogTGlrZXdpc2UuCgkqIHJlY29nLmggKHN0cnVjdCBpbnNuX29wZXJhbmRfZGF0YSk6IE1vdmUgY29uc3QgYWZ0ZXIgRU5VTV9CSVRGSUVMRC4KCjIwMDMtMTItMDIgIEJlbiBFbGxpc3RvbiAgPGJqZUB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGRieHN0Y2xhc3MuaDogUmVuYW1lIGZyb20gdGhpcyAuLgoJKiB4Y29mZi5oOiAuLiB0byB0aGlzLgoJKiB4Y29mZm91dC5jOiBJbmNsdWRlIHhjb2ZmLmguCgoyMDAzLTEyLTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoR0NDX0NGTEFHUyk6IEFkZCAtV29sZC1zdHlsZS1kZWZpbml0aW9uLgoKMjAwMy0xMi0wMSAgSmFtZXMgTGVta2UgPGppbUB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9ydHhfY29zdHMpOiBJbXByb3ZlIGZvciB4c2NhbGUgbXVsdGlwbHkuCgoyMDAzLTEyLTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTE2MzQKCSogcmVjb2cuYyAoc3BsaXRfaW5zbik6IEZhY3RvciB0ZXN0IG9mIElOU05fUCBhbmQgaGFuZGxpbmcgb2YKCXNldF9ub29wX3Agb3V0IG9mIGhlcmUgaW50byB0aGUgdHdvIGNhbGxlcnMuCgkoc3BsaXRfYWxsX2luc25zKTogQWRkIElOU05fUCB0ZXN0IGFuZCBzZXRfbm9vcF9wIGhhbmRsaW5nIGhlcmUuCglJZiBkZWxldGluZyBhIG5vLW9wIHNldCBhZnRlciByZWxvYWQgdGhhdCBoYXMgYSBSRUdfVU5VU0VEIG5vdGUsCgltYXJrIHRoZSBiYXNpYyBibG9jayBhcyBjaGFuZ2VkIGFuZCByZWNhbGN1bGF0ZSBsaWZlIGluZm9ybWF0aW9uLgoJKHNwbGl0X2FsbF9pbnNuc19ub2Zsb3cpOiBBZGQgSU5TTl9QIHRlc3QgYW5kIHNldF9ub29wX3AgaGFuZGxpbmcKCWhlcmUuCgoyMDAzLTEyLTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTIzMjIKCSogZ2NzZS5jIChzdHJ1Y3QgbHNfZXhwcik6IENoYW5nZSB0eXBlIG9mIGhhc2hfaW5kZXggZnJvbSBpbnQgdG8KCXVuc2lnbmVkIGludC4KCShoYXNoX2V4cHIpOiBEb2N1bWVudCBoYXNoX3RhYmxlX3NpemUgcGFyYW1ldGVyIGFuZCB3cmFwIGxvbmcgbGluZS4KCShsZHN0X2VudHJ5KTogQ2FsY3VsYXRlIGV4cHJlc3Npb24ncyBoYXNoX2luZGV4IGFuZCByZWNvcmQgaW4gcHRyLgoJKHRyaW1fbGRfbW90aW9uX21lbXMpOiBVc2UgaGFzaF9pbmRleCB0byBzZWFyY2ggYSBzaW5nbGUgYnVja2V0CglpbnN0ZWFkIG9mIHNjYW5uaW5nIHRoZSBlbnRpcmUgaGFzaF90YWJsZS4gIFJlbW92ZSB0aGUgImRlbCIgbG9jYWwKCXZhcmlhYmxlIGFuZCB1c2UgdGhlIGVxdWl2YWxlbnQgImV4cHIgPT0gMCIgaW5zdGVhZC4gIENoYW5nZSBsYXN0Cgl0byBiZSBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCwgdG8gc2ltcGxpZnkKCWFuZCBzcGVlZC11cCBkZWxldGluZyBmcm9tIGEgbGlua2VkIGxpc3QuCgoyMDAzLTEyLTAxICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBkb2MvY29udHJpYi50ZXhpOiBVcGRhdGUgRGF2aWQgTW9zYmVyZ2VyLgoKCSogZG9jL2MtdHJlZS50ZXhpIChDT05TVFJVQ1RPUik6IENsYXJpZnkgZWxlbWVudCBvcmRlciBhbmQgaGFuZGxpbmcKCW9mIG1pc3NpbmcgZmllbGRzLgoKCVBSIHRhcmdldC84NDA3CgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9mdW5jdGlvbl9hcmcpOiBGb3Igc2luZ2xlLXJlZyBIRkEsIGNhbGwKCWdlbl9ydHhfUkVHIHRvIGNyZWF0ZSBuZXcgcmVnIHdpdGggYXJndW1lbnQgbW9kZS4KCjIwMDMtMTItMDEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGdnYy5oIChzdHJ1Y3QgYWxsb2Nfem9uZSk6IE1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbiB1cC4KCShuZXdfZ2djX3pvbmUpOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlLgoJKGRlc3Ryb3lfZ2djX3pvbmUpOiBEaXR0by4KCSogZ2djLXNpbXBsZS5jIChuZXdfZ2djX3pvbmUpOiBOZXcgZnVuY3Rpb24sIGRvZXMgbm90aGluZy4KCShkZXN0cm95X2dnY196b25lKTogRGl0dG8uCgkqIGdnYy1wYWdlLmMgKG5ld19nZ2Nfem9uZSk6IE5ldyBmdW5jdGlvbiwgZG9lcyBub3RoaW5nLgoJKGRlc3Ryb3lfZ2djX3pvbmUpOiBEaXR0by4KCSogZ2djLXpvbmUuYyAoc3RydWN0IHBhZ2VfZW50cnkpOiBGaXggY29tbWVudC4KCShnZ2NfYWxsb2NfdHlwZWQpOiBVc2UgYSBzd2l0Y2ggc3RhdGVtZW50IGluc3RlYWQgb2YgaWZzLgoJKG5ld19nZ2Nfem9uZSk6IE5ldyBmdW5jdGlvbiB0byBzZXQgdXAgYSBuZXcgR0Mgem9uZS4KCShkZXN0cm95X2dnY196b25lKTogTmV3IGZ1bmN0aW9uIHRvIHJlbW92ZSBhIEdDIHpvbmUuCglpbml0X2dnYyk6IFVzZSBuZXdfZ2djX3pvbmUgdG8gc2V0IHVwIHRoZSBkZWZhdWx0IHpvbmVzLgoJKGdnY19jb2xsZWN0KTogV2FsayBhIGxpc3Qgb2Ygem9uZXMsIGluc3RlYWQgb2YganVzdCB0aGUKCWRlZmF1bHQgem9uZXMuICBSZXBvcnQgc3RhdGlzdGljcyB1c2luZyB0aGUgem9uZSBuYW1lLgoKMjAwMy0xMi0wMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogdW5yb2xsLmMgKGZpbmRfc3BsaXR0YWJsZV9naXZzKTogQWRkIG1pc3NpbmcgZXh0ZW5kX3ZhbHVlX2Zvcl9naXYuCgoyMDAzLTEyLTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTI2MjgKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2p1bXBfYnlwYXNzKTogQ2FsbCByZWdfc2Nhbi4KCSogcmVnY2xhc3MuYyAocmVnX3NjYW4pOiBJbmNsdWRlIGFsbG9jYXRlX3JlZ19pbmZvIHRpbWUgaW4KCVRWX1JFR19TQ0FOLiAgTWlub3IgY2xlYW4tdXBzLgoJKHJlZ19zY2FuX3VwZGF0ZSk6IE1pbm9yIGNsZWFuLXVwcy4KCjIwMDMtMTItMDEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy5nY2MgKHMzOTB4LWlibS10cGYqKTogQWRkIGV4dHJhX3BhcnRzLgoKMjAwMy0xMi0wMSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChGVU5DVElPTl9BUkdfUkVHTk9fUCk6IFVzZSBBUl9SRUdfRklSU1Qgbm90CglHUl9BUkdfRklSU1QuCgoyMDAzLTEyLTAxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29tbW9uLm9wdDogUmVtb3ZlIC1mZ251LWxpbmtlci4KCSogZmxhZ3MuaDogUmVtb3ZlIGZsYWdfZ251X2xpbmtlci4KCSogb3B0cy5jOiBEb24ndCBoYW5kbGUgT1BUX2ZnbnVfbGlua2VyLgoJKiB0b3BsZXYuYzogRG9uJ3QgaW5pdGlhbGl6ZSBmbGFnX2dudV9saW5rZXIuCglSZW1vdmUgZ251LWxpbmtlciBlbnRyeSBmcm9tIGZfb3B0aW9ucy4KCSogY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5oIChPUFRJTUlaQVRJT05fT1BUSU9OUyk6CglEb24ndCByZXNldCBmbGFnX2dudV9saW5rZXIuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSBhbGwgbWVudGlvbiBvZiAtZmdudS1saW5rZXIuCgoyMDAzLTEyLTAxICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGdnYy16b25lLmMgKGdnY19wY2hfd3JpdGVfb2JqZWN0KTogQ2FsY3VsYXRlIG9iamVjdCBzaXplIHVzaW5nCglnZ2NfZ2V0X3NpemUgKHdoaWNoIGFjY291bnRzIGZvciBsYXJnZSBvYmplY3RzIHByb3Blcmx5KS4KCjIwMDMtMTItMDEgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTMwMjQKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX25ld19yZWdhbGxvYyk6IFJlbW92ZSByZWJ1aWxkX25vdGVzCglwYXJhbWV0ZXIuCgkocmVzdF9vZl9oYW5kbGVfb2xkX3JlZ2FsbG9jKTogTGlrZXdpc2UuICBBZGQgcmVidWlsZF9ub3RlcwoJZGVjbGFyYXRpb24uICBSZWJ1aWxkIGp1bXAgbGFiZWxzIGZvbGxvd2luZyBsb2NhbF9hbGxvYyBpZiBuZWNlc3NhcnkuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFJlbW92ZSByZWJ1aWxkX2xhYmVsX25vdGVzX2FmdGVyX3JlbG9hZAoJZGVjbGFyYXRpb24uICBEb24ndCBwYXNzIHJlYnVpbGRfbm90ZXMgcGFyYW1ldGVyIHRvCglyZXN0X29mX2hhbmRsZV9uZXdfcmVnYWxsb2MgYW5kIHJlc3Rfb2ZfaGFuZGxlX29sZF9yZWdhbGxvYy4KCURvbid0IHJlYnVpbGQganVtcCBsYWJlbHMuCgoyMDAzLTEyLTAxICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZmxvdy5jIChjb3VudF9vcl9yZW1vdmVfZGVhdGhfbm90ZXNfYmIpOiBOZXcuICBFeHRyYWN0ZWQgZnJvbQoJY291bnRfb3JfcmVtb3ZlX2RlYXRoX25vdGVzLgoJKGNvdW50X29yX3JlbW92ZV9kZWF0aF9ub3Rlcyk6IFVzZSBFWEVDVVRFX0lGX1NFVF9JTl9TQklUTUFQLgoKMjAwMy0xMi0wMSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2xvbmdqbXApOiBBZGRlZCB0d28gbWVtb3J5IGNsb2JiZXJzLgoKMjAwMy0xMi0wMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzKTogU3BsaXQgYWRkcmVzc2VzIG9mIHR5cGUKCShwbHVzIChwbHVzIChyZWcpIChyZWcpKSAoY29uc3RfaW50KSkgb25seSBpZiBvbmUgcmVnaXN0ZXIKCWlzIGVpdGhlciBhIHZhbGlkIGJhc2UgcmVnaXN0ZXIgb3IgZWxzZSBvbmUgb2YgdGhlIHN0YWNrCglmcmFtZSByZWxhdGVkIHJlZ2lzdGVycyAoc3AvZnAvYXApLgoKMjAwMy0xMi0wMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZnVuY3Rpb24uYyAodXBkYXRlX2VwaWxvZ3VlX2NvbnN0cyk6IERvbid0IHVzZSBQQVJBTVMuCgkqIHJ0bC5oICh3ZWJfbWFpbik6IERpdHRvLgoJKiB0YXJnZXQuaCAoaXNfY29zdGx5X2RlcGVuZGVuY2UpOiBEaXR0bwoKMjAwMy0xMi0wMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBtaWRkbGUtZW5kLzc4NDcKCSogZXhwci5jIChleHBhbmRfZXhwcikgW25vcm1hbF9pbm5lcl9yZWZdOiBXaGVuICdvZmZzZXQnIGlzIG5vbi16ZXJvLAoJZG8gbm90IHJlY2hlY2sgdGhhdCAnb3AwJyBpcyBhIE1FTS4gIE1vdmUgY29tbWVudC4gIFdoZW4gdGVzdGluZyBmb3IKCXVuYWxpZ25lZCBvYmplY3RzLCB0YWtlIGFsc28gaW50byBhY2NvdW50IHRoZSBhbGlnbm1lbnQgb2YgJ29wMCcgYW5kCgknbW9kZTEnIGlmICdvcDAnIGlzIGEgTUVNLgoKMjAwMy0xMi0wMSBHYWJyaWVsIERvcyBSZWlzIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogZG9jL2MtdHJlZS50ZXhpIChGdW5jdGlvbiBCb2RpZXMpOiBVcGRhdGUgSEFORExFUiBkb2N1bWVudGF0aW9uLgoKMjAwMy0xMi0wMSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IE5vdGUgdGhhdCBmYXN0amFyIGlzIGJ1aWx0IHdpdGggYXV0b21ha2UgMS43LngKCWFuZCBhdXRvY29uZiAyLjU3LgoKMjAwMy0xMi0wMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChTVUJTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFRlc3QKCXRhcmdldF9mbGFncyBkaXJlY3RseSByYXRoZXIgdGhhbiB1c2luZyBUQVJHRVRfKiBkZWZpbmVzLgoKMjAwMy0xMS0zMCAgQmVuIEVsbGlzdG9uICA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZG9zY2hrLmM6IFJlbW92ZS4KCjIwMDMtMTEtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTI3MjcKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NhdmVfcmVnKTogRml4IGZyYW1lIGluZm9ybWF0aW9uIGZvciBzZGMxCglvbiAzMi1iaXQgYmlnLWVuZGlhbiB0YXJnZXRzLgoKMjAwMy0xMS0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGdlbmVtaXQuYyAocmVnaXN0ZXJfY29uc3RyYWludHMpOiBSZW1vdmUuCgoyMDAzLTExLTMwICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoInRtZGlfcmVnIiwgInRtc2lfcmVnIiwgIiptb3ZkaV82NCIsICIqbW92ZGlfMzEiLAoJImlvcmRpMyIpOiBJbnNucyBub3cgdXNlIG11bHRpcGxlIGxldHRlciBjb25zdHJhaW50cy4KCSgiKm1vdmRpX2xoaSIsICIqbW92ZGlfbGxpIiwgIiptb3ZkaV9sYXkiKTogSW5zbnMgZGVsZXRlZC4gVGhleSBhcmUgbm93Cgljb3ZlcmVkIGJ5ICIqbW92ZGlfNjQiLgoJKCIqbW92c2lfbGhpIiwgIiptb3ZzaV9sbGkiLCAiKm1vdnNpX2xheSIpOiBJbnNucyBkZWxldGVkLiBUaGV5IGFyZSBub3cKCWNvdmVyZWQgYnkgIiptb3ZzaV96YXJjaCIgYW5kICIqbW92c2lfZXNhIi4KCSgiKm1vdnNpX3phcmNoIiwgIiptb3ZzaV8hemFyY2giKTogTmV3IGluc25zLgoJKCIqbGxndF9zaXNpX3NwbGl0IiwgIipsbGd0X2RpZGlfc3BsaXQiKTogSW5zbnMgZGVsZXRlZC4gTm93IGNvdmVyZWQKCWJ5ICIqYW5kc2kzX3phcmNoIiBhbmQgImFuZGRpMyIuCgkoIiphbmRkaTNfbmkiKTogSW5zbiBtZXJnZWQgd2l0aCAiYW5kZGkzIi4KCSgiKmFuZHNpM19uaSIpOiBJbnNuIG1lcmdlZCB3aXRoICIqYW5kc2kzX3phcmNoIi4KCSgiKmFuZHNpM196YXJjaCIsICIqYW5kc2kzX2VzYSIpOiBOZXcgaW5zbnMuCgkoIippb3JkaTNfb2kiKTogSW5zbiBtZXJnZWQgd2l0aCAiaW9yZGkzIi4KCSgiKmlvcnNpM19vaSIpOiBJbnNuIG1lcmdlZCB3aXRoICIqaW9yc2kzX3phcmNoIi4KCSgiKmlvcnNpM196YXJjaCIsICIqaW9yc2kzX2VzYSIpOiBOZXcgaW5zbnMuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfc2luZ2xlX3FpLCBzMzkwX3NpbmdsZV9oaSk6IEZ1bmN0aW9ucwoJbWVyZ2VkIHRvIHMzOTBfc2luZ2xlX3BhcnQuCgkoczM5MF9zaW5nbGVfcGFydCk6IE5ldyBmdW5jdGlvbi4KCU5PVEU6IFNlbWFudGljcyBoYXZlIGNoYW5nZWQgYSBiaXQuIE5vdyB0aGUgdmFsdWUgb2YgdGhlIHBhcnQgbXVzdAoJYmUgZGlmZmVyZW50IGZyb20gdGhlIG90aGVycyB0byBnZXQgYSBub24tbmVnYXRpdmUgcmV0dXJuIHZhbHVlLgoJKHMzOTBfZXh0cmFjdF9xaSwgczM5MF9leHRyYWN0X2hpKTogRnVuY3Rpb25zIG1lcmdlZCB0bwoJczM5MF9leHRyYWN0X3BhcnQuCgkoczM5MF9leHRyYWN0X3BhcnQsIHMzOTBfZXh0cmFfY29uc3RyYWludF9zdHIsCglzMzkwX2NvbnN0X29rX2Zvcl9jb25zdHJhaW50X3ApOiBOZXcgZnVuY3Rpb25zLiBUaGUgTCBjb25zdHJhaW50IGdvdCBhCgluZXcgbWVhbmluZyBhbmQgdGhlIE4gY29uc3RyYWludCB3YXMgYWRkZWQgYXMgYSBtdWx0aXBsZSBsZXR0ZXIKCWNvbnN0cmFpbnQuCgkoczM5MF9leHRyYV9jb25zdHJhaW50KTogRnVuY3Rpb24gZGVsZXRlZC4KCShwcmludF9vcGVyYW5kKTogTmV3IG91dHB1dCBtb2RpZmllciAnaScgYW5kICdqJyBhZGRlZC4KCUFsbCB1c2VzIG9mIENPTlNUX09LX0ZPUl9MRVRURVJfUCB3ZXJlIHJlcGxhY2VkIGJ5CglDT05TVF9PS19GT1JfQ09OU1RSQUlOVF9QLgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaDogRnVuY3Rpb24gcHJvdG90eXBlcyBhZGFwdGVkLgoJKiBkb2MvbWQudGV4aTogRG9jdW1lbnRhdGlvbiBmb3IgbmV3IGNvbnN0cmFpbnQgbGV0dGVycyBhZGRlZC4KCjIwMDMtMTEtMzAgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoJChERVNURElSKSQoaW5mb2RpcikvJS5pbmZvKTogRml4IG1pc3Npbmcgc2VtaWNvbG9uLgoKMjAwMy0xMS0yOSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogZ2NjLmMgKGluaXRfc3BlYyk6IFBhc3MgLWx1bndpbmQgdG8gaW5pdF9nY2Nfc3BlY3MgaW4gZWhfbmFtZQoJaW5zdGVhZCBvZiBpbiBzaGFyZWRfbmFtZS4KCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRGVsZXRlIGNvZGUgZm9yIE5PTl9TQVZJTkdfU0VUSk1QLgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IFJlLWFkZCBpdCBoZXJlLgoKMjAwMy0xMS0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbGZfc2VjdGlvbl90eXBlX2ZsYWdzKTogRG9uJ3QKCXNldCBTRUNUSU9OX1dSSVRFIG9uIFRBUkdFVF9SRUxPQ0FUQUJMRS4KCjIwMDMtMTEtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoTElCQ0FMTF9WQUxVRSk6IFVzZSBSMF9SRUcuCgoyMDAzLTExLTI4ICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKE1PVE9ST0xBKTogTW92ZSBmcm9tIGhlcmUuLi4KCSogY29uZmlnL202OGsvbTY4ay5oIChNT1RPUk9MQSk6IC4uLiB0byBoZXJlLgoJKE9VVFBVVF9KVU1QKTogVXNlIGRvIHsuLi59IHdoaWxlICgwKS4KCSogY29uZmlnL202OGsvbTY4ay5tZDogUmVwbGFjZSAjaWZkZWYgTU9UT1JPTEEgd2l0aCBDIHN0YXRlbWVudHMuCgoyMDAzLTExLTI4ICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcuZ2NjIChtNjgwMjAtKi1lbGYqLCBtNjhrLSotZWxmKiwgbTY4MDEwLSotbmV0YnNkZWxmKiwKCW02OGsqLSotbmV0YnNkZWxmKiwgbTY4ay0qLXJ0ZW1zKik6IEFkZCB0bV9kZWZpbmVzIGNvbnRhaW5pbmcKCU1PVE9ST0xBIGFuZCBVU0VfR0FTLgoJKiBjb25maWcvbTY4ay9ydGVtc2VsZi5oIChNT1RPUk9MQSk6IERlbGV0ZS4KCSogY29uZmlnL202OGsvbmV0YnNkLWVsZi5oIChNT1RPUk9MQSwgVVNFX0dBUyk6IERlbGV0ZS4KCSogY29uZmlnL202OGsvbTY4a2VsZi5oIChNT1RPUk9MQSwgVVNFX0dBUywgU0dTX0NNUF9PUkRFUik6IERlbGV0ZS4KCjIwMDMtMTEtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoV09SRFNfQklHX0VORElBTik6IFVwZGF0ZSB0aGUgY29tbWVudC4KCjIwMDMtMTEtMjkgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1pbmZvKTogSW5zdGFsbCBnY2NpbnN0YWxsLmluZm8gdG9vLgoKMjAwMy0xMS0yOSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImNtcGludF9kaSIpOiBGaXggaW5jb3JyZWN0IGluc3RydWN0aW9uIGxlbmd0aHMuCgoyMDAzLTExLTI5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibW92aGkiKTogRG8gbm90IGVtaXQgZXh0ZW5kZXIgcGF0dGVybgoJd2hlbiBsb2FkaW5nIGZyb20gYSAoTUVNIChBRERSRVNTT0YgLi4uKSkuCgkoIm1vdnFpIik6IExpa2V3aXNlLgoKMjAwMy0xMS0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8xMDMzMwoJKiBjLXBhcnNlLmluICh0eXBlc3BlY19yZXNlcnZlZF9ub25hdHRyKTogUmVqZWN0IHR5cGVvZiBvbgoJYml0LWZpZWxkcy4KCjIwMDMtMTEtMjkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IENoZWNrIHdoZXRoZXIgZm9yY2VfY29uc3RfbWVtCglzdWNjZWVkZWQuCgoyMDAzLTExLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvZ251LmggKEhVUkRfVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IE5ldy4KCSogY29uZmlnL2xpbnV4LmggKExJTlVYX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBOZXcuCgoJKiBjb25maWcvYWxwaGEvZ251LmgsIGNvbmZpZy9hbHBoYS9saW51eC5oLAoJY29uZmlnL2FybS9saW51eC1lbGYuaCwgY29uZmlnL2NyaXMvY3Jpcy5oLCBjb25maWcvY3Jpcy9saW51eC5oLAoJY29uZmlnL2kzNzAvbGludXguaCwgY29uZmlnL2kzODYvZ251LmgsIGNvbmZpZy9pMzg2L2kzODYuaCwKCWNvbmZpZy9pMzg2L2xpbnV4LWFvdXQuaCwgY29uZmlnL2kzODYvbGludXguaCwKCWNvbmZpZy9pMzg2L2xpbnV4NjQuaCwgY29uZmlnL2lhNjQvbGludXguaCwgY29uZmlnL202OGsvbGludXguaCwKCWNvbmZpZy9tNjhrL3VjbGludXguaCwgY29uZmlnL21pcHMvbGludXguaCwKCWNvbmZpZy9tbjEwMzAwL2xpbnV4LmgsIGNvbmZpZy9wYS9wYS1saW51eC5oLAoJY29uZmlnL3JzNjAwMC9zeXN2NC5oLCBjb25maWcvczM5MC9saW51eC5oLCBjb25maWcvc2gvbGludXguaCwKCWNvbmZpZy9zcGFyYy9saW51eC5oLCBjb25maWcvc3BhcmMvbGludXg2NC5oLAoJY29uZmlnL3h0ZW5zYS9saW51eC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogVXNlCglIVVJEX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMvTElOVVhfVEFSR0VUX09TX0NQUF9CVUlMVElOUyBvciBlbnN1cmUKCWFsbCBuZWNlc3NhcnkgYXNzZXJ0aW9ucyBhcmUgaW5jbHVkZWQuCgoyMDAzLTExLTI4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBlbWl0LXJ0bC5jIChzZXRfdXNlZF9mbGFncyk6IE5ldy4KCSh2ZXJpZnlfcnR4X3NoYXJpbmcsIHZlcmlmeV9ydGxfc2hhcmluZyk6IE5ldy4KCSh1bnNoYXJlX2FsbF9ydGxfMSk6IFJlbmFtZSB0by4uLi4KCSh1bnNoYXJlX2FsbF9ydGxfaW5fY2hhaW4pOiAuLi4gdGhpcyBvbmU7IG1ha2Ugc3RhdGljLgoJKGNvcHlfcnR4X2lmX3NoYXJlZCk6IExBQkVMX1JFRiBjaGFuIGJlIHNoYXJlZC4KCSogaWZjdnQuYyAodW5zaGFyZV9pZmN2dF9zZXF1ZW5jZSk6IE5ldy4KCShub2NlX3RyeV9tb3ZlLCBub2NlX3RyeV9zdG9yZV9mbGFnLCBub2NlX3RyeV9zdG9yZV9mbGFnX2NvbnN0YW50cywKCW5vY2VfdHJ5X2FkZGNjLCBub2NlX3RyeV9hZGRjYywgbm9jZV90cnlfc3RvcmVfZmxhZ19tYXNrLAoJbm9jZV90cnlfY21vdmUsIG5vY2VfdHJ5X3N0b3JlX2ZsYWdfbWFzaywgbm9jZV90cnlfbWlubWF4LAoJbm9jZV90cnlfYWJzLCBub2NlX3Byb2Nlc3NfaWZfYmxvY2ssIGZpbmRfY29uZF90cmFwCgkqIHJ0bC5oICh2ZXJpZnlfcnRsX3NoYXJpbmcsIHNldF91c2VkX2ZsYWdzLCB1bnNoYXJlX2FsbF9ydGxfaW5fY2hhaW4pOgoJRGVjbGFyZS4KCjIwMDMtMTEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDMtMTEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCptb3ZzZl9oODMwMGgpOiBDaGFuZ2UgdG8KCSptb3ZzZl9oODMwMGhzLgoJKGFkZHNpX2g4MzAwKTogQ2hhbmdlIHRvICphZGRzaV9oODMwMC4KCShhZGRzaV9oODMwMGgpOiBDaGFuZ2UgdG8gKmFkZHNpX2g4MzAwaHMuCgkoc3Vic2kzX2g4MzAwKTogQ2hhbmdlIHRvICpzdWJzaTNfaDgzMDAuCgkoc3Vic2kzX2g4MzAwaCk6IENoYW5nZSB0byAqc3Vic2kzX2g4MzAwaHMuCgkobmVnaGkyX2g4MzAwaCk6IENoYW5nZSB0byAqbmVnaGkyX2g4MzAwaHMuCgkobmVnc2kyX2g4MzAwaCk6IENoYW5nZSB0byAqbmVnc2kyX2g4MzAwaHMuCgoyMDAzLTExLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqc3ViaGkzX2g4MzAwKTogUmVtb3ZlICcmJyBmcm9tIHRoZQoJY29uc3RyYWludC4KCSgqc3ViaGkzX2g4MzAwaHMpOiBMaWtld2lzZS4KCjIwMDMtMTEtMjggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKE1BU0tfTUZDUkYpOiBOZXcuCgkoVEFSR0VUX01GQ1JGKTogVGVzdCB0YXJnZXRfZmxhZ3MsIG5vdCBwcm9jZXNzb3IgdHlwZS4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgbWZjcmYgYW5kIG5vLW1mY3JmLgoJQ2hhbmdlIERvbid0IHRvIERvIG5vdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJvY2Vzc29yc190YXJnZXRfdGFibGUpOiBBZGQgTUFTS19NRkNSRgoJdG8gcG93ZXI0LCA5NzAsIEc1LgoKMjAwMy0xMS0yNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBjc2UuYyAoY3NlX3NldF9hcm91bmRfbG9vcCk6IFdoZW4gY2hhbmdpbmcgYSBjb25zdGFudCBsb2FkCgl0byBhIHJlZ2lzdGVyIC1yZWdpc3RlciBjb3B5LCBhZGQgYSBSRUdfRVFVQUwgbm90ZS4KCjIwMDMtMTEtMjcgIFJhbmRvbHBoIENodW5nICA8dGF1c3FAZGViaWFuLm9yZz4KCSAgICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAoaHBwYV9wcm9maWxlX2hvb2spOiBTcGxpdCBnZW5fY2FsbF9wcm9maWxlciBpbnRvIHNlcGFyYXRlCglpbnNucy4gIFVzZSB0aGUgcmVndWxhciBjYWxsIGV4cGFuZGVyIGZvciB0aGUgY2FsbCB0byB0aGUgcHJvZmlsZXIuCgkqIHBhLm1kIChjYWxsX3Byb2ZpbGVyKTogRGVsZXRlLgoJKGxvYWRfb2Zmc2V0X2xhYmVsX2FkZHJlc3MpOiBOZXcgaW5zbiB0byBsb2FkIHRoZSBhZGRyZXNzIG9mIHRoZQoJY3VycmVudCBmdW5jdGlvbiBmb3IgdGhlIHByb2ZpbGVyLgoJKGxjbGExLCBsY2xhMik6IE5ldyBpbnNucyB0byBvdXRwdXQgYSBjb2RlIGxhYmVsIGFuZCBsb2FkIGl0cyBhZGRyZXNzLgoKMjAwMy0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IFJlbW92ZSBjb21tZW50ZWQtb3V0IGNvZGUuCgoyMDAzLTExLTI3ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFJlbW92ZSBBREFDIHJlZmVyZW5jZSBhbmQgbWFrZSBhY2N1cmF0ZS4KCjIwMDMtMTEtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoRlVOQ1RJT05fVkFMVUUpOiBVc2UgUjBfUkVHLgoJKEZVTkNUSU9OX1ZBTFVFX1JFR05PX1ApOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBEZWZpbmUgUjBfUkVHLgoKMjAwMy0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBGaXggZm9ybWF0dGluZy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBMaWtld2lzZS4KCjIwMDMtMTEtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoRUxJTUlOQUJMRV9SRUdTKTogVXBkYXRlIGEgY29tbWVudC4KCjIwMDMtMTEtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IEdpdmUgbmFtZXMgdG8gYW5vbnltb3VzIGluc25zLgoKMjAwMy0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoZXh0ZW5kcWlzaTIpOiBSZW1vdmUgY29uc3RyYWludHMuCgoyMDAzLTExLTI3ICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBkb2MvdG0udGV4aSAoU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDKTogRml4IHR5cG8uCgoyMDAzLTExLTI3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMzA0MQoJKiBmaW5hbC5jIChmcmFtZV9wb2ludGVyX25lZWRlZCk6IEZpeCBjb21tZW50LgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IERlY3JlYXNlIGFsaWdubWVudCBvZiB0aGUgZnJhbWUKCXBvaW50ZXIgaWYgaXQgd2FzIHVzZWQgZm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24uCgoyMDAzLTExLTI3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMjkwMAoJKiByZWctc3RhY2sgKG1vdmVfZm9yX3N0YWNrX3JlZyk6IE5ldyBwcm90b3R5cGUuICBSZXR1cm4KCXdoZXRoZXIgYSBjb250cm9sIGZsb3cgaW5zbiB3YXMgZGVsZXRlZC4KCShzdWJzdF9zdGFja19yZWdzX3BhdCk6IExpa2V3aXNlLCB1c2luZyB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQKCWJ5IG1vdmVfZm9yX3N0YWNrX3JlZy4KCShzdWJzdF9zdGFja19yZWdzKTogTGlrZXdpc2UsIHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZAoJYnkgc3Vic3Rfc3RhY2tfcmVnc19wYXQuCgkoY29udmVydF9yZWdzXzEpOiBSZWNvcmQgd2hldGhlciBhIGNvbnRyb2wgZmxvdyBpbnNuIHdhcyBkZWxldGVkLAoJdXNpbmcgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IHN1YnN0X3N0YWNrX3JlZ3MuICBQdXJnZSBkZWFkCgllZGdlcyBvbmx5IGlmIGEgY29udHJvbCBmbG93IGluc24gd2FzIGRlbGV0ZWQuCgoyMDAzLTExLTI3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG1pZGRsZS1lbmQvODAyOAoJUFIgbWlkZGxlLWVuZC85ODkwCglQUiBtaWRkbGUtZW5kLzExMTUxCglQUiBtaWRkbGUtZW5kLzEyMjEwCglQUiBtaWRkbGUtZW5kLzEyNTAzCglQUiBtaWRkbGUtZW5kLzEyNjkyCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2FwcGx5KTogVXNlIHZpcnR1YWxfb3V0Z29pbmdfYXJnc19ydHgKCWFzIHRoZSBiYXNlIGFkZHJlc3MgdG8gY29weSB0aGUgbWVtb3J5IGFyZ3VtZW50cyB0by4KCjIwMDMtMTEtMjYgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMpOiBEZWNsYXJlCglmdW5jdGlvbiBhbGlhc2VzIGFzIGZ1bmN0aW9ucy4KCjIwMDMtMTEtMjYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogYWNsb2NhbC5tNCAoZ2NjX0FDX1BST0dfR05BVCk6IFJld3JpdGUgdG8gYWNjb3VudCBmb3IgcmVtb3ZhbAoJb2YgQURBQy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSByZWZlcmVuY2VzIHRvIEFEQUMuCgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSBjaGVjayBmb3Igd2hldGhlciAke0FEQUN9IGFjY2VwdHMgLVduby1sb25nLWxvbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMTEtMjYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgkgICAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCVBSIHRhcmdldC82NDY2CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAoY29tcHV0ZV9mcmFtZV9zaXplKTogTmV3IHByb3RvdHlwZS4KCShzcGFyY19mbGF0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IExpa2V3aXNlLgoJKHNwYXJjX2ZsYXRfc2F2ZV9yZXN0b3JlKTogTW92ZSBwcm90b3R5cGUuLi4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2ZsYXRfc2F2ZV9yZXN0b3JlKTogLi4uaGVyZS4KCShzYXZlX3JlZ3MpOiBOZXcgcHJvdG90eXBlLgoJKGJ1aWxkX2JpZ19udW1iZXIpOiBMaWtld2lzZS4KCShhcHBhcmVudF9mc2l6ZSk6IENoYW5nZSB0eXBlIHRvIEhPU1RfV0lERV9JTlQuCgkoYWN0dWFsX2ZzaXplKTogTGlrZXdpc2UuCgkoZnJhbWVfYmFzZV9vZmZzZXQpOiBMaWtld2lzZS4KCShidWlsZF9iaWdfbnVtYmVyKTogQWRkIHN1cHBvcnQgZm9yIEhPU1RfQklUU19QRVJfV0lERV9JTlQgPT0gNjQuCglDaGFuZ2Ugc3RyaW5nIGRlc2NyaXB0b3IgdG8gSE9TVF9XSURFX0lOVF9QUklOVF9ERUMuCglbVEFSR0VUX0FSQ0g2NF06IFVzZSB0aGUgc2VxdWVuY2Ugb2Ygc3BhcmNfZW1pdF9zZXRfY29uc3Q2NF9sb25nd2F5Cgl0byBsb2FkIGEgNjQtYml0IGNvbnN0YW50LgoJKHNwYXJjX25vbmZsYXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBDaGFuZ2Ugc3RyaW5nIGRlc2NyaXB0b3IgdG8KCUhPU1RfV0lERV9JTlRfUFJJTlRfREVDLiAgQ2hhbmdlIG9mZnNldCB0eXBlIHRvIEhPU1RfV0lERV9JTlQuCgkob3V0cHV0X3Jlc3RvcmVfcmVncyk6IENoYW5nZSBvZmZzZXQgdHlwZSB0byBIT1NUX1dJREVfSU5ULgoJKHNwYXJjX25vbmZsYXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBDaGFuZ2Ugc3RyaW5nIGRlc2NyaXB0b3IgdG8KCUhPU1RfV0lERV9JTlRfUFJJTlRfREVDLiAgVXNlIGJ1aWxkX2JpZ19udW1iZXIuCgkob3V0cHV0X3NpYmNhbGwpOiBDaGFuZ2Ugc2l6ZSB0eXBlIHRvIEhPU1RfV0lERV9JTlQuICBVc2UKCWJ1aWxkX2JpZ19udW1iZXIuICBDaGFuZ2Ugc3RyaW5nIGRlc2NyaXB0b3IgdG8gSE9TVF9XSURFX0lOVF9QUklOVF9ERUMuCgkoc3BhcmNfZnJhbWVfaW5mbyk6IENoYW5nZSB0eXBlcyBmb3Igc2V2ZXJhbCBjb21wb25lbnRzLgoJKHNwYXJjX2ZsYXRfY29tcHV0ZV9mcmFtZV9zaXplKTogVXBkYXRlIHR5cGVzIGFjY29yZGluZyB0byBwcmV2aW91cwoJY2hhbmdlLgoJKHNwYXJjX2ZsYXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBDaGFuZ2Ugc3RyaW5nIGRlc2NyaXB0b3IgdG8KCUhPU1RfV0lERV9JTlRfUFJJTlRfREVDLiAgQ2hhbmdlIG9mZnNldCB0eXBlIHRvIGludC4gIFVzZQoJYnVpbGRfYmlnX251bWJlci4KCShzcGFyY19mbGF0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogQ2hhbmdlIG9mZnNldCB0eXBlIHRvIGludC4KCVJlbmFtZSAnc2l6ZTEnIGludG8gJ3JlZ19vZmZzZXQxJy4gIENoYW5nZSBzdHJpbmcgZGVzY3JpcHRvciB0bwoJSE9TVF9XSURFX0lOVF9QUklOVF9ERUMuICBVc2UgYnVpbGRfYmlnX251bWJlci4gIENoYW5nZSBiaWcgbnVtYmVyCglsaW1pdCB0byA0MDk2IGluc3RlYWQgb2YgNDA5NS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChtZW1zX29rX2Zvcl9sZGRfcGVlcCk6IENoYW5nZSBvZmZzZXQgdHlwZSB0bwoJSE9TVF9XSURFX0lOVC4KCjIwMDMtMTEtMjQgIFdhbGRlayBIZWJpc2NoIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CgoJKiBmdW5jdGlvbi5jOiBNYWtlIG91dGVyX2Z1bmN0aW9uLWNoYWluIGV4dGVybmFsLgoJKiBmdW5jdGlvbi5oOiBMaWtld2lzZS4KCjIwMDMtMTEtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2Kik6IEFkZCB0LWlyaXM2Z2xkIHRvIHRtYWtlX2ZpbGUgd2hlbgoJdXNpbmcgR05VIGxkLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChJUklYNl9TVEFSVEZJTEVfU1BFQyk6IE5ldywgdGFraW5nIHRoZQoJd2hvbGUgb2YgdGhlIHByZXZpb3VzIFNUQVJURklMRV9TUEVDIGV4Y2VwdCBjcnRiZWdpbi5vJXMuCgkoSVJJWDZfRU5ERklMRV9TUEVDKTogTGlrZXdpc2UgRU5ERklMRV9TUEVDIGFuZCBjcnRlbmQubyVzLgoJKFNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMpOiBEZWZpbmUgaW4gdGVybXMgb2YgdGhlIGFib3ZlLgoJKFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IERlZmluZS4KCSogY29uZmlnL21pcHMvaXJpczZnbGQuaCAoTElOS19TUEVDKTogQ2hhbmdlIC1pbml0IGZ1bmN0aW9uCgl0byBfX2djY19pbml0IGFuZCAtZmluaSBmdW5jdGlvbiB0byBfX2djY19maW5pLgoJKFNUQVJURklMRV9TUEVDKTogUmVkZWZpbmUsIGluY2x1ZGluZyBpcml4Ni1jcnRpLm8gYmVmb3JlIGNydGJlZ2luLm8uCgkoRU5ERklMRV9TUEVDKTogTGlrZXdpc2UsIGluY2x1ZGluZyBpcml4Ni1jcnRuLm8gYWZ0ZXIgY3J0ZW5kLm8uCgkoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCk6IERlZmluZS4KCSogY29uZmlnL21pcHMvdC1pcmlzNmdsZCwKCSogY29uZmlnL21pcHMvaXJpeDYtY3J0aS5hc20sCgkqIGNvbmZpZy9taXBzL2lyaXg2LWNydG4uYXNtOiBOZXcgZmlsZXMuCgoyMDAzLTExLTI0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCglQUiBDLzEzMDE0CgkqIGMtZGVjbC5jIChjX2luX2l0ZXJhdGlvbl9zdG10LCBjX2luX2Nhc2Vfc3RtdCk6IE5ldy4KCShzdGFydF9mdW5jdGlvbik6IFVzZS4KCShjX3B1c2hfZnVuY3Rpb25fY29udGV4dCk6IERpdHRvLgoJKGMtcG9wX2Z1bmN0aW9uX2NvbnRleHQpOiBEaXR0by4KCShsYW5ndWFnZV9mdW5jdGlvbik6IE1vdmUuLi4KCSogYy10cmVlLmg6IC4uLiBoZXJlLiBBZGQgeF9pbl9pdGVyYXRpb25fc3RtdCwgYW5kCgl4X2luX2Nhc2Vfc3RtdC4KCSogYy1wYXJzZS5pbiAoZG9fc3RtdF9zdGFydCwgc2VsZWN0X29yX2l0ZXJfc3RtdCwgc3RtdCk6IFVzZQoJY19pbl9pdGVyYXRpb25fc3RtdCwgY19pbl9jYXNlX3N0bXQgZm9yIHBhcnNlciBzdGF0ZS4gTW92ZQoJY2hlY2sgZm9yIHZhbGlkIGJyZWFrIG9yIGNvbnRpbnVlIHN0YXRtZW50IGhlcmUuLi4KCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2JyZWFrX3N0bXQsIGdlbnJ0bF9jb250aW51ZV9zdG10KTogRnJvbQoJaGVyZS4gQ2hhbmdlIG9yaWdpbmFsIGVycm9ycyB0byBhYm9ydC4KCjIwMDMtMTEtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6ICBEbyBub3QgcmV0dXJuIGVhcmx5IHdoZW4gb3B0aW1pemluZwoJQ09NUE9ORU5UX1JFRiBhbmQgY29uc3RhbnQuCgoyMDAzLTExLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICh0YWJsZWp1bXBfaDgzMDApOiBDaGFuZ2UgdG8KCSp0YWJsZWp1bXBfaDgzMDAuCgkodGFibGVqdW1wX2g4MzAwaCk6IENoYW5nZSB0byAqdGFibGVqdW1wX2g4MzAwaHNfYWR2YW5jZWQuCgkodGFibGVqdW1wX25vcm1hbF9tb2RlKTogQ2hhbmdlIHRvICp0YWJsZWp1bXBfaDgzMDBoc19ub3JtYWwuCgkoaW5kaXJlY3RfanVtcF9oODMwMCk6IENoYW5nZSB0byAqaW5kaXJlY3RfanVtcF9oODMwMC4KCShpbmRpcmVjdF9qdW1wX2g4MzAwaCk6IENoYW5nZSB0bwoJKmluZGlyZWN0X2p1bXBfaDgzMDBoc19hZHZhbmNlZC4KCShpbmRpcmVjdF9qdW1wX25vcm1hbF9tb2RlKTogQ2hhbmdlIHRvCgkqaW5kaXJlY3RfanVtcF9oODMwMGhzX25vcm1hbC4KCjIwMDMtMTEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IFJlbW92ZSBjb25zdHJhaW50cyBmcm9tIGV4cGFuZGVycy4KCjIwMDMtMTEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IChzdG1faDgzMDBzXzIpOiBDaGFuZ2UgdGhlIG5hbWUgdG8KCXN0bV9oODMwMHNfMl9hZHZhbmNlZC4KCShzdG1faDgzMDBzXzJfbm9ybWFsKTogTmV3LgoJKHN0bV9oODMwMHNfMik6IExpa2V3aXNlLgoJKHN0bV9oODMwMHNfMyk6IENoYW5nZSB0aGUgbmFtZSB0byBzdG1faDgzMDBzXzNfYWR2YW5jZWQuCgkoc3RtX2g4MzAwc18zX25vcm1hbCk6IE5ldy4KCShzdG1faDgzMDBzXzMpOiBMaWtld2lzZS4KCShzdG1faDgzMDBzXzQpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gc3RtX2g4MzAwc180X2FkdmFuY2VkLgoJKHN0bV9oODMwMHNfNF9ub3JtYWwpOiBOZXcuCgkoc3RtX2g4MzAwc180KTogTGlrZXdpc2UuCgkobGRtX2g4MzAwc18yKTogQ2hhbmdlIHRoZSBuYW1lIHRvIGxkbV9oODMwMHNfMl9hZHZhbmNlZC4KCShsZG1faDgzMDBzXzJfbm9ybWFsKTogTmV3LgoJKGxkbV9oODMwMHNfMik6IExpa2V3aXNlLgoJKGxkbV9oODMwMHNfMyk6IENoYW5nZSB0aGUgbmFtZSB0byBsZG1faDgzMDBzXzNfYWR2YW5jZWQuCgkobGRtX2g4MzAwc18zX25vcm1hbCk6IE5ldy4KCShsZG1faDgzMDBzXzMpOiBMaWtld2lzZS4KCShsZG1faDgzMDBzXzQpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gbGRtX2g4MzAwc180X2FkdmFuY2VkLgoJKGxkbV9oODMwMHNfNF9ub3JtYWwpOiBOZXcuCgkobGRtX2g4MzAwc180KTogTGlrZXdpc2UuCgkodHdvIHBlZXBob2xlMidzKTogRW5hYmxlIG9ubHkgd2l0aCAhVEFSR0VUX05PUk1BTF9NT0RFLgoJKHR3byBwZWVwaG9sZTIncyk6IE5ldy4KCjIwMDMtMTEtMjQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdlbmF0dHJ0YWIuYyAoc2ltcGxpZnlfY29uZCk6IFVwZGF0ZSBpbmRpY2VzIGNvcnJlY3RseS4KCShhdHRyX2FsdF9zdWJzZXRfcCwgYXR0cl9hbHRfc3Vic2V0X29mX2NvbXBsX3AsIGF0dHJfYWx0X2ludGVyc2VjdGlvbiwKCWF0dHJfYWx0X3VuaW9uLCBhdHRyX2FsdF9jb21wbGVtZW50LCBhdHRyX2FsdF9iaXRfcCwgbWtfYXR0cl9hbHQpOiBOZXcuCgkoY2hlY2tfYXR0cl90ZXN0LCBlbmNvZGVfdW5pdHNfbWFzaywgY29tcHV0ZV9hbHRlcm5hdGl2ZV9tYXNrLAoJbWFrZV9hbHRlcm5hdGl2ZV9jb21wYXJlLCBzaW1wbGlmeV9hbmRfdHJlZSwKCWF0dHJfcnR4X2Nvc3QsIHNpbXBsaWZ5X3Rlc3RfZXhwLCBnZW5fYXR0ciwKCXdyaXRlX3Rlc3RfZXhwciwgd2Fsa19hdHRyX3ZhbHVlKTogSGFuZGxlIEVRX0FUVFJfQUxULgoJKiBydGwuZGVmIChFUV9BVFRSX0FMVCk6IE5ldy4KCjIwMDMtMTEtMjMgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdlbmF0dHJ0YWIuYyAoc3RyY21wX2NoZWNrLCBERUZfQVRUUl9TVFJJTkcpOiBOZXcgbWFjcm9zLgoJKGxlbmd0aF9zdHIsIGRlbGF5X3R5cGVfc3RyLCBkZWxheV8xXzBfc3RyLCBudW1fZGVsYXlfc2xvdHNfc3RyKToKCU5ldyB2YXJpYWJsZXMuCgkobWFpbik6IEluaXRpYWxpemUgdGhlbS4KCShmaW5kX2F0dHIpOiBDYW5vbmljYWxpemUgdGhlIGF0dHJpYnV0ZSBuYW1lIHN0cmluZy4KCShhdHRyX3J0eF8xLCBjb3B5X2Jvb2xlYW4sIGV4cGFuZF9kZWxheXMsIGdlbl91bml0KTogQWx3YXlzIGNhbm9uaWNhbGl6ZQoJc3RyaW5nIGFyZ3VtZW50cy4KCShhdHRyX3ByaW50ZiwgYXR0cl9lcSk6IFVzZSBERUZfQVRUUl9TVFJJTkcuCgkoY2hlY2tfYXR0cl90ZXN0LCBjaGVja19hdHRyX3ZhbHVlLCBtYWtlX2xlbmd0aF9hdHRycywKCXdyaXRlX2xlbmd0aF91bml0X2xvZywgc2ltcGxpZnlfYnlfZXhwbG9kaW5nLCBnZW5fYXR0ciwKCXdyaXRlX3Rlc3RfZXhwciwgd3JpdGVfYXR0cl92YWx1ZSwgd3JpdGVfZWxpZ2libGVfZGVsYXksCgl3cml0ZV9jb21wbGV4X2Z1bmN0aW9uLCBtYWtlX2ludGVybmFsX2F0dHIsCgl3cml0ZV9jb25zdF9udW1fZGVsYXlfc2xvdHMpOiBDaGFuZ2VkIGR1ZSB0byBjaGFuZ2Ugb2YgdHlwZSBvZgoJZmluZF9hdHRyLgoJKGZpbGxfYXR0ciwgZXZhbHVhdGVfZXFfYXR0ciwgc2ltcGxpZnlfYW5kX3RyZWUsCglhdHRyX3J0eF9jb3N0LCBzaW1wbGlmeV9ieV9leHBsb2RpbmcsIHdhbGtfYXR0cl92YWx1ZSk6IFVzZQoJc3RyY21wX2NoZWNrLgoKMjAwMy0xMS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiB0YXJnZXQvMTMxMjIKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKHB1c2gpOiBDYWxsIHB1c2hfaDgzMDBoc19ub3JtYWwgaW4KCW5vcm1hbCBtb2RlLgoJKHBvcCk6IENhbGwgcG9wX2g4MzAwaHNfbm9ybWFsIGluIG5vcm1hbCBtb2RlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IExpa2V3aXNlLgoJKHB1c2hxaTFfaDgzMDBoc19ub3JtYWwpOiBOZXcuCgkocHVzaHFpMSk6IENhbGwgcHVzaHFpMV9oODMwMGhzX25vcm1hbCBpbiBub3JtYWwgbW9kZS4KCShwdXNoaGkxX2g4MzAwaHNfbm9ybWFsKTogTmV3LgoJKHB1c2hoaTEpOiBDYWxsIHB1c2hoaTFfaDgzMDBoc19ub3JtYWwgaW4gbm9ybWFsIG1vZGUuCgkocHVzaF9oODMwMGhzX25vcm1hbCk6IE5ldy4KCShwb3BfaDgzMDBoc19ub3JtYWwpOiBMaWtld2lzZS4KCjIwMDMtMTEtMjMgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdlbmF0dHJ0YWIuYyAoY291bnRfc3ViX3J0eHMpOiBSZW1vdmVkLgoKMjAwMy0xMS0yMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiByZWNvZy5jIChwcmVwcm9jZXNzX2NvbnN0cmFpbnRzKTogT25seSB6ZXJvIHRob3NlIGVsZW1lbnRzIG9mCglyZWNvZ19vcF9hbHQgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGlzIGluc24uCgkqIGFybS5jIChub3RlX2ludmFsaWRfY29uc3RhbnRzKTogQSBmdW5jdGlvbiBjYW4ndCBjb250YWluIGludmFsaWQKCWNvbnN0YW50cyBpZiBpdCBoYXMgbm8gY29uc3RyYWludHMuCgoyMDAzLTExLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGNsYXNzaWZ5X2FyZ3VtZW50KTogUGFzcyBfX2Zsb2F0MTI4IGluIG1lbW9yeS4KCShpeDg2X3JldHVybl9pbl9tZW1vcnkpOiBMaWtld2lzZS4KCShpeDg2X2xpYmNhbGxfdmFsdWUpOiBMaWtld3NpZS4KCjIwMDMtMTEtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoZG9zaXplKTogQ29udmVydCB0byBJU08tQy4KCjIwMDMtMTEtMjIgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogZmxvdy5jICh1cGRhdGVfbGlmZV9pbmZvKTogQW1lbmQgY29tbWVudCBhYm91dCB3aGVuIGEgcmVnaXN0ZXIKCWNhbiBiZWNvbWUgZGVhZC4KCjIwMDMtMTEtMjEgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBkb2MvLmN2c2lnbm9yZTogRGVsZXRlLgoKMjAwMy0xMS0yMSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgkgICAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZHdhcmYyb3V0LmMgKGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBBZGQgc3VwcG9ydAoJZm9yIFBBUkFMTEVMLgoKMjAwMy0xMS0yMSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy90LWlyaXM2IChDUlRTVFVGRl9UX0NGTEFHUyk6IEFkZCAtV25vLWVycm9yLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IERlZmluZS4KCgkqIGNydHN0dWZmLmMgW0hBU19JTklUX1NFQ1RJT05dIChfX2RvX2dsb2JhbF9kdG9ycyk6IERlY2xhcmUuCgkoX19kb19nbG9iYWxfY3RvcnMpOiBMaWtld2lzZS4KCjIwMDMtMTEtMjEgIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoLU8yKTogRG9lc24ndCBlbmFibGUgLWZ3ZWIuCgoyMDAzLTExLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBNZW50aW9uIGRWIGFuZCBkWi4KCjIwMDMtMTEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW52b2tlLnRleGk6IFVwZGF0ZSBkdW1wIGZpbGUgbmFtZXMuCglSZW1vdmUgZGUsIGRXLCBhbmQgZFguCgoyMDAzLTExLTIwICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgYy8xMzEzMwoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IERlbGV0ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBzZXRqbXAuCgoyMDAzLTExLTIxICBBbmRyZWFzIFRvYmxlciAgPGEudG9ibGVyQHNjaHdlaXouY2g+CgoJKiBta2xpYmdjYy5pbjogRXZhbHVhdGUgc2hsaWJfc2xpYmRpcl9xdWFsIGR1cmluZyBsaW5rCglzdGVwIHRvby4KCSogY29uZmlnL3Qtc2xpYmdjYy1kYXJ3aW46IEFkanVzdCBpbnN0YWxsIHBhdGguCgkqIGNvbmZpZy9yczYwMDAvdC1kYXJ3aW46IFJldmVydCBtdWx0aWxpYiBtYXRjaGVzIHNpbmNlCglpdCBpcyBub3QgdXNlZCBvbiBkYXJ3aW4uCgoyMDAzLTExLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3NhLmMsIHNzYS1kY2UuYywgc3NhLWNjcC5jOiBSZW1vdmUgZmlsZXMuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbiwgR1RGSUxFUyk6IERvbid0IHJlZmVyZW5jZSB0aGVtLgoJKGd0eXBlLWRlc2MubywgdG9wbGV2Lm8sIGZsb3cubyk6IFJlbW92ZSBzc2EuaC4KCShzc2Eubywgc3NhLWRjZS5vLCBzc2EtY2NwLm8pOiBSZW1vdmUuCgkqIGZsb3cuYzogRG9uJ3QgaW5jbHVkZSBzc2EuaC4KCShzZXRfcGhpX2FsdGVybmF0aXZlX3JlZyk6IFJlbW92ZS4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IERvbid0IGNhbGwgaXQuCgkobWFya191c2VkX3JlZ3MpOiBEb24ndCBoYW5kbGUgUEhJLgoJKiBnZW5ndHlwZS5jIChvcGVuX2Jhc2VfZmlsZXMpOiBEb24ndCByZWZlcmVuY2Ugc3NhLmguCgkqIHJ0bC5kZWYgKFBISSk6IFJlbW92ZS4KCSogdGltZXZhci5kZWYgKFRWX1RPX1NTQSwgVFZfU1NBX0NDUCwgVFZfU1NBX0RDRSwgVFZfRlJPTV9TU0EpOiBLaWxsLgoJKiBjb21tb24ub3B0OiBSZW1vdmUgLWZzc2EsIC1mc3NhLWNjcCwgLWZzc2EtZGNlLgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChmX29wdGlvbnMpOiBMaWtld2lzZS4KCShERklfc3NhLCBERklfc3NhX2NjcCwgREZJX3NzYV9kY2UsIERGSV91c3NhKTogUmVtb3ZlLgoJKGR1bXBfZmlsZSk6IFVwZGF0ZSB0byBtYXRjaC4KCShmbGFnX3NzYSwgZmxhZ19zc2FfY2NwLCBmbGFnX3NzYV9kY2UpOiBSZW1vdmUuCgkocmVzdF9vZl9oYW5kbGVfc3NhKTogUmVtb3ZlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEb24ndCBjYWxsIGl0LgoJKiB0b3BsZXYuaCAoZmxhZ19zc2EsIGZsYWdfc3NhX2RjZSwgZmxhZ19zc2FfY2NwKTogUmVtb3ZlLgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSAtZnNzYSwgLWZzc2EtY2NwLCAtZnNzYS1kY2UuCgkqIGRvYy9wYXNzZXMudGV4aSAoU1NBIG9wdGltaXphdGlvbnMpOiBSZW1vdmUuCgoyMDAzLTExLTIwICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlndXJlLmluOiBBZGQgeHRlbnNhLSotKiB0YXJnZXRzIHRvIHRlc3QgZm9yIGR3YXJmMiBkZWJ1Z19saW5lLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTExLTIwICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKE1ha2VmaWxlKTogUGFzcyBhbG9uZyBDT05GSUdfU0hFTEwuCgoyMDAzLTExLTIwIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogY29uZmlnL3QtbGlidW53aW5kIChMSUIyQURERUgpOiBBZGQgdW53aW5kLWMuYy4KCShTSExJQl9MQyk6IERlZmluZS4KCSogdW53aW5kLWxpYnVud2luZC5jIChfVW53aW5kX0dldENGQSk6IEltcGxlbWVudC4KCShfVW53aW5kX0dldEJTUCkgW1VOV19UQVJHRVRfSUE2NF06IE5ldyBmdW5jdGlvbi4KCjIwMDMtMTEtMjAgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCSAgICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEFsbG9jYXRlIG5ldyB0ZW1wIGluIHBhc3MxLgoJKHN0b3JlX29uZV9hcmcpOiBJZiBQQVJBTExFTCwgY2FsY3VsYXRlIGV4Y2VzcyB1c2luZyBtb2RlIHNpemUgb2YKCXJ0dmVjIGVsdC4KCSogZXhwci5jIChlbWl0X3B1c2hfaW5zbik6IElmIFBBUkFMTEVMLCBjYWxjdWxhdGUgb2Zmc2V0IHVzaW5nCgltb2RlIHNpemUgb2YgcnR2ZWMgZWx0LgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVc2UgcGFybSBpbiByZWdpc3RlciwgaWYgYXZhaWxhYmxlLgoKMjAwMy0xMS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChNT1ZQKTogUmVtb3ZlLgoJKEFERFApOiBMaWtld2lzZS4KCShDTVBQKTogTGlrZXdpc2UuCgoyMDAzLTExLTIwICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jICh1c2VfcmV0dXJuX2luc24pOiBOZXcgYXJndW1lbnQsIFNJQkxJTkcuICBTdXBwb3J0IHJldHVybmluZwoJd2l0aCBhIHNpbmdsZSBpbnN0cnVjdGlvbiBpZiB0aGUgc3RhY2sgaGFzIGJlZW4gZGVjcmVtZW50ZWQgYnkgNAoJYW5kIHdlIGhhdmUgYSBmcmFtZSBwb2ludGVyLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogQ2hhbmdlIGFyZ3VtZW50IHRvIFNJQkxJTkcuICBDYWxjdWxhdGUKCXJlYWxseV9yZXR1cm4gZnJvbSB0aGUgbmV3IGFyZ3VtZW50LiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKiBhcm0uaCAoVVNFX1JFVFVSTl9JTlNOKTogUGFzcyBOVUxMIGZvciB0aGUgc2libGluZy4KCSogYXJtLm1kIChzaWJjYWxsX2VwaWxvZ3VlKTogQ2FsbCB1c2VfcmV0dXJuX2luc24gZGlyZWN0bHksIGFuZAoJcGFzcyB0aGUgc2libGluZyBjYWxsLgoJKiBhcm0tcHJvdG9zLmggKHVzZV9yZXR1cm5faW5zbiwgYXJtX291dHB1dF9lcGlsb2d1ZSk6IFVwZGF0ZQoJcHJvdG90eXBlcy4KCjIwMDMtMTEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogTWFrZWZpbGUuaW4gKGV4dHJhY2xlYW4pOiBEZWxldGUuCgkqIGNvbmZpZ3VyZS5pbiAodGFyZ2V0X2xpc3QpOiBSZW1vdmUgZXh0cmFjbGVhbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBkb2MvbWFrZWZpbGUudGV4aSwgZG9jL3NvdXJjZWJ1aWxkLnRleGk6IFVwZGF0ZS4KCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMuZXh0cmFjbGVhbik6IERlbGV0ZS4KCjIwMDMtMTEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogTWFrZWZpbGUuaW4gKGxhbmdfY2hlY2tzKTogQWRkLgoJKGNoZWNrLWMrKywgY2hlY2stZjc3LCBjaGVjay1qYXZhLCBjaGVjay1nKyssIGNoZWNrLWc3NywKCWNoZWNrLW9iamMpOiBSZW1vdmUgaGFyZGNvZGVkIHRhcmdldHMuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBEb2N1bWVudCB0ZXN0c3VpdGUgaG9va3MuCgkqIG9iamMvTWFrZS1sYW5nLmluIChjaGVjay1vYmpjLCBsYW5nX2NoZWNrcyk6IEFkZC4KCjIwMDMtMTEtMTkgIFNjb3R0IFNueWRlciAgPHNueWRlckBmbmFsLmdvdj4KCglQUiB0YXJnZXQvMTMxMzEKCSogZHdhcmYyb3V0LmMgKGdlbl9hcnJheV90eXBlX2RpZSk6IERXX0FUX2RlY2xhcmF0aW9uIHNob3VsZCBiZSBhCglmbGFnLCBub3QgYSBjb25zdGFudC4KCjIwMDMtMTEtMTkgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvYXJjL2FyYy1wcm90b3MuaDogVXBkYXRlIHRvIEM5MCBwcm90b3R5cGVzLgoJKiBjb25maWcvYXJjL2FyYy5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FyYy9pbml0ZmluaS5jOiBMaWtld2lzZS4KCjIwMDMtMTEtMTkgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9nb3RvKTogTWVtb3J5IGNsb2JiZXJzIGFkZGVkLgoKMjAwMy0xMS0xOSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBBZGRlZCBtaXNzaW5nIHR5cGUgY2FzdHMuCgoyMDAzLTExLTE5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb21iaW5lLmMgKHNldHNfZnVuY3Rpb25fYXJnX3ApOiBEZWxldGUgdW51c2VkIGZ1bmN0aW9uLgoKMjAwMy0xMS0xOSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IFJldmVydCAyIHByZXZpb3VzIGNoZWNraW5zLgoKMjAwMy0xMS0xOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjcHB0cmFkLmMgKF9jcHBfc2Nhbl9vdXRfbG9naWNhbF9saW5lKTogSW1wcm92ZSB0ZXN0IGZvcgoJd2hldGhlciBkaXJlY3RpdmUgYmVnaW5zIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLgoKMjAwMy0xMS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2luaXRfbGliZnVuY3MpOiBDb3JyZWN0IHVmaXhfb3B0YWIgZW50cmllcy4KCjIwMDMtMTEtMTkgIEdlcmFsZCBQZmVpZmVyICA8Z3BAc3VzZS5kZT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFNwZWNpZmljKTogUmVtb3ZlIGluZm9ybWF0aW9uIG9uIG9sZCB2ZXJzaW9ucwoJb2YgZ2xpYmMgdmVyc3VzIG9sZCB2ZXJzaW9ucyBvZiBHQ0MuCgoyMDAzLTExLTE5ICBSaWNoYXJkIFNBbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydCk6IERvbid0IGZvcmNlIE1FTXMgaW50byBhIHJlZ2lzdGVyIHVubGVzcwoJdGhlIHJlZ2lzdGVyIGxvd3BhcnQgaXMgYSBUUlVMWV9OT09QX1RSVU5DQVRJT04uCgoyMDAzLTExLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChwcmludF9yZWcpOiBIYW5kbGUgUUkgYW5kIEhJIG1vZGVzIGZvcgoJbm9uIFEgcmVncy4KCjIwMDMtMTEtMTkgIEFuZHJlYXMgVG9ibGVyICA8YS50b2JsZXJAc2Nod2Vpei5jaD4KCgkqIGNvbmZpZy9jb25maWcuZ2NjIChwb3dlcnBjLSotZGFyd2luKik6IEFkZCBsaWJnY2MgYnVpbGQKCXNwZWNpZmljYXRpb24gZmlsZS4KCSogY29uZmlnL3Qtc2xpYmdjYy1kYXJ3aW46IE5ldyBmaWxlLCBsaWJnY2MgYnVpbGQgc3BlY2lmaWNhdGlvbi4KCSogY29uZmlnL3QtZGFyd2luOiBBZGQgbGliZ2NjMiBmbGFnIC1mUElDLgoJKiBjb25maWcvcnM2MDAwL3QtZGFyd2luOiBNdWx0aWxpYiBtYXRjaGVzIGZsb2F0LgoJKiBsaWJnY2MtZGFyd2luLnZlcjogTmV3IGZpbGUsIGNvbnRhaW5zIGxpYmdjYyBzeW1ib2xzLgoKMjAwMy0xMS0xOCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaDogUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQuCgoyMDAzLTExLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzExODIxCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9ydHhfY29zdHNfMSk6IEltcHJvdmUgZXN0aW1hdGUgb2YgdGhlIGNvZGUKCXNpemUgZm9yIGNhbGxzIHRvIGxpYmdjYydzIGRpdiAmIG1vZCBzdWJyb3V0aW5lcyB3aGVuIHVzaW5nIC1Pcy4KCjIwMDMtMTEtMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjaGFuZ2VfZGVjbF9hc3NlbWJsZXJfbmFtZSk6IEF2b2lkIGJvZ3VzIHdhcm5pbmdzLgoKMjAwMy0xMS0xOCAgTWFyYyBFc3BpZSAgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oOiBPcGVuQlNEIGhvb2tzLgoKMjAwMy0xMS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBEb24ndCBsb29rIHRocm91Z2ggY29uc3RhbnQgYXJyYXlzIGlmCgl0aGV5IGRvbid0IGJpbmQgbG9jYWxseS4KCjIwMDMtMTEtMTcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGNvbnZlcnRfbW92ZSk6IFVzZSBHRVRfTU9ERV9QUkVDSVNJT04gaW5zdGVhZCBvZiBiaXRzaXplCgl3aGVuIHNlZWluZyBpZiB0cnVuY2F0aW9uIG9yIGV4dGVuc2lvbi4KCjIwMDMtMTEtMTcgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWQpOiBGaXggcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0xMS0xNyAgU2NvdHQgU255ZGVyICA8c255ZGVyQGZuYWwuZ292PgoKCVBSIGRlYnVnLzExMzI1CgkqIGR3YXJmMm91dC5jIChzdHJ1Y3QgZGllX3N0cnVjdCk6IEFkZCBkaWVfZGVmaW5pdGlvbiBmaWVsZC4KCShhZGRfQVRfc3BlY2lmaWNhdGlvbik6IE5ldy4KCShnZW5fc3VicHJvZ3JhbV9kaWUsIGdlbl92YXJpYWJsZV9kaWUsCglnZW5fc3RydWN0X29yX3VuaW9uX3R5cGVfZGllKTogVXNlIGl0LgoJKHBydW5lX3VudXNlZF90eXBlc19tYXJrKTogSWYgd2UncmUgbWFya2luZyBhIGZvcndhcmQgZGVjbGFyYXRpb24sCglhbHNvIG1hcmsgdGhlIGZ1bGwgZGVmaW5pdGlvbiwgaWYgaXQgZXhpc3RzLgoKMjAwMy0xMS0xNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oIChCVUlMRF9WQV9MSVNUX1RZUEUpOiBEZWxldGUuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi1wcm90b3MuaCAoeHN0b3JteTE2X2J1aWxkX3ZhX2xpc3QpOgoJUmVtb3ZlIHByb3RvdHlwZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9idWlsZF92YV9saXN0KTogUmVuYW1lCgl0byB4c3Rvcm15MTZfYnVpbGRfYnVpbHRpbl92YV9saXN0IGFuZCBtYWtlIHN0YXRpYy4KCShUQVJHRVRfQlVJTERfQlVJTFRJTl9WQV9MSVNUKTogRGVmaW5lLgoKMjAwMy0xMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaDogQWRkIHRoZSBwcm90b3R5cGUgZm9yCglzYW1lX2NtcF9mb2xsb3dpbmdfcC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKHNhbWVfY21wX2ZvbGxvd2luZ19wKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKHBlZXBob2xlMik6IFVzZSBpdC4KCjIwMDMtMTEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IERvbid0IHVzZSBSRUdOTyB3aGVuIGl0cyBvcGVyYW5kIGlzCglub3QgZ3VhcmFudGVlZCB0byBiZSBhIFJFRy4KCjIwMDMtMTEtMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChleHByLm8pOiBEZXBlbmQgb24gJChUQVJHRVRfSCkuCgkqIHRhcmdldC5oIChyZXR1cm5faW5fbXNiKTogTmV3IHRhcmdldCBob29rLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9SRVRVUk5fSU5fTVNCKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9DQUxMUyk6IEluY2x1ZGUgaXQuCgkqIGNhbGxzLmMgKHNoaWZ0X3JldHVybmVkX3ZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9jYWxsKTogVXNlIGl0LgoJKiBleHByLmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkoY29weV9ibGttb2RlX2Zyb21fcmVnKTogQ2hlY2sgdGFyZ2V0bS5jYWxscy5yZXR1cm5faW5fbXNiIHdoZW4KCWRlY2lkaW5nIHdoYXQgcGFkZGluZyBpcyBuZWVkZWQuICBDaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGxvY2FsCglwYWRkaW5nIHZhcmlhYmxlIGZyb20gYmlnX2VuZGlhbl9jb3JyZWN0aW9uIHRvIHBhZGRpbmdfY29ycmVjdGlvbi4KCSogc3RtdC5jIChzaGlmdF9yZXR1cm5fdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3JldHVybik6IFVzZSBpdC4gIEFkanVzdCBtZW1vcnktPnJlZ2lzdGVyIGNvcHkgaW4gdGhlIHNhbWUKCXdheSBhcyBjb3B5X2Jsa21vZGVfZnJvbV9yZWcuICBPbmx5IGNoYW5nZSB0aGUgcmV0dXJuIHJlZ2lzdGVyJ3MKCW1vZGUgaWYgaXQgd2FzIG9yaWdpbmFsbHkgQkxLbW9kZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9SRVRVUk5fSU5fTVNCKTogRG9jdW1lbnQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoVEFSR0VUX1JFVFVSTl9JTl9NU0IpOiBEZWZpbmUuCgkobWlwc19mcHJfcmV0dXJuX2ZpZWxkcyk6IE5ldywgc3BsaXQgb3V0IGZyb20gbWlwc19mdW5jdGlvbl92YWx1ZS4KCShtaXBzX3JldHVybl9pbl9tc2IsIG1pcHNfcmV0dXJuX2Zwcl9wYWlyKTogTmV3IGZ1bmN0aW9ucy4KCShtaXBzX2Z1bmN0aW9uX3ZhbHVlKTogUmV3b3JrIHRvIHVzZSB0aGUgZnVuY3Rpb25zIGFib3ZlLgoJKiBjb25maWcvbWlwcy9pcml4Ni1saWJjLWNvbXBhdC5jOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL3QtaXJpczYgKExJQjJGVU5DU19TVEFUSUNfRVhUUkEpOiBVbmRlZmluZS4KCjIwMDMtMTEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpICgtLWVuYWJsZS1jaGVja2luZyk6IFVwZGF0ZSB2YWxncmluZCdzIFVSTC4KCjIwMDMtMTEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IEZpeCB3YXJuaW5ncyBieSByZXBsYWNpbmcgLTIxNDc0ODM2NDgKCXdpdGggLTIxNDc0ODM2NDcgLSAxLgoKMjAwMy0xMS0xNiAgR2VyYWxkIFBmZWlmZXIgIDxnZXJhbGRAcGZlaWZlci5jb20+CgoJRml4IGxpbmtzIGluIG9ubGluZSBtYW51YWxzLgoJKiBkb2MvaW52b2tlLnRleGkgKEg4LzMwMCBPcHRpb25zKTogQHhyZWYgdG8gbGQsIG5vdCBsZC5pbmZvLgoJKFByZWNvbXBpbGVkIEhlYWRlcnMpOiBAcHhyZWYgdG8gY3BwLCBub3QgY3BwLmluZm8uCgoyMDAzLTExLTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluLCBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy50YWdzKTogQ3JlYXRlIFRBR1Muc3ViCglmaWxlcyBpbiBlYWNoIGRpcmVjdG9yeSBhbmQgVEFHUyBmaWxlcyB0aGF0IGluY2x1ZGUgdGhlbSBmb3IgZWFjaAoJZnJvbnQgZW5kLgoKMjAwMy0xMS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChkaXZub3JtKTogU3RvcmUgdGhlIHNpZ24gaW4gYml0CgkzIG9mIFMyTC4KCShtb2Rub3JtKTogTGlrZXdpc2UuCgkoZXhpdGRpdik6IExvb2sgYXQgYml0IDMgb2YgUzJMIG9ubHkuCgoyMDAzLTExLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKERPX0dMT0JBTF9DVE9SU19CT0RZKTogRml4IHdhcm5pbmdzLgoJKERPX0dMT0JBTF9EVE9SU19CT0RZKTogTGlrZXdpc2UuCgoyMDAzLTExLTE1ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFByZXJlcXVpc2l0ZXMpOiBSZWZpbmUgZG9jdW1lbnRhdGlvbiBvZgoJYXV0b2NvbmYsIGF1dG9tYWtlIGFuZCBwZXJsIHJlcXVpcmVtZW50cy4gIERvY3VtZW50IHJlcXVpcmVkCglnZXR0ZXh0IHZlcnNpb24uCgo8MjAwMy0xMS0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVc2UgVFJFRV9UWVBFIHRvIGRldGVybWluZSB0aGUgcmVhbAoJdHlwZSBvZiB0aGUgYXJndW1lbnQgb2JqZWN0LgoKMjAwMy0xMS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChfX191ZGl2c2kzKTogUGVlbCBvZmYgdGhlIGZpcnN0CglpdGVyYXRpb24uCgoyMDAzLTExLTE0ICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9tb3ZlX2Jsb2NrX2Zyb21fcmVnKToKCSAgTmV3IHJvdXRpbmUgdG8gc2F2ZSB2YXJhcmcgcmVnaXN0ZXJzIG9uIHN0YWNrLiBTdXBwb3J0IGZvcgoJICAtbXBvd2VycGM2NCBpbiBtaXhlZCBtb2RlLgoKMjAwMy0xMS0xNCAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jOiBVc2UgQyBzdGF0ZW1lbnRzIGluc3RlYWQgb2YgI2lmZGVmJ3Mgd2hlbiB0ZXN0aW5nCglmb3IgTU9UT1JPTEEgdmVyc3VzIE1JVCBzeW50YXguICBJbXByb3ZlcyByZWFkYWJpbGl0eSBhbmQgcHJvdmlkZXMKCWJldHRlciBjb21waWxlLXRpbWUgZXJyb3IgY2hlY2tpbmcgZm9yIGJvdGggY29kZSBwYXRocy4KCjIwMDMtMTEtMTQgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaDogVXBkYXRlIGZvciBDOTAuCgkqIGNvbmZpZy9mcnYvZnJ2Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2ZydmJlZ2luLmM6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5jOiBMaWtld2lzZS4KCShmcnZfYWRqdXN0X2ZpZWxkX2FsaWduKTogRGVsZXRlIHVudXNlZCB2YXJpYWJsZS4KCjIwMDMtMTEtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEFkZCAnREVGQVVMVF9BQkkgPT0gQUJJX0RBUldJTicKCXRvIGVhY2ggcGxhY2Ugd2hlcmUgVEFSR0VUX0xPTkdfRE9VQkxFXzEyOCBpcyB1c2VkIHdpdGgKCURFRkFVTFRfQUJJID09IEFCSV9BSVguCgoJKiBjcHBmaWxlcy5jIChfY3BwX2ZpbmRfZmlsZSk6IE1ha2UgJ29uZSBvciBtb3JlIFBDSCBmaWxlcyB3ZXJlIGZvdW5kJwoJbWVzc2FnZSBjb21wbHkgd2l0aCBHTlUgc3RhbmRhcmRzLgoKMjAwMy0xMS0xNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCglQUi82NTUyCgkqIGZ1bmN0aW9uLmMgKHN0cnVjdCBlcGlfaW5mbyk6IE5ldyBmaWVsZCBjb25zdF9lcXVpdi4KCSh1cGRhdGVfZXBpbG9ndWVfY29uc3RzKTogTmV3IGZ1bmN0aW9uLgoJKGtlZXBfc3RhY2tfZGVwcmVzc2VkKTogQ2xlYXIgbmV3IGZpZWxkIGFuZCB2ZXJpZnkgc2NyYXRjaCByZWdpc3RlcgoJZG9lc24ndCBoYXZlIGl0IHNldC4KCUNhbGwgbmV3IGZ1bmN0aW9uIHZpYSBub3RlX3N0b3Jlcy4KCShoYW5kbGVfZXBpbG9ndWVfc2V0KTogQWxsb3cgc2V0dGluZyBTUCBlcXVpdiByZWcgaW4gZGlmZmVyZW50IG1vZGUuCglBbGxvdyBQTFVTIHdoZXJlIHNlY29uZCBvcGVyYW5kIGlzIHJlZ2lzdGVyIGtub3duIHNldCB0byBjb25zdGFudC4KCShlbWl0X2VxdWl2X2xvYWQpOiBXcml0ZSBsb2FkIHVzaW5nIHByb3BlciBtb2RlIGlmIHNvdXJjZSBkaWZmZXJlbnQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHJldHVybl9pbnRlcm5hbCk6IFB1dCAocmV0dXJuKSBmaXJzdC4KCjIwMDMtMTEtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbSAoX19fdWRpdnNpMyk6IEFkZCBhIGNvbW1lbnQuCgoyMDAzLTExLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKG1vZHNpMyk6IERvbid0IHNhdmUgdW51c2VkCglyZWdpc3RlcnMuCgkoZGl2c2kzKTogTGlrZXdpc2UuCgkocmV0aSk6IERvbid0IHJlc3RvcmUgdW51c2VkIHJlZ2lzdGVycy4KCjIwMDMtMTEtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnIzMC9mcjMwLmM6IEluY2x1ZGUgdG9wbGV2LmgKCjIwMDMtMTEtMTQgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZXhjZXB0LmMgKHNqbGpfZW1pdF9mdW5jdGlvbl9lbnRlcik6IE1hcmsgaW50ZXJuYWwgbGFiZWwgYXMgTE9DQUwuCgoyMDAzLTExLTE0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fZW1pdF92ZWN0b3JfY29uc3QsIGFybV9vdXRwdXRfbG9hZF9ncik6IFVzZSBJU08gQwoJZnVuY3Rpb24gZGVmaW5pdGlvbiBzeW50YXguCgoyMDAzLTExLTE0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLiBNYWtlCgljaGVjayBmb3IgYXNzaWdubWVudCBpbnRvIHJlZ19lcXVpdl9hZGRyZXNzIHN0cmljdGVyLgoKMjAwMy0xMS0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbiAoUE9TVFNUQUdFMV9GTEFHU19UT19QQVNTKTogUGFzcyBBREFGTEFHUy4KCjIwMDMtMTEtMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9pbl9zbWFsbF9kYXRhX3ApOiBSZXR1cm4gZmFsc2UgZm9yIHVua25vd24KCXNlY3Rpb24gbmFtZXMuCgoyMDAzLTExLTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzEyNTI2CgkqIHRyZWUuYyAoYnVpbGQpOiBBIENBTExfRVhQUiBoYXMgc2lkZS1lZmZlY3RzIGlmIGl0cyBhcmd1bWVudHMgZG8uCgkqIGNhbGxzLmMgKGNhbGxfZXhwcl9mbGFncyk6IE5ldyBmbi4KCSogdHJlZS5oOiBEZWNsYXJlIGl0LgoKMjAwMy0xMS0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChfX3VkaXZzaTMpOiBSZW1vdmUuCgkoZGl2bW9kc2kzKTogQ2hhbmdlIHRoZSBuYW1lIHRvIF9fX3VkaXZzaTMuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgoyMDAzLTExLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJnY2MyLmMgKF9fbmVnZGkyLCBfX2FkZHZzaTMsIF9fYWRkdmRpMywgX19zdWJ2c2kzLCBfX3N1YnZkaTMsCglfX211bHZzaTMsIF9fbmVndnNpMiwgX19uZWd2ZGkyLCBfX211bHZkaTMsIF9fbHNocmRpMywgX19hc2hsZGkzLAoJX19hc2hyZGkzLCBfX2Zmc0RJMiwgX19tdWxkaTMsIF9fY2x6REkyLCBfX2N0ekRJMiwgX19wYXJpdHlESTIsCglfX3VkaXZtb2RkaTQsIF9fZGl2ZGkzLCBfX21vZGRpMywgX19jbXBkaTIsIF9fdWNtcGRpMiwKCV9fZml4dW5zdGZESSwgX19maXh1bnN4ZkRJLCBfX2ZpeHVuc2RmREksIF9fZml4dW5zc2ZESSwKCV9fZmxvYXRkaXhmLCBfX2Zsb2F0ZGl0ZiwgX19mbG9hdGRpZGYsIF9fZmxvYXRkaXNmLCBfX2djY19iY21wKToKCUNvbnN0LWlmeSBhbmQvb3IgaW5pdGlhbGl6ZSBhdXRvbWF0aWMgdmFyaWFibGVzIGF0IGRlY2xhcmF0aW9uLgoKMjAwMy0xMS0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChkaXZtb2RzaTQpOiBSZXBsYWNlIGFsbCB0aGUgdXNlcwoJb2YgZXI0IHdpdGggZXIzLiAgQWRqdXN0IGFsbCBjYWxsZXJzLgoKMjAwMy0xMS0xMyAgQW5kcmV3IFBpbnNraSA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX291dHB1dF9wb3NzaWJsZV9zdHViX2xhYmVsKToKCUFsbG93IHN0dWIgc3ltYm9sIGJlIG5vdCBkZWZpbmVkIHdoZW4gb3V0cHV0dGluZyBwb3NzaWJsZQoJc3R1YiBsYWJlbC4KCjIwMDMtMTEtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbSAoX19fdWRpdnNpMyk6IEp1bXAgdG8gcmV0aQoJaW5zdGVhZCBvZiBleGl0ZGl2LgoJKF9fX3Vtb2RzaTMpOiBMaWtld2lzZS4KCShleGl0ZGl2KTogRG8gbm90IHJlc3RvcmUgYW55IHJlZ2lzdGVyLgoJKHJldGkpOiBSZXN0b3JlIHJlZ2lzdGVycy4KCjIwMDMtMTEtMTMgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHRyZWUtaW5saW5lLmMgKHdhbGtfdHJlZSk6IEhhbmRsZSBQTEFDRUhPTERFUl9FWFBSLgoKMjAwMy0xMS0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDMtMTEtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbSAodWRpdnNpMyk6IERvbid0IHNhdmUvcmVzdG9yZQoJdW51c2VkIHJlZ2lzdGVycy4gIERvbid0IGp1bXAgdG8gZXhpdGRpdi4KCSh1bW9kc2kzKTogTGlrZXdpc2UuCgoyMDAzLTExLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEtlYW4gSm9obnN0b24gPGprakBzY28uY29tPgoKCVBSIGMvMTMwMjkKCSogdG9wbGV2LmMgKGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBEbyBub3Qgd2FybiBhYm91dCB1bnVzZWQKCXN0YXRpYyBjb25zdHMuCgoyMDAzLTExLTEzICBQYXZlbCBQaXNhICA8cGlzYUBjbXAuZmVsay5jdnV0LmN6PgoJICAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbSAoRGVuSGlnaE5vblplcm8pOiBPcHRpbWl6ZSB1c2luZwoJdGhlIGFwcHJveGltYXRlIHF1b3RpZW50IG1ldGhvZC4KCjIwMDMtMTEtMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogV2hlbiByZS1kaXN0cmlidXRpbmcgdGhlIG5vdGVzIGZyb20KCWFuIGluc24gd2UgYXJlIGFib3V0IHRvIGRlbGV0ZSwgZW5zdXJlIHdlIGNhbid0IGVuZCB1cCB3aXRoIGEgY3ljbGljCglsaXN0IG9mIG5vdGVzLgoKMjAwMy0xMS0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTI5MjYKCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCkgW0NPTVBPTkVOVF9SRUZdOiBEb24ndCBwdXQKCXRoZSBVTkNIQU5HSU5HX1JUWF9QIGZsYWcgb24gbWVtb3J5IHJlZmVyZW5jZXMgdG8gcmVhZC1vbmx5Cgljb21wb25lbnRzIHRoYXQgYXJlIG5vdCBhZGRyZXNzYWJsZS4KCjIwMDMtMTEtMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbSAoZGl2bW9kc2k0KTogQ2xlYXIgUzBQIGluCglEZW5IaWdoTm9uWmVyby4KCjIwMDMtMTEtMTMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBvcHQvMTIyNzUKCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogVXNlIGNoYW5nZV9kZWNsX2Fzc2VtYmxlcl9uYW1lLgoJKiBjLXByYWdtYS5jIChoYW5kbGVfcHJhZ21hX3JlZGVmaW5lX2V4dG5hbWUpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBMaWtld2lzZS4KCSogY2dyYXBoLmMgKGNoYW5nZV9kZWNsX2Fzc2VtYmxlcl9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKHNldF9kZWNsX2Fzc2VtYmxlcl9uYW1lKTogS2lsbCBkZWFkIGRlY2xhcmF0aW9uLgoJKGNoYW5nZV9kZWNsX2Fzc2VtYmxlcl9uYW1lKTogRGVjbGFyZS4KCgkqIGRlY2wuYyAobWFrZV9ydGxfZm9yX25vbmxvY2FsX2RlY2wpOiBVc2UgY2hhbmdlX2RlY2xfYXNzZW1ibGVyX25hbWUuCgkqIGRlY2wyLmMgKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogVXNlIGNoYW5nZV9kZWNsX2Fzc2VtYmxlcl9uYW1lLgoKMjAwMy0xMS0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChfX19tdWxzaTMpOiBEb24ndCBzYXZlL3Jlc3RvcmUKCWFuIHVudXNlZCByZWdpc3Rlci4KCjIwMDMtMTEtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiBib290c3RyYXAvMTI3NTIKCSogY29uZmlnL21pcHMvdC1pcmlzNiAoTVVMVElMSUJfT1BUSU9OUyk6IFB1dCAtbWFiaT1uMzIgZmlyc3QuCgkoTVVMVElMSUJfT1NESVJOQU1FUyk6IFJlb3JkZXIgYWNjb3JkaW5nbHkuCgoyMDAzLTExLTEyICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIHJzNjAwMC1wcm90b3MuaCAocnM2MDAwX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogQWRkLgoJKHJzNjAwMF9zdGFja19pbmZvKTogUmVtb3ZlLiAgKGRlYnVnX3N0YWNrX2luZm8pOiBSZW1vdmUuCgkocnM2MDAwX2VtaXRfZWhfcmVnX3Jlc3RvcmUpOiBBZGQKCSogcnM2MDAwLmMgKHJzNjAwMF9zdGFja190KTogTW92ZSBmcm9tIHJzNjAwMC5oLCBjaGFuZ2UgZGF0YSB0eXBlCglvZiB2YXJzX3NpemUgYW5kIHRvdGFsX3NpemUgdG8gSE9TVF9XSURFX0lOVC4KCShlbWl0X2ZyYW1lX3NhdmUpOiBDaGFuZ2UgcGFyYW1ldGVyIHNpemUgdG8gSE9TVF9XSURFX0lOVC4KCShyczYwMDBfc3RhY2tfaW5mbyk6IE1ha2Ugc3RhdGljOyBjaGFuZ2UgZGF0YSBzaXplIHRvIEhPU1RfV0lERV9JTlQuCgkoZGVidWdfc3RhY2tfaW5mbyk6IE1ha2Ugc3RhdGljOyBjaGFuZ2Ugb3V0cHV0IGZvcm1hdCBvZiBIT1NUX1dJREVfSU5UCgl2YWx1ZXMuCgkocnM2MDAwX2VtaXRfZWhfcmVnX3Jlc3RvcmUpOiBOZXcsIHdpdGggY29kZSBmb3JtZXJseSBpbiByczYwMDAubWQuCgkocnM2MDAwX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTmV3LCB3aXRoIGNvZGUgZm9ybWVybHkgaW4KCUlOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VULgoJKiByczYwMDAuaCAocnM2MDAwX3N0YWNrX3QpOiBSZW1vdmUuCgkoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBSZXBsYWNlIGNvZGUgd2l0aCBjYWxsIHRvIGZ1bmN0aW9uCglyczYwMDBfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQuCgkqIHJzNjAwMC5tZCAoVU5TUEVDVl9FSF9SUiBzcGxpdCk6IFJlcGxhY2UgY29kZSB3aXRoIGNhbGwgdG8KCXJzNjAwMF9lbWl0X2VoX3JlZ19yZXN0b3JlLgoKMjAwMy0xMS0xMiAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjLXR5cGVjay5jIChjX2NvbnZlcnRfcGFybV9mb3JfaW5saW5pbmcpOiBBZGQgYXJnbnVtLCB3aGljaAoJaXMgdGhlIGFyZ3VtbnQgd2UgYXJlIHByb2Nlc3Npbmcgc28gdGhhdCB3YXJuaW5ncyBhbmQgZXJyb3JzCgl3aWxsIGhhdmUgdGhhdCBpbmZvcm1hdGlvbi4KCSogYy10cmVlLmggKGNfY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IEFkZCBhcmdudW0uCgkqIGxhbmctaG9va3MtZGVmLmgKCShsaGRfdHJlZV9pbmxpbmluZ19jb252ZXJ0X3Bhcm1fZm9yX2lubGluaW5nKTogTGlrZXdzZS4KCSogbGFuZ2hvb2tzLmMgKGxoZF90cmVlX2lubGluaW5nX2NvbnZlcnRfcGFybV9mb3JfaW5saW5pbmcpOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLmggKGNvbnZlcnRfcGFybV9mb3JfaW5saW5pbmcpOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYyAoaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMpOiBDb21wdXRlIGFuZAoJcGFzcyBhcmdudW0gZG93bi4KCjIwMDMtMTEtMTIgIEFsZXhleSBTdGFyb3ZveXRvdiAgPGFsZXhleS5zdGFyb3ZveXRvdkBzdW4uY29tPgoJICAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMjk1MwoJKiB0cmVlLWlubGluZS5jIChpbmxpbmVfZm9yYmlkZGVuX3BfMSk6IEFkZGVkIGNoZWNrIGZvciBCVUlMVF9JTgoJYmVmb3JlIHN3aXRjaCBieSBGVU5DVElPTl9DT0RFLgoKMjAwMy0xMS0xMiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKHN0b3JlaGkpOiBBdm9pZCB1c2Ugb2YgZXhwbGljaXQgc3VicmVnLgoJKHN0b3JlaGlfYmlnZW5kLCBzdG9yZWludGhpLCBtb3ZoaV9iaWdlbmQpOiBMaWtld2lzZS4KCjIwMDMtMTEtMTIgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChwcmVmZXRjaCk6IE5ldyBwYXR0ZXJuLgoKMjAwMy0xMS0xMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IFZlcmlmeSB0aGF0IGFkZHJlc3NlcyBmb3IKCXJlZ19lcXVpdl8qIGFyZSB2YWxpZCBmb3IgdGhlIGFyY2hpdGVjdHVyZS4KCjIwMDMtMTEtMTEgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAocHVyZ2VfYWRkcmVzc29mXzEpOiBBZGQgbGliY2FsbCBjaGVjay4KCVJlbW92ZSB0ZXN0IGZvciBjYWNoZWQgcmVwbGFjZW1lbnRzIG9uIGZhbGxiYWNrIGNhc2UuCglTaW1wbGlmeSBtb2RlIGNvbXBhcmlzb25zLiBBZGQgbGliY2FsbCB0ZXN0IGZvcgoJcGFyYWRveGljYWwgc3VicmVncy4KCjIwMDMtMTEtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvdC1oODMwMDogRml4IGFuIG9ic29sZXRlIGNvbW1lbnQuCgoyMDAzLTExLTExICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkLCBleHRyYWN0X2JpdF9maWVsZCk6IFJldmVydCBsYXN0IHR3bwoJY2hhbmdlcy4KCjIwMDMtMTEtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbTogUmVwbGFjZSBEZW5IaWdoWmVybyB3aXRoCglEZW5IaWdoTm9uWmVyby4KCjIwMDMtMTEtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2lubGluZWRfcCk6IFVzZQoJcmVhbGx5X25vX2lubGluZS4KCjIwMDMtMTEtMTEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5oIChUUkFNUE9MSU5FX1RFTVBMQVRFKTogRml4IGZsdXNoaW5nIG9mIGNhY2hlIGxpbmVzIHdoZW4KCWdlbmVyYXRpbmcgNjQtYml0IGNvZGUuCgoyMDAzLTExLTEwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChsZWdpdGltYXRlX2xvX3N1bV9hZGRyZXNzX3ApOiBSZW1vdmUKCWFjY2lkZW50YWwgY29tbWl0IGluIHByZXZpb3VzIGNoYW5nZS4KCjIwMDMtMTEtMTAgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoU1RBQ0tfU0laRV9NT0RFKTogQWRkIGRlZmluaXRpb24uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJlZ19vcl9tZW1fb3BlcmFuZCk6IEFkZCBtYWNoby1zdHlsZQoJYWRkcmVzcyByZWNvZ25pdGlvbi4KCShtYWNob19sb19zdW1fbWVtb3J5X29wZXJhbmQpOiBSb3V0aW5lIHRvIHJlY29nbml6ZSBtYWNoby1zdHlsZQoJYWRkcmVzcyByZWNvZ25pdGlvbi4KCjIwMDMtMTEtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2xhYmVsX2RpZSk6IENvcGUgd2l0aCBERUNMX1JUTCBub3Qgc2V0LgoKMjAwMy0xMS0xMCAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLXByb3Rvcy5oIChkYXJ3aW5fYXNzZW1ibGVfdmlzaWJpbGl0eSk6IERlY2xhcmUuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2Fzc2VtYmxlX3Zpc2liaWxpdHkpOiBEZWZpbmUuICBXYXJuIGZvcgoJYW55dGhpbmcgb3RoZXIgdGhhbiBWSVNJQklMSVRZX0RFRkFVTFQgYW5kIFZJU0lCSUxJVFlfSElEREVOLgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9BU01fQVNTRU1CTEVfVklTSUJJTElUWSk6IFVzZQoJZGFyd2luX2Fzc2VtYmxlX3Zpc2liaWxpdHkgaW5zdGVhZCBvZiBkZWZhdWx0LgoKMjAwMy0xMS0xMCAgV2FsZGVrIEhlYmlzY2ggIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CgoJUFIgdGFyZ2V0LzEyODY1CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBDYWxsCglfX2VuYWJsZV9leGVjdXRlX3N0YWNrIG9ubHkgYWZ0ZXIgd3JpdGluZyBvbnRvIHRoZSBzdGFjay4KCShzcGFyYzY0X2luaXRpYWxpemVfdHJhbXBvbGluZSk6IExpa2V3aXNlLgoKMjAwMy0xMS0wOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCk6IFRyeSBzd2FwcGluZyB0aGUgY29tcGFyaXNvbiBvcGVyYW5kcwoJb2YgdGhlIGxvb3AgY29uZGl0aW9uIHRvIGlkZW50aWZ5IGEgc3VpdGFibGUgaW5kdWN0aW9uIHZhcmlhYmxlLgoJKiB1bnJvbGwuYyAobG9vcF9pdGVyYXRpb25zKTogTGlrZXdpc2UuCgoyMDAzLTExLTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBGaXggc3BhcmMgdnMKCXNwYXJjNjQgI2NwdSBhbmQgI21hY2hpbmUgYXNzZXJ0aW9ucy4KCjIwMDMtMTEtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAocnRsYW5hbC5vKTogRGVwZW5kIG9uIEJBU0lDX0JMT0NLX0guCgoyMDAzLTExLTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0cmVlLW9wdGltaXplLmMgKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IEZpeCB3YXJuaW5nLgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogVXNlCgljZ3JhcGhfcG9zc2libHlfaW5saW5lZF9wLgoJKiB0cmVlLW9wdGltaXplLmMgKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IERvIG5vdCBraWxsIHNhdmVkIHRyZWUuCgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogRG8gbm90IHNldCBtYXgtaW5saW5lLWluc25zLgoJKiBwYXJhbXMuZGVmOiBVcGRhdGUgY29tbWVudHMuCgkoUEFSQU1fTUFYX0lOTElORV9JTlNOUyk6IEtpbGwuCgkqIGludm9rZS50ZXhpIChtYXgtaW5saW5lLWluc25zKTogS2lsbC4KCjIwMDMtMTEtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMzE5MAoJUFIgYy84NzE0CgkqIGMtZm9ybWF0LmMgKHNldF9XZm9ybWF0KTogRG8gbm90IGVuYWJsZSAtV2Zvcm1hdC15MmsgYnkgZGVmYXVsdC4KCSogaW52b2tlLnRleGk6IFVwZGF0ZS4KCjIwMDMtMTEtMDggIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgb3B0aW1pemF0aW9uLzEyNjMwCgkqIHBhLmMgKGNvbXB1dGVfbW92c3Ryc2lfbGVuZ3RoKTogUmVuYW1lIHRvIGNvbXB1dGVfbW92c3RyX2xlbmd0aC4KCUhhbmRsZSBsZW5ndGggY29tcHV0YXRpb24gNjQtYml0IG1vdmVzLgoJKGNvbXB1dGVfY2xyc3RyX2xlbmd0aCwgb3V0cHV0X2Jsb2NrX2NsZWFyKTogSW1wbGVtZW50IGJsb2NrIGNsZWFyLgoJKG91dHB1dF9ibG9ja19tb3ZlKTogSGFuZGxlIDY0LWJpdCBtb3Zlcy4KCShwYV9hZGp1c3RfaW5zbl9sZW5ndGgpOiBVc2UgY29tcHV0ZV9tb3ZzdHJfbGVuZ3RoIGFuZAoJY29tcHV0ZV9jbHJzdHJfbGVuZ3RoLgoJKiBwYS5tZCAobW92c3Ryc2kpOiBSZXZpc2Ugb3BlcmFuZCBvcmRlciBhbmQgY29tbWVudHMuICBEb24ndCB1c2UKCW1hdGNoX3NjcmF0Y2guCgkobW92c3Ryc2lfaW50ZXJuYWwpOiBEZWxldGUuCgkobW92c3Ryc2lfcHJlcmVsb2FkLCBtb3ZzdHJzaV9wb3N0cmVsb2FkKTogTmV3IGluc25zLiAgRGVmaW5lIHNwbGl0dGVyCglhbmQgcGVlcGhvbGUyIHBhdHRlcm5zIHRvIHRyYW5zZm9ybSBwcmVyZWxvYWQgdG8gcG9zdHJlbG9hZCBmb3JtLgoJKG1vdnN0cmRpLCBtb3ZzdHJkaV9wcmVyZWxvYWQsIG1vdnN0cmRpX3Bvc3RyZWxvYWQsIGNscnN0cnNpLAoJY2xyc3Ryc2lfcHJlcmVsb2FkLCBjbHJzdHJzaV9wb3N0cmVsb2FkLCBjbHJzdHJkaSwgY2xyc3RyZGlfcHJlcmVsb2FkLAoJY2xyc3RyZGlfcG9zdHJlbG9hZCk6IE5ldyBwYXR0ZXJucyBmb3IgNjQtYml0IGJsb2NrIG1vdmUsIGFuZCBibG9jawoJY2xlYXIuCgkqIHBhLXByb3Rvcy5oIChvdXRwdXRfYmxvY2tfY2xlYXIpOiBOZXcgcHJvdG90eXBlLgoKMjAwMy0xMS0wOCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGRieG91dC5jIChjdXJyZW50X2ZpbGUpOiBBbHNvIHdyYXAgaW5zaWRlIERCWF9ERUJVR0dJTkdfSU5GTyB8fAoJWENPRkZfREVCVUdHSU5HX0lORk8uCgoyMDAzLTExLTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkYnhvdXQuYyAoY3VycmVudF9maWxlKTogV3JhcCBkZWNsYXJhdGlvbiBpbiBEQlhfVVNFX0JJTkNMLgoKMjAwMy0xMS0wNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogUmVtb3ZlCglyZWR1bmRhbnQgcGFyZW5zLgoKCSogY3BwZmlsZXMuYyAocGNoX29wZW5fZmlsZSk6IE5ldyBwYXJhbWV0ZXIgJ2ludmFsaWRfcGNoJywgc2V0IGl0LgoJKGZpbmRfZmlsZV9pbl9kaXIpOiBMaWtld2lzZS4KCShfY3BwX2ZpbmRfZmlsZSk6IFByaW50IG1lc3NhZ2UgaWYgbm8gaGVhZGVyIGZpbGUgaXMgZm91bmQKCWJ1dCBhbiBpbnZhbGlkIFBDSCBmaWxlIHdhcy4KCjIwMDMtMTEtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10eXBlY2suYyAocGVkYW50aWNfbHZhbHVlX3dhcm5pbmcpOiBEZXByZWNhdGUgY29tcG91bmQKCWV4cHJlc3Npb25zIGFzIGx2YWx1ZXMuCgkoaW50ZXJuYWxfYnVpbGRfY29tcG91bmRfZXhwcik6IFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIGZvcgoJbm9uLXBlZGFudGljIGNhc2UuCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgdGhhdCBhbGwgZXh0ZW5kZWQgbHZhbHVlcyBhcmUgbm93CglkZXByZWNhdGVkLgoKMjAwMy0xMS0wNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgMTE2NTQKCSogZGJ4b3V0LmMgKHN0cnVjdCBkYnhfZmlsZSk6IERvIG5vdCBzYXZlIGZvciBQQ0guCgkoY3VycmVudF9maWxlKTogTGlrZXdpc2UuCgkoZGJ4b3V0X2luaXQpOiBEb24ndCBhbGxvY2F0ZSBzdHJ1Y3QgZGJ4X2ZpbGUgdXNpbmcgR0MuCgkoZGJ4b3V0X3N0YXJ0X3NvdXJjZV9maWxlKTogTGlrZXdpc2UuCgoyMDAzLTExLTA3ICBGYWxrIEh1ZWZmbmVyICA8ZmFsa0BkZWJpYW4ub3JnPgoKCSogY29uZmlnL2FscGhhL2VsZi5oLCBjb25maWcvYWxwaGEvdW5pY29zbWsuaCwKCWNvbmZpZy9hbHBoYS92bXMuaDogQ29udmVydCB0byBJU08gQzkwLgoKMjAwMy0xMS0wNyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvYXJtL3BlLmg6IENvbnZlcnQgdG8gSVNPIEM5MC4KCjIwMDMtMTEtMDcgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2gtcHJvdG9zLmggKHNoX3BjaF92YWxpZF9wKTogRGVjbGFyZS4KCSogc2guYyAoImludGwuaCIpOiBJbmNsdWRlLgoJKFRBUkdFVF9QQ0hfVkFMSURfUCk6IE92ZXJyaWRlLgoJKHNoX3RhcmdldF9zd2l0Y2hlcyk6IE5ldyB2YXJpYWJsZS4KCSh0YXJnZXRfc3dpdGNoZXMpOiBEZWZpbmUuCgkoc2hfcGNoX3ZhbGlkX3ApOiBOZXcgZnVuY3Rpb24uCgoJKiBzaC5oIChNT0RFX0FGVEVSKTogRG9uJ3QgY2hhbmdlIG1vZGUgdW5sZXNzIFRBUkdFVF9ISVRBQ0hJLgoKMjAwMy0xMS0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jICh4ODZfNjRfc2lnbl9leHRlbmRlZF92YWx1ZSk6ICBSZXR1cm4gZmFsc2UgZnJvbSB0bHMgdmFyaWFibGVzLgoJKHg4Nl82NF96ZXJvX2V4dGVuZGVkX3ZhbHVlKTogIGxpa2V3aXNlLgoKMjAwMy0xMS0wNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobG9hZGdwKTogVGFrZSAkMjUgYXMgYSBzZWNvbmQgb3BlcmFuZC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IE1vZGlmeSBhY2NvcmRpbmdseS4KCjIwMDMtMTEtMDYgIE1hdHQgQXVzdGVybiA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmlzaWJpbGl0eV9hdHRyaWJ1dGUpOiBTZXQgREVDTF9WSVNJQklMSVRZCglmaWVsZCBpbnN0ZWFkIG9mIGhhbmdpbmcgYW4gYXR0cmlidXRlIG9iamVjdCBvZmYgdGhlIGRlY2wuCgkqIHRyZWUuaCAoREVDTF9WSVNJQkxJVFkpOiBOZXcgYWNjZXNzb3IgbWFjcm8gZm9yCglzeW1ib2xfdmlzaWJpbGl0eSBmaWVsZCBpbiBzdHJ1Y3QgdHJlZV9kZWNsLgoJKGVudW0gc3ltYm9sX3Zpc2liaWxpdHkpOiBNb3ZlIGRlZmluaXRpb24gdG8gYmVmb3JlIHRyZWVfZGVjbC4KCShzdHJ1Y3QgdHJlZV9kZWNsKTogRGVmaW5lIG5ldyB0d28tYml0IGZpZWxkLCBzeW1ib2xfdmlzaWJpbGl0eS4KCShkZWNsX3Zpc2liaWxpdHkpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIHZhcmFzbS5jIChtYXliZV9hc3NlbWJsZV92aXNpYmlsaXR5KTogVXNlIERFQ0xfVklTSUJJTElUWQoJaW5zdGVhZCBvZiBkZWNsX3Zpc2liaWxpdHkuCgkoZGVmYXVsdF9iaW5kc19sb2NhbF9wXzEpOiAgVXNlIERFQ0xfVklTSUJJTElUWQlpbnN0ZWFkIG9mCglkZWNsX3Zpc2liaWxpdHkuCgkoZGVjbF92aXNpYmlsaXR5KTogUmVtb3ZlLgoKMjAwMy0xMS0wNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2VtaXRfZXBpbG9ndWUpOiBSZWNvZ25pemUgbW9yZSBjYXNlcwoJd2hlcmUgcmVnaXN0ZXIgMTQgd2lsbCBiZSBzYXZlZC4KCjIwMDMtMTEtMDYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoVVNFX0ZQX0ZPUl9BUkdfUCk6IE1vdmUgdG8gcnM2MDAwLmMuCgkoVVNFX0FMVElWRUNfRk9SX0FSR19QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKFVTRV9GUF9GT1JfQVJHX1ApOiBNb3ZlIGZyb20gcnM2MDAwLmguCglUYWtlIGEgcG9pbnRlciBhcyB0aGUgQ1VNIHBhcmFtZXRlci4gIFVwZGF0ZSBjYWxsZXJzLgoJKFVTRV9BTFRJVkVDX0ZPUl9BUkdfUCk6IExpa2V3aXNlLiAgQWxzbyBjb3JyZWN0IGZvciBEYXJ3aW4vQUlYCgkzMi1iaXQgQUJJcy4KCShmdW5jdGlvbl9hcmdfYWR2YW5jZSk6IFVzZSBVU0VfQUxUSVZFQ19GT1JfQVJHX1AuICBDb3JyZWN0IGNhc2UKCW9mIHZlY3RvciBwYXJhbWV0ZXJzIGFzIG5hbWVkIGFyZ3VtZW50cyBvZiBzdGRhcmcgZnVuY3Rpb24uCgkoZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UuCgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChBU01fU1BFQyk6IFVzZSAtZm9yY2VfY3B1c3VidHlwZV9BTEwgd2hlbgoJLW1hbHRpdmVjIGlzIHNwZWNpZmllZCwgbm90IHRoZSBub24tZXhpc3RlbnQgLWZhbHRpdmVjLgoKMjAwMy0xMS0wNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9mdW5jdGlvbl92YWx1ZSk6IERlY2xhcmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoVEFSR0VUX1JFVFVSTl9JTl9NRU1PUlkpOiBEZWZpbmUuCgkoczM5MF9yZXR1cm5faW5fbWVtb3J5KTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfZnVuY3Rpb25fdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9mdW5jdGlvbl9hcmdfZmxvYXQpOiBSZXR1cm4gZmFsc2UgZm9yIGFsbCBhcmd1bWVudHMgbGFyZ2VyCgl0aGFuIDggYnl0ZXMuCgkoczM5MF9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBMaWtld2lzZS4gIFJldHVybiB0cnVlIGZvcgoJYWxsIHZlY3RvciBhcmd1bWVudHMuCgkoczM5MF9mdW5jdGlvbl9hcmdfaW50ZWdlcik6IE5ldyBmdW5jdGlvbi4KCShzMzkwX2Z1bmN0aW9uX2FyZ19hZHZhbmNlKTogQ2FsbCBpdC4gIEFkZCBzYW5pdHkgY2hlY2tzLgoJKHMzOTBfZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRlVOQ1RJT05fVkFMVUUpOiBDYWxsIHMzOTBfZnVuY3Rpb25fdmFsdWUuCgkoTElCQ0FMTF9WQUxVRSk6IExpa2V3aXNlLgoJKFJFVF9SRUcpOiBSZW1vdmUuCgkoUkVUVVJOX0lOX01FTU9SWSk6IFJlbW92ZS4KCjIwMDMtMTEtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBDaGFuZ2UKCXJldHVybiB0eXBlIHRvIEhPU1RfV0lERV9JTlQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19mcmFtZV9pbmZvKTogR2l2ZSBzaXplcyB0eXBlIEhPU1RfV0lERV9JTlQuCglNYWtlIGluaXRpYWxpemVkIGEgYm9vbC4gIE1ha2UgcmVnaXN0ZXIgbWFza3MgdW5zaWduZWQgaW50cy4KCShjb21wdXRlX2ZyYW1lX3NpemUpOiBNYWtlIHNhbWUgbWFzayBjaGFuZ2UgaGVyZS4gIFVzZSBIT1NUX1dJREVfSU5UCgl3aGVyZSBhcHByb3ByaWF0ZS4KCShtaXBzX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogUmV0dXJuIGEgSE9TVF9XSURFX0lOVC4KCShtaXBzX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFByaW50IHNpemVzIGFzIEhPU1RfV0lERV9JTlRzLgoKMjAwMy0xMS0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogUmVtb3ZlIGJvZ3VzCgluZWdhdGlvbi4KCjIwMDMtMTEtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmggKEFTTV9PVVRQVVRfQUxJR05fV0lUSF9OT1ApOiBEZWZpbmUuCgoyMDAzLTExLTA2ICBNb21jaGlsIFZlbGlrb3YgIDx2ZWxjb0BmYWRhdGEuYmc+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBTZXQgTUFTS19TT0ZUX0ZMT0FUCglmb3IgVlI0MTExIHRvby4KCjIwMDMtMTEtMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJ1aWx0aW5zLmMgKHNpbXBsaWZ5X2J1aWx0aW5fc3RycmNociwgc2ltcGxpZnlfYnVpbHRpbl9zdHJwYnJrKTogQWRkCgltaXNzaW5nIGNhc3RzLgoKMjAwMy0xMS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbm1vZGVzLmM6IENoYW5nZSB0aGUgd29yZCAiYml0c2l6ZSIgdG8gInByZWNpc2lvbiIgdGhyb3VnaG91dC4KCSogbWFjaG1vZGUuZGVmOiBMaWtld2lzZS4KCSogbWFjaG1vZGUuaCAoR0VUX01PREVfU0laRSk6IENhc3QgdmFsdWUgdG8gdW5zaWduZWQgc2hvcnQuCgkoR0VUX01PREVfQklUU0laRSk6IERlZmluZSBhcyBHRVRfTU9ERV9TSVpFICogQklUU19QRVJfVU5JVC4KCShHRVRfTU9ERV9QUkVDSVNJT04pOiBOZXcgbWFjcm8uCgkobW9kZV9iaXRzaXplKTogUmVuYW1lZCBtb2RlX3ByZWNpc2lvbi4KCSogc3Rvci1sYXlvdXQuYyAobW9kZV9mb3Jfc2l6ZSwgc21hbGxlc3RfbW9kZV9mb3Jfc2l6ZSk6CglVc2UgR0VUX01PREVfUFJFQ0lTSU9OOyBjbGFyaWZ5IGNvbW1lbnRzLgoKMjAwMy0xMS0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvaW5zdGFsbC1vbGQudGV4aTogUmVtb3ZlIG9sZCBkb2N1bWVudGF0aW9uIG9mIGJ1aWxkaW5nCgljcm9zcy1jb21waWxlcnMuCgkqIGRvYy9pbnN0YWxsLnRleGk6IE1vdmUgc29tZSBvZiBpdCB0byBoZXJlLgoKMjAwMy0xMS0wNSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJUFIgcHJlcHJvY2Vzc29yLzEyODkxCgkqIGMtb3B0cy5jIChmaW5pc2hfb3B0aW9ucyk6ICBTZXQgaW5jbHVkZV9jdXJzb3IgdG8gZGlzYWJsZSBwcmVtYXR1cmUKCWNhbGxzIHRvIHB1c2hfY29tbWFuZF9saW5lX2luY2x1ZGUgZnJvbSBjcHBfc2Nhbl9ub291dHB1dC4KCUZpeGVzIGJ1ZyByZXBvcnRlZCBieSBESiBEZWxvcmllLgoKMjAwMy0xMS0wNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzZXR1cF9pbmNvbWluZ192YXJhcmdzKTogUmVtb3ZlCgljb2RlIHN1cHBvcnRpbmcgb2xkLXN0eWxlIHZhcmFyZ3MuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbWFjaG9waWNfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFVzZQoJYW4gaW50ZXJtZWRpYXRlIHJlZ2lzdGVyIGZvciBiZXR0ZXIgb3B0aW1pc2F0aW9uLgoKMjAwMy0xMS0wNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIG9wdGltaXphdGlvbi8xMDA4MAoJKiBjZmdsb29wYW5hbC5jICh2YXJpYWJsZV9pbml0aWFsX3ZhbHVlLCB2YXJpYWJsZV9pbml0aWFsX3ZhbHVlcywKCXNpbXBsZV9sb29wX2V4aXRfcCk6IFJlY29yZCB0aGUgZmFjdCB0aGF0IGluaXRpYWwgdmFsdWUgaXMgZXh0ZW5kZWQKCWZyb20gaW5uZXIgbW9kZS4KCShjb3VudF9zdHJhbmdlX2xvb3BfaXRlcmF0aW9ucywgY291bnRfbG9vcF9pdGVyYXRpb25zKTogSGFuZGxlCglpdnMgdGhhdCBpdGVyYXRlIGluIGEgbmFycm93ZXIgbW9kZS4gRml4IGhhbmRsaW5nIG9mIG92ZXJmbG93cy4KCUltcHJvdmUgaGFuZGxpbmcgb2YgTkUgY29uZGl0aW9ucy4KCShpbnZlcnNlLCBmaXRzX2luX21vZGVfcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKHNpbXBsZV9pbmNyZW1lbnQpOiBEZXRlY3QgdmFyaWFibGVzIHRoYXQgaXRlcmF0ZSBpbiBhIG5hcnJvd2VyIG1vZGUuCgkqIGNmZ2xvb3AuaCAoc3RydWN0IGxvb3BfZGVzYyk6IEZpZWxkcyBpbm5lcl9tb2RlIGFuZCBleHRlbmQgYWRkZWQuCgoyMDAzLTExLTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGNvbXB1dGVfdnJzYXZlX21hc2spOiBDb3JyZWN0IG9mZi1ieS1vbmUKCWVycm9yLgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBEYXJ3aW4KCW5lZWRzIFZSU0FWRS4KCjIwMDMtMTEtMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10eXBlY2suYyAocGVkYW50aWNfbHZhbHVlX3dhcm5pbmcpOiBEZXByZWNhdGUgdXNlIG9mCgljb25kaXRpb25hbCBleHByZXNzaW9ucyBhcyBsdmFsdWVzLgoKMjAwMy0xMS0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRzeXN0ZW0uaDogQWRkIHRoZSBwcm90b3R5cGUgb2Ygc3RybGVuLgoJKiB1bndpbmQtcGUuaCAocmVhZF9lbmNvZGVkX3ZhbHVlX3dpdGhfYmFzZSk6IEFkZCBhbgoJYXBwcm9wcmlhdGUgY2FzdCB0byBoYW5kbGUgYSBjYXNlIHdoZXJlIHRoZSBwb2ludGVyIHNpemUgaXMKCXNtYWxsZXIgdGhhbiBzaXplb2YgKGludCkuCgoyMDAzLTExLTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2dsb2JhbF9waWNfY29uc3RhbnRfcCk6IERlbGV0ZS4KCShtaXBzX2RlbGVnaXRpbWl6ZV9hZGRyZXNzKTogRGVsZXRlLgoJKG1pcHNfZ290b2ZmX2dsb2JhbCwgbWlwc19sb2FkX2dvdF9wYWdlKTogRGVjbGFyZS4KCShtaXBzX2xvYWRfZ290X2dsb2JhbCwgbWlwc19yZXdyaXRlX3NtYWxsX2RhdGEpOiBEZWNsYXJlLgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChGSU5EX0JBU0VfVEVSTSk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKERBTkdFUk9VU19GT1JfTEEyNV9QKTogVXNlIGdsb2JhbF9nb3Rfb3BlcmFuZC4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgZ2xvYmFsX2dvdF9vcGVyYW5kLCBsb2NhbF9nb3Rfb3BlcmFuZCBhbmQKCXNtYWxsX2RhdGFfcGF0dGVybi4gIFJlbW92ZSBDT05TVCBmcm9tIGNvbnN0X2FyaXRoX29wZXJhbmQncyBlbnRyeS4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoVU5TUEVDX0FERFJFU1NfUCwgQ09OU1RfR1BfUCk6IE5ldyBtYWNyb3MuCgkoVU5TUEVDX0FERFJFU1MsIFVOU1BFQ19BRERSRVNTX1RZUEUpOiBMaWtld2lzZS4KCShtaXBzX2NvbnN0YW50X3R5cGUpOiBEZWxldGUuCgkobWlwc19zeW1ib2xfdHlwZSk6IEFkZCBTWU1CT0xfR09UT0ZGX1BBR0UsIFNZTUJPTF9HT1RPRkZfR0xPQkFMLAoJU1lNQk9MX0dPVE9GRl9DQUxMIGFuZCBTWU1CT0xfR09UT0ZGX0xPQURHUC4KCShOVU1fU1lNQk9MX1RZUEVTKTogTmV3IG1hY3JvLgoJKG1pcHNfYWRkcmVzc190eXBlKTogUmVtb3ZlIEFERFJFU1NfSU5WQUxJRC4KCShtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIGhhc19ncF9pbnNuX3AuCgkobWlwc19jb25zdGFudF9pbmZvKTogRGVsZXRlLgoJKG1pcHNfYWRkcmVzc19pbmZvKTogQWRkIHRoZSBhZGRyZXNzIHR5cGUgYXMgYW4gZXh0cmEgZmllbGQuICBSZXBsYWNlCgl0aGUgYyBmaWVsZCB3aXRoIHN5bWJvbF90eXBlLgoJKG1pcHNfc3BsaXRfcCwgbWlwc19sb19yZWxvY3MsIG1pcHNfaGlfcmVsb2NzKTogTmV3IGFycmF5cy4KCShUQVJHRVRfREVMRUdJVElNSVpFX0FERFJFU1MpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCShtaXBzX3JlbG9jX29mZnNldF9va19wLCBtaXBzX2NsYXNzaWZ5X2NvbnN0YW50KTogRGVsZXRlLgoJKG1pcHNfc3BsaXRfY29uc3QsIG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcCk6IE5ldyBmdW5jdGlvbnMuCgkobWlwc19zeW1ib2xpY19hZGRyZXNzX3ApOiBUYWtlIHRoZSBzeW1ib2wgdHlwZSBhbmQgbW9kZSBhcyBhcmd1bWVudHMuCgkobWlwc19jbGFzc2lmeV9hZGRyZXNzKTogUmV0dXJuIHRydWUgaWYgdGhlIGFkZHJlc3MgaXMgdmFsaWQsIHN0b3JpbmcKCWl0cyB0eXBlIGluIElORk8uICBVc2UgbWlwc19zeW1ib2xpY19jb25zdGFudF9wLiAgVXNlIG1pcHNfbG9fcmVsb2NzW10KCXRvIHRlc3Qgd2hldGhlciBhIExPX1NVTSBhZGRyZXNzIGlzIGFsbG93ZWQuCgkobWlwc19zeW1ib2xfaW5zbnMpOiBSZXR1cm4gMCBmb3IgZ2VuZXJhbCBtaXBzMTYgc3ltYm9scy4KCVJlb3JkZXIgU1lNQk9MX0dPVF9HTE9CQUwgY2FzZSB0byBtYXRjaCBtaXBzX3N5bWJvbF90eXBlIGRlZmluaXRpb24uCglIYW5kbGUgdGhlIG5ldyBTWU1CT0xfR09UT0ZGXypzLgoJKG1pcHNfYWRkcmVzc19pbnNucyk6IFVwZGF0ZSBjYWxsIHRvIG1pcHNfY2xhc3NpZnlfYWRkcmVzcy4KCShtaXBzX2NvbnN0X2luc25zKTogQmUgbW9yZSBmdXNzeSBhYm91dCBISUdIIGNvbnN0YW50cy4gIFJlbW92ZSB1c2UKCW9mIG1pcHNfY2xhc3NpZnlfY29uc3RhbnQuICBCZSBtb3JlIGFjY3VyYXRlIGFib3V0IENPTlNUcy4KCShtaXBzX2dsb2JhbF9waWNfY29uc3RhbnRfcCk6IERlbGV0ZS4KCShjb25zdF9hcml0aF9vcGVyYW5kKTogT25seSBhY2NlcHQgQ09OU1RfSU5Ucy4KCShjYWxsX2luc25fb3BlcmFuZCk6IFJlbW92ZSBjYWxsIHRvIG1pcHNfY2xhc3NpZnlfY29uc3RhbnQuCglMZXQgbWlwc19zeW1ib2xpY19jb25zdGFudF9wIGNoZWNrIGZvciBpbnZhbGlkIG9mZnNldHMuCgkobW92ZV9vcGVyYW5kKTogQ2hlY2sgZm9yIGdlbmVyYWxfb3BlcmFuZHMgZmlyc3QuICBPbmx5IGFjY2VwdCBzeW1ib2xpYwoJY29uc3RhbnRzIGlmIHRoZXkgc2F0aXNmeSBtaXBzX3N5bWJvbGljX2NvbnN0YW50X3AgYW5kIGNhbm5vdCBiZSBzcGxpdC4KCShzeW1ib2xpY19jb25zdGFudCk6IFVzZSBtaXBzX3N5bWJvbGljX2NvbnN0YW50X3AuCgkoZ2xvYmFsX2dvdF9vcGVyYW5kLCBsb2NhbF9nb3Rfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGVzLgoJKHN0YWNrX29wZXJhbmQpOiBVcGRhdGUgY2FsbCB0byBtaXBzX2NsYXNzaWZ5X2FkZHJlc3MuCgkobWlwc19sZWdpdGltYXRlX2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKG1pcHNfcmVsb2MsIG1pcHNfbHVpX3JlbG9jKTogRGVsZXRlLgoJKG1pcHNfZm9yY2VfdGVtcG9yYXJ5KTogT25seSB1c2UgdGhlIGdpdmVuIHRlbXBvcmFyeSBpZiBub19uZXdfcHNldWRvcy4KCVVzZSBlbWl0X21vdmVfaW5zbi4KCShtaXBzX3NwbGl0X3N5bWJvbCwgbWlwc191bnNwZWNfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbnMuCgkobWlwc191bnNwZWNfb2Zmc2V0X2hpZ2gpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19sb2FkX2dvdCk6IFJlcGxhY2UgcmVsb2MgYXJndW1lbnQgd2l0aCBhIHN5bWJvbF90eXBlLgoJVXNlIG1pcHNfdW5zcGVjX2FkZHJlc3MgdG8gY3JlYXRlIHRoZSBhZGRyZXNzIGFuZCBwdXQgaXQgaW4gYQoJTE9fU1VNIHdpdGggdGhlIGJhc2UgcmVnaXN0ZXIuCgkobWlwc19sb2FkX2dvdDE2LCBtaXBzX2xvYWRfZ290MzIpOiBEZWxldGUuCgkobWlwc19lbWl0X2hpZ2gsIG1pcHNfbGVnaXRpbWl6ZV9zeW1ib2wpOiBEZWxldGUuCgkobWlwc19nb3RvZmZfZ2xvYmFsKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfbG9hZF9nb3RfcGFnZSwgbWlwc19sb2FkX2dvdF9nbG9iYWwpOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHNfbGVnaXRpbWl6ZV9zeW1ib2wpOiBJbmxpbmUgaGFuZGxpbmcgb2YgTE9fU1VNIHNwbGl0cy4KCShtaXBzX2xlZ2l0aW1pemVfY29uc3RfbW92ZSk6IExpa2V3aXNlLiAgUmVtb3ZlIEhJR0ggaGFuZGxpbmcuCglJbmxpbmUgY29kZSB0byBoYW5kbGUgY29uc3RhbnRzIHBsdXMgaW52YWxpZCBvZmZzZXRzLiAgVXNlCgltaXBzX3NwbGl0X3N5bWJvbCB0byBsZWdpdGltaXplIGNvbnN0YW50IHBvb2wgYWRkcmVzc2VzLgoJKG1pcHNfZGVsZWdpdGltaXplX2FkZHJlc3MpOiBEZWxldGUuCgkobWlwc19ydHhfY29zdHMpOiBHaXZlIGxlZ2l0aW1hdGUgc3ltYm9saWMgY29uc3RhbnRzIGFuZCBDT05TVF9ET1VCTEVzCglhIGNvc3Qgb2YgMSBpbnNuLiAgR2l2ZSB0aGUgcmVzdCBhIGNvc3Qgb2YgQ09OU1RBTlRfUE9PTF9BRERSRVNTLgoJKG1pcHNfc3Vid29yZCk6IFBhc3MgbWVtcmVmcyB0aHJvdWdoIG1pcHNfcmV3cml0ZV9zbWFsbF9kYXRhLgoJKG1pcHNfb3V0cHV0X21vdmUpOiBSZW1vdmUgdXNlIG9mIG1pcHNfY2xhc3NpZnlfY29uc3RhbnQuCgkobWlwc19leHBhbmRfY2FsbCk6IFVzZSBtaXBzX3Vuc3BlY19vZmZzZXRfaGlnaCB0byBjYWxjdWxhdGUgdGhlCgloaWdoIHBhcnQgb2YgdGhlIEdPVCBhZGRyZXNzIGZvciBjYWxscyB0byBnbG9iYWwgZnVuY3Rpb25zLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIG1pcHNfc3BsaXRfcFtdLCBtaXBzX2xvX3JlbG9jc1tdCglhbmQgbWlwc19oaV9yZWxvY3NbXS4KCShwcmludF9vcGVyYW5kKTogVXNlIHByaW50X29wZXJhbmRfcmVsb2MgdG8gaGFuZGxlICclaCcgYW5kICclUicuCglSZW1vdmUgdXNlIG9mIG1pcHNfY2xhc3NpZnlfY29uc3RhbnQuCgkobWlwc19yZWxvY19zdHJpbmcpOiBEZWxldGUuCgkocHJpbnRfb3BlcmFuZF9yZWxvYyk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBVcGRhdGUgY2FsbCB0byBtaXBzX2NsYXNzaWZ5X2FkZHJlc3MuCgkobWlwc19yZXdyaXRlX3NtYWxsX2RhdGFfcCwgc21hbGxfZGF0YV9wYXR0ZXJuXzEpOiBOZXcgZnVuY3Rpb25zLgoJKHNtYWxsX2RhdGFfcGF0dGVybik6IE5ldyBwcmVkaWNhdGUuCgkobWlwc19yZXdyaXRlX3NtYWxsX2RhdGFfMSwgbWlwc19yZXdyaXRlX3NtYWxsX2RhdGEpOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHNfZnVuY3Rpb25faGFzX2dwX2luc24pOiBOZXcgZnVuY3Rpb24uCgkobWlwc19nbG9iYWxfcG9pbnRlcik6IFVzZSBpdC4KCShtaXBzX2dwX2luc24pOiBEZWxldGUuCgkobWlwc19leHBhbmRfcHJvbG9ndWUpOiBXaGVuIGNvbXBpbGluZyBmb3IgbjMyL242NCBhYmljYWxscywgdXNlIGEKCXNpbmdsZSBsb2FkZ3AgcGF0dGVybiB0byBpbml0aWFsaXplICRncC4gIFBhc3MgaXQgdGhlIG9mZnNldCBvZiBfZ3AKCWZyb20gdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgoJKG1pcHMxNl9ncF9wc2V1ZG9fcmVnKTogUmV2ZXJ0IGxhc3QgcGF0Y2guCgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChSRUxPQ18qKTogRGVsZXRlLgoJKFVOU1BFQ19MT0FER1AsIFVOU1BFQ19GSVJTVF9BRERSRVNTKTogTmV3IGNvbnN0YW50cy4KCShnb3QpOiBOZXcgaW5zbiBhdHRyaWJ1dGUuCgkodHlwZSk6IFNldCB0byAibG9hZCIgaWYgZ290ID09IGxvYWQuCgkobGVuZ3RoKTogU2V0IHRvIDQgaWYgZ290ID09IGxvYWQsIDggaWYgZ290ID09IHhnb3RfaGlnaC4KCShsdWlbc2RdaSk6IERlbGV0ZS4KCSgqeGdvdF9oaVtzZF1pLCAqeGdvdF9sb1tzZF1pKTogTmV3IHBhdHRlcm5zLgoJKCpnb3RfZGlzcFtzZF1pLCAqZ290X3BhZ2Vbc2RdaSk6IExpa2V3aXNlLgoJKCpsb3dbc2RdaSk6IENoYW5nZSBjb25zdHJhaW50cyB0byAiZCIuICBBZGQgYSBuZXcgZGVmaW5lX3NwbGl0IHRvCglyZXdyaXRlIHNtYWxsIGRhdGEgY29uc3RhbnRzIGludG8gTE9fU1VNcy4KCShsb2FkZ3ApOiBOZXcgaW5zbnMuCgoyMDAzLTExLTA0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9taXBzL190aWxpYi5jOiBVc2UgX0FCSSogaW4gX01JUFNfU0lNIHRlc3RzLgoKMjAwMy0xMS0wNCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvdjg1MC92ODUwLm1kIChtdWxoaXNpMyk6IEV4cGFuZCB0aGUgY29uc3RfaW50IGNhc2UKCXNlcGFyYXRlbHkgdG8gYXZvaWQgdHJ5aW5nIHRvIHNpZ24gZXh0ZW5kIHRoZSBjb25zdC4KCjIwMDMtMTEtMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGNvcHlfcnR4X2lmX3NoYXJlZCk6IERvbid0IGFsbG93IE1FTXMgd2l0aCBjb25zdGFudAoJYWRkcmVzc2VzIHRvIGJlIHNoYXJlZC4KCShmb3JjZV9jb25zdF9tZW0pOiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBwb29sIGVudHJ5LgoKMjAwMy0xMS0wMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKEdDQ19DRkxBR1MpOiBSZW1vdmUgQFdFUlJPUkAgYWdhaW4uCgoyMDAzLTExLTAzICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGNwcC5kdmkpOiBOZXcgdGFyZ2V0IHNwbGl0IGZyb20gY3BwLmluZm8uCgkoZ2NjLmR2aSk6ICBOZXcgdGFyZ2V0IHNwbGl0IGZyb20gZ2NjLmluZm8uCgkoZ2NjaW50LmR2aSk6IE5ldyB0YXJnZXQgc3BsaXQgZnJvbSBnY2NpbnQuaW5mby4KCShjcHBpbnRlcm5hbHMuZHZpKTogTmV3IHRhcmdldCBzcGxpdCBmcm9tIGNwcGludGVybmFscy5pbmZvCgkoZ2NjaW5zdGFsbC5pbmZvKTogTmV3IHNwZWNpZmljIHJ1bGUuCgkoZ2NjaW5zdGFsbC5kdmkpOiBMaWtld2lzZS4KCShkdmkpOiBNb3ZlIHRhcmdldHMgdG8gJChkb2NvYmpkaXIpLgoJKCQoZG9jb2JqZGlyKS8lLmR2aSk6IE5ldyBpbXBsaWNpdCBydWxlLgoKMjAwMy0xMS0wMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRvYy9ndHkudGV4aSAodGFnLCBkZXNjKTogU2F5IG1vcmUgYWJvdXQgcm9sZSBvZiBkZXNjIHZhbHVlcyBpbgoJc2VsZWN0aW5nIGJldHdlZW4gdGFncy4KCjIwMDMtMTEtMDMgIEFsZXhhbmRlciBLYWJhZXYgIDxhazAzQGd0ZS5jb20+CgoJKiByZWFsLmMgKGVuY29kZV9pZWVlX3NpbmdsZSk6IEVuc3VyZSBwcm9wZXIgcHJvbW90aW9uLgoKMjAwMy0xMS0wMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGRvYy9jb250cmliLnRleGk6IEFkZCBHaW92YW5uaSBCYWpvLCBEYXJhIEhhemVnaGksIEZhbGsgSHVlZmZuZXIsCglhbmQgQW5kcmV3IFBpbnNraS4KCjIwMDMtMTEtMDMgIFN5ZCBQb2xrICA8c3BvbGtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBBZGQgRzMsIEc0LCBhbmQgRzUKCW1hcmtldGluZyBuYW1lcyB0byB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgcHJvY2Vzc29ycy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogRGl0dG8uCgkqIGRvYy9pbnZva2UudGV4aTogRGl0dG8uCgkqIGNvbmZpZy5nY2M6IERpdHRvLgoKMjAwMy0xMS0wMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdGRpb192YV9saXN0KTogQWxsb3cgdGFiIGJlZm9yZSB2YV9saXN0LgoJTWVyZ2UgdHdvIHN1YnN0aXR1dGlvbnMuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCglGaXhlcyBQUiBib290c3RyYXAvMTI2NjYuCgoyMDAzLTExLTAzICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9pbnN0YWxsLW9sZC50ZXhpOiBSZW1vdmUgVk1TIGRvY3VtZW50YXRpb24uCgoyMDAzLTExLTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiAgUmVtb3ZlIGhhY2sgZW5hYmxpbmcgMTI4Yml0IGxvbmcgZG91YmxlCgljb21taXRlZCBieSBhY2NpZGVudC4KCjIwMDMtMTEtMDIgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogYy1vcHRzLmMgKG5lZWRWYWx1ZSk6ICBEbyBjcHBfZmluZF9tYWluX2ZpbGUgYmVmb3JlIHByb2Nlc3NpbmcKCWFueSBpbWFjcm9zIGZsYWdzLCBzbyBwZmlsZS0+bWFpbl9maWxlIGlzIHNldCBmb3IgdGhlIGxhdHRlci4KCjIwMDMtMTEtMDMgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCSAgICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKEdDQ19DRkxBR1MpOiBBbGxvdyBibGFja2xpc3Rpbmcgb2Ygd2FybmluZ3MuCgkoU1lTQ0FMTFMuYy5YLXdhcm4pOiBTdXBwcmVzcyB3YXJuaW5ncy4KCjIwMDMtMTEtMDIgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgb3B0aW1pemF0aW9uLzEyODQ1CgkqIHBhLmMgKG91dHB1dF9jYnJhbmNoKTogVXNlIGNtcGIgZm9yIERJbW9kZSBjb21wYXJpc29ucyB3aXRoIDAuCgoyMDAzLTExLTAyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IENhbGwgUFJJTlRfUkVHIHdpdGggc2Vjb25kIGFyZ3VtZW50IC0xLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByaW50X3JlZyk6IEFib3J0IG9uIGEgdmlydHVhbCByZWdpc3RlcgoJaWYgY29kZSAhPSAtMTsgbm90IGlmIGZpbGUgPT0gYXNtX291dF9maWxlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFBSSU5UX1JFRyk6IERvY3VtZW50IG1lYW5pbmcgb2YgQ09ERSA9PSAtMS4KCShERUJVR19QUklOVF9SRUcpOiBEZWxldGUsIHVudXNlZC4KCjIwMDMtMTEtMDIgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvaWE2NC9mZGUtZ2xpYmMuYyAoX0dOVV9TT1VSQ0UpOiBEZWZpbmUgdG8gMSBpbnN0ZWFkIG9mCgllbXB0eSB0byBhdm9pZCBjb25mbGljdCB3aXRoIHRoZSBkZWZpbml0aW9uIGZyb20gY29uZmlndXJlLgoKMjAwMy0xMS0wMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEwODE3CgkqIGlmY3Z0LmMgKG5vY2VfZW1pdF9tb3ZlX2luc24pOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gY29tbWVudC4KCShub2NlX3RyeV9tb3ZlKTogTmV3IGZ1bmN0aW9uIHRvIG9wdGltaXplIGFuIGlmLXRoZS1lbHNlIGludG8gYW4KCXVuY29uZGl0aW9uYWwgbW92ZSwgaS5lLiAiaWYgKGEhPWIpIHg9YTsgZWxzZSB4PWIiIGludG8gIng9YSIuCgkobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogQXR0ZW1wdCBzaW1wbGlmaWNhdGlvbiB3aXRoIG5vY2VfdHJ5X21vdmUuCgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBTb21lIG1pbm9yIGZpeGVzCglhbmQgaW1wcm92ZW1lbnRzIHRvIHRoZSBvcHRpbWl6YXRpb25zIG9mIElGX1RIRU5fRUxTRSBleHByZXNzaW9ucy4KCShzaW1wbGlmeV9zdWJyZWcpOiBTaWxlbmNlIHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmcuCgoyMDAzLTExLTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAodGFyZ2hvb2tzLm8sIHJlbG9hZC5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCShHVEZJTEVTKTogQWRkIHRhcmdob29rcy5jLgoJKGd0LXRhcmdob29rcy5oKTogTmV3IHJ1bGU7IGRlcGVuZCBvbiBzLWd0eXBlLgoJKiB0YXJnZXQuaCAoZGlyZWN0X3Bvb2xfbG9hZF9wKTogTmV3IGhvb2suCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0RJUkVDVF9QT09MX0xPQURfUCk6IE5ldyBtYWNyby4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBJbmNsdWRlIGl0LgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9kaXJlY3RfcG9vbF9sb2FkX3ApOiBEZWNsYXJlLgoJKGhvb2tfYm9vbF9tYWNoaW5lX21vZGVfdHJ1ZSk6IERlY2xhcmUuCgkqIHRhcmdob29rcy5jOiBJbmNsdWRlIGluc24tY29uZmlnLmgsIHJlY29nLmgsIGdnYy5oIGFuZAoJZ3QtdGFyZ2hvb2tzLmguCgkocG9vbF9zeW1ib2wpOiBOZXcgdmFyaWFibGUuCgkoZGVmYXVsdF9kaXJlY3RfcG9vbF9sb2FkX3ApOiBOZXcgZnVuY3Rpb24uCgkoaG9va19ib29sX21hY2hpbmVfbW9kZV90cnVlKTogTmV3IGZ1bmN0aW9uLgoJKiByZWxvYWQuYzogSW5jbHVkZSB0YXJnZXQuaC4KCShmaW5kX3JlbG9hZHMpOiBJZiBhbiBhbHRlcm5hdGl2ZSB3aWxsIGZvcmNlIGEgY29uc3RhbnQgaW50byBtZW1vcnksCgljb3VudCBhbiBleHRyYSByZWxvYWQgaWYgY29uc3RhbnQgcG9vbCBzeW1ib2xzIGFyZSBub3QgdmFsaWQKCWFkZHJlc3Nlcy4gIElmIGFuIGFsdGVybmF0aXZlIHVzZXMgbWVtb3J5IHRvIG1vdmUgdmFsdWVzIGJldHdlZW4KCXJlZ2lzdGVycywgY291bnQgdGhlIG1vdmUgYXMgdHdvIHJlbG9hZHMgcmF0aGVyIHRoYW4gb25lLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKFRBUkdFVF9ESVJFQ1RfUE9PTF9MT0FEX1ApOiBEZWZpbmUuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfRElSRUNUX1BPT0xfTE9BRF9QKTogRG9jdW1lbnQuCgoyMDAzLTExLTAyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMjc5OQoJKiBwb3N0cmVsb2FkLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBHZW5lcmF0ZSB0aGUgYWRkMgoJcGF0dGVybnMgbWFudWFsbHkuCgoyMDAzLTExLTAyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKSBbVEFSR0VUX0FSQ0g2NF06CglSZXR1cm4gMCBmb3IgYWxsIGNvbXBsZXggbW9kZXMgd2hvc2Ugc2l6ZSBpcyBsZXNzZXIgb3IgZXF1YWwgdG8KCWEgd29yZC4gIEFkZCBhID8/PyBjb21tZW50IGZvciB0aGUgY29uZGl0aW9uIHVzZWQgd2l0aCAxNi1ieXRlCglhbGlnbmVkIG1vZGVzLgoKMjAwMy0xMS0wMSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIC5jdnNpZ25vcmU6IFJlbW92ZSBjLXBhcnNlKiBhbmQgdHJhZGNpZi5jLgoJKiBvYmpjLy5jdnNpZ25vcmU6IERlbGV0ZS4KCjIwMDMtMTEtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdW53aW5kLXNqbGouYyAoX1Vud2luZF9HZXRDRkEpOiBSZXR1cm4gKF9VbndpbmRfV29yZCkwIGluc3RlYWQKCW9mIE5VTEwuCgoyMDAzLTExLTAxICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogc29tLmggKERPX0dMT0JBTF9EVE9SU19CT0RZKTogQ2hhbmdlIHRvIEM5MCBkZWNsYXJhdGlvbi4KCgkqIGxpYmdjYzIuYyAoU1lNQk9MX19NQUlOKTogUHJvdmlkZSBDOTAgZGVjbGFyYXRpb24uCgoJKiBjb2xsZWN0Mi5jIChzY2FuX2xpYnJhcmllcyk6IEZpeCB0eXBvcy4KCglQUiBwcmVwcm9jZXNzb3IvMTI4NDcKCSogY3BwZmlsZXMuYywgY3BwZXhwLmMsIGNwcGVycm9yLmMsIGNwcGxpYi5oLCBjcHBsaWIuYywgY3BwbGV4LmMsCgljcHBpbml0LmMsIGNwcHRyYWQuYywgY3BwbWFjcm8uYywgZml4LWhlYWRlci5jLCBjcHBwY2guYywgYy1wY2guYywKCWMtaW5jcGF0aC5jLCBjcHBjaGFyc2V0LmMgKERMX1dBUk5JTkcsIERMX1dBUk5JTkdfU1lTSERSLCBETF9QRURXQVJOLAoJRExfRVJST1IsIERMX0lDRSwgRExfRVhUUkFDVCwgRExfV0FSTklOR19QKTogUHJlZml4IG1hY3JvIG5hbWVzIHdpdGgKCSJDUFBfIi4KCjIwMDMtMTEtMDEgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9taXhlZF9mdW5jdGlvbl9hcmcpOiBDb3JyZWN0Cglub191bml0cyBjYWxjdWxhdGlvbi4KCjIwMDMtMTEtMDEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHVud2luZC1kdzIuYyAoX1Vud2luZF9GcmFtZVN0YXRlKTogUmVtb3ZlIGNvbW1hcyBhdCBlbmQgb2YKCWVudW1lcmF0aW9uIGxpc3QuCgoyMDAzLTExLTAxICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY29uZmlnL2lhNjQvc3lzdjQuaCAoU0RBVEFfU0VDVElPTl9GVU5DVElPTik6IFVwZGF0ZSB0byBDOTAKCXByb3RvdHlwZXMuCgkoU0JTU19TRUNUSU9OX0ZVTkNUSU9OKTogTGlrZXdpc2UuCgoyMDAzLTExLTAxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoR0NDX0NGTEFHUyk6IEFkZCBAV0VSUk9SQCBmb3IgdGFyZ2V0IGZpbGVzLgoKMjAwMy0xMS0wMSAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IFVwZGF0ZSB0byBDOTAKCXByb3RvdHlwZXMuCgoyMDAzLTExLTAxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB1bndpbmQtZHcyLmMgKF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uKTogQ29uc3RpZnkgdmFyaWFibGUuCgkodXdfZnJhbWVfc3RhdGVfZm9yKTogQ29uc3RpZnkgdmFyaWFibGVzLgoJKGV4dHJhY3RfY2llX2luZm8pOiBDb25zdGlmeSBmaXJzdCBhcmd1bWVudC4KCgkqIHVud2luZC1kdzItZmRlLWRhcndpbi5jOiBBZGp1c3QgcHJvdG90eXBlIG9mCglfVW53aW5kX0ZpbmRfcmVnaXN0ZXJlZF9GREUgZm9yIHJlY2VudCBjaGFuZ2VzLgoJKGV4YW1pbmVfb2JqZWN0cyk6IENvbnN0aWZ5IHJldHVybiB2YWx1ZSBhbmQgbG9jYWwgdmFyaWFibGUgcmVzdWx0LgoJKF9VbndpbmRfRmluZF9GREUpOiBDb25zdGlmeSByZXR1cm4gdmFsdWUgYW5kIGxvY2FsIHZhcmlhYmxlIHJldC4KCjIwMDMtMTAtMzEgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogYy1vcHRzLmMgKGZpbmlzaF9vcHRpb25zKTogIENoYW5nZSB0byByZXR1cm5zIGJvb2xlYW4gLSBmYWxzZSBpZmYKCXRoZSBjYWxsIHRvIGNwcF9maW5kX21haW5fZmlsZSBmYWlscy4KCShjX2NvbW1vbl9pbml0KTogIFNraXAgcHJlcHJvY2Vzc19maWxlIGlmIGZpbmlzaF9vcHRpb25zIGZhaWxlZC4KCShjX2NvbW1vbl9wYXJzZV9maWxlKTogIEJyZWFrIGlmIGZpbmlzaF9vcHRpb25zIGZhaWxlZC4KCUZpeGVzIFBSIHByZXByb2Nlc3Nvci8xMjU0NS4KCjIwMDMtMTAtMzEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBhY2xvY2FsLm00OiBCbGFja2xpc3QgdWx0cml4KiBmb3IgbW1hcCBmaWxlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBBZGQgQVRUUklCVVRFX1VOVVNFRCB0byB2YXJpYWJsZQoJcmVnX3Bhcm1fc3RhY2tfc3BhY2UuCgkqIHRvcGxldi5jIChkZWZhdWx0X2dldF9wY2hfdmFsaWRpdHkpOiBGaXggd2FybmluZy4KCgkqIHZheC5jOiBJbmNsdWRlIHRvcGxldi5oLgoJKHZheF9pbml0X2xpYmZ1bmNzKTogRml4IHR5cG8gKHVtb2QpLgoJKiB2YXguaCAoQVNNX0NPTU1FTlRfU1RBUlQpOiBEZWZpbmUuCgkoUFJJTlRfT1BFUkFORCk6IEZpeCB3YXJuaW5nIHdoZW4gSE9TVF9XSURFX0lOVCBpcyBhIGxvbmcgbG9uZy4KCjIwMDMtMTAtMzEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTE5NjgKCSogZXhwci5jIChleHBhbmRfZXhwciA8TVVMVF9FWFBSPik6IFJlbW92ZSBpbmFwcHJvcHJpYXRlIGFuZAoJY29uZnVzaW5nIGNvbW1lbnQ7IGRpc3RyaWJ1dGl2aXR5IGlzbid0IGhhbmRsZWQgaW4gZXhwYW5kX2V4cHIuCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXZfMSA8UExVU19FWFBSPik6ICBBbGxvdyBvdmVyZmxvdwoJaW4gZGlzdHJpYnV0aXZpdHksIGlmIHdyYXAtYXJvdW5kIHNlbWFudGljcyBhcmUgc3BlY2lmaWVkIHdpdGgKCS1md3JhcHYuCgoyMDAzLTExLTAxICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIDEyMzE1CgkqIGZpbmFsLmMgKHByb2ZpbGVfZnVuY3Rpb24pOiBBbGxvdyBmb3IgTlVMTCBzdnJ0eC4KCjIwMDMtMTAtMzEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChwYV9zZWxlY3Rfc2VjdGlvbik6IFVzZSBuZXcgc3R5bGUgZGVjbGFyYXRpb24uCgkqIHNvbS5oIChyZWFkb25seV9kYXRhKTogTGlrZXdpc2UuCgoyMDAzLTEwLTMxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogVXBkYXRlIHRvIEM5MCBwcm90b3R5cGVzLgoKMjAwMy0xMC0zMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgdGFyZ2V0Lzc1MTMKCSogYXJtLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogRGlzYWJsZSB1c2Ugb2YgTFIgaW4gVGh1bWIKCWNvZGUuCgoyMDAzLTEwLTMxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+LAoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoKCSogY3J0c3R1ZmYuYyAoX19yZWdpc3Rlcl9mcmFtZV9pbmZvLCBfX3JlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMpCgkoX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm8sIF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzKToKCUNvbnN0aWZ5IHZvaWQgKiBhcmd1bWVudC4KCSogdW53aW5kLWR3Mi1mZGUuaCAoc3RydWN0IGZkZV92ZWN0b3IpOgoJQ29uc3RpZnkgJ29yaWdfZGF0YScgYW5kICdhcnJheScgZmllbGRzLgoJKF9fcmVnaXN0ZXJfZnJhbWVfaW5mbywgX19yZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzKQoJKF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvLCBfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mb19iYXNlcyk6CglDb25zdGlmeSB2b2lkICogYXJndW1lbnQuCgkoZ2V0X2NpZSwgbmV4dF9mZGUsIF9VbndpbmRfRmluZF9GREUpOiBDb25zdGlmeSBhcmd1bWVudHMsCglyZXR1cm4gdmFsdWVzLCBhbmQgY2FzdHMgb2YgdHlwZSBmZGUgKiwgc3RydWN0IGR3YXJmX2ZkZSAqLAoJYW5kIHN0cnVjdCBkd2FyZl9jaWUgKi4KCSogdW53aW5kLWR3Mi1mZGUuYyAoX19yZWdpc3Rlcl9mcmFtZV9pbmZvLCBfX3JlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMpCgkoX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm8sIF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzKToKCUNvbnN0aWZ5IHZvaWQgKiBhcmd1bWVudC4KCShnZXRfY2llX2VuY29kaW5nLCApOiBDb25zdGlmeSBzdHJ1Y3QgZHdhcmZfY2llICogYXJndW1lbnQuCgkoZ2V0X2ZkZV9lbmNvZGluZywgZmRlX3VuZW5jb2RlZF9jb21wYXJlLCBmZGVfc2luZ2xlX2VuY29kaW5nX2NvbXBhcmUpCgkoZmRlX21peGVkX2VuY29kaW5nX2NvbXBhcmUsIGZkZV9jb21wYXJlX3QsIHN0YXJ0X2ZkZV9zb3J0LCBmZGVfaW5zZXJ0KQoJZmRlX3NwbGl0LCBTV0FQLCBmcmFtZV9kb3duaGVhcCwgZnJhbWVfaGVhcHNvcnQpCgkoY2xhc3NpZnlfb2JqZWN0X292ZXJfZmRlcywgYWRkX2ZkZXMsIGxpbmVhcl9zZWFyY2hfZmRlcywKCWJpbmFyeV9zZWFyY2hfdW5lbmNvZGVkX2ZkZXMsIGJpbmFyeV9zZWFyY2hfc2luZ2xlX2VuY29kaW5nX2ZkZXMsCgliaW5hcnlfc2VhcmNoX21peGVkX2VuY29kaW5nX2ZkZXMsIHNlYXJjaF9vYmplY3QsIF9VbndpbmRfRmluZF9GREUpOgoJQ29uc3RpZnkgYXJndW1lbnRzLCBsb2NhbCB2YXJpYWJsZXMsIHJldHVybiB2YWx1ZXMsIGFuZCBjYXN0cwoJb2YgdHlwZSBmZGUgKiwgZmRlICoqLCBzdHJ1Y3QgZHdhcmZfZmRlICosIGFuZCBzdHJ1Y3QgZHdhcmZfY2llICouCglVc2UgY29uc3QgcG9pbnRlciB0eXBlcyBpbiBzaXplb2YgZXhwcmVzc2lvbnMsIGZvciBjbGFyaXR5LgoJKiB1bndpbmQtZHcyLWZkZS1nbGliYy5jCgkoX1Vud2luZF9maW5kX3JlZ2lzdGVyZWRfRkRFLCBfVW53aW5kX2ZpbmRfRkRFKTogQ29uc3RpZnkgcmV0dXJuIHZhbHVlLgoJKHN0cnVjdCB1bndfZWhfY2FsbGJhY2tfZGF0YSk6IENvbnN0aWZ5ICdyZXQnIGZpZWxkLgoKMjAwMy0xMC0zMSAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoJICAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9taXhlZF9mdW5jdGlvbl9hcmcpOiBOZXcuCgkoZnVuY3Rpb25fYXJnKTogQ2FsbCBpdC4KCShyczYwMDBfZnVuY3Rpb25fdmFsdWUpOiBXaWRlbiBpbnRlZ3JhbCByZXR1cm4gdmFsdWUgdG8gbW9kZSBiYXNlZAoJb24gVEFSR0VUXzMyQklULCBub3Qgd29yZF9tb2RlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChQUk9NT1RFX01PREUpOiBMaWtld2lzZS4KCShVTklUU19QRVJfQVJHKTogTmV3LgoJKFJTNjAwMF9BUkdfU0laRSk6IFVzZSBpdC4KCjIwMDMtMTAtMzEgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgoKCSogLmN2c2lnbm9yZTogTm8gbG9uZ2VyIGlnbm9yZSBnZW5ndHlwZS1sZXguYywgZ2VuZ3R5cGUteWFjYy5jLAoJYW5kIGdlbmd0eXBlLXlhY2MuaC4KCjIwMDMtMTAtMzEgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIG9wdGltaXphdGlvbi84ODk2CgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NvbWJpbmUpOiBDaGVjayB0aGF0IFJFR1kgZG9lc24ndCBkaWUgaW4gYW4KCWluc24gb2YgdGhlIGZvcm0gKHNldCAocmVneCkgKHBsdXMgKHJlZ3gpIChyZWd5KSkpLCBpZSBSRUdYICE9IFJFR1kuCgoyMDAzLTEwLTMxICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJUFIvMTAyMzkKCSogY2ZncnRsLmMgKGRlbGV0ZV9pbnNuKTogRGVjcmVhc2UgTEFCRUxfTlVTRVMgZm9yIGFsbCBSRUdfTEFCRUwgbm90ZXMuCgoyMDAzLTEwLTMxICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJUFIvMTE2NDAKCSogY2ZncnRsLmMgKHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6IE1vdmUganVtcAoJaW1tZWRpYXRlbGx5IGJlZm9yZSBCQVJSSUVSLgoKMjAwMy0xMC0zMSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChTVFJJQ1QyX1dBUk4pOiBBZGQgLVdvbGQtc3R5bGUtZGVmaW5pdGlvbi4KCjIwMDMtMTAtMzEgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIHRhcmdldC8xMTI3MQoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3MpOiBIYW5kbGUgYW55IHJlZ2lzdGVyIGluCgkoUExVUyAoUExVUyAoUkVHKSAoUkVHKSkgKENPTlNUX0lOVCkuCgoyMDAzLTEwLTMxICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGdnYy1wYWdlLmMgKGdnY19wY2hfcmVhZCk6IFdyYXAgY2FsbCB0byBwb2lzb25fcGFnZXMgaW4KCUVOQUJMRV9HQ19DSEVDS0lORyBub3QgaW4gR0dDX1BPSVNPTi4KCjIwMDMtMTAtMzEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIGJvb3RzdHJhcC85ODYzCgkqIGNvbmZpZ3VyZS5pbjogQmFpbCBvdXQgaWYgYXdrIGlzIG1pc3NpbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCglQUiBhZGEvMTI3NjEKCSogTWFrZWZpbGUuaW46IE1vdmUgZGVmYXVsdCBkZWZpbml0aW9ucyBvZiBYX0FEQV9DRkxBR1MsCglUX0FEQV9DRkxBR1MsIFhfQURBRkxBR1MsIFRfQURBRkxBR1MgZnJvbSBhZGEvTWFrZS1sYW5nLmluIHRvIGhlcmUuCgoyMDAzLTEwLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1vYmpjLWNvbW1vbi5jIChjX3RyZWVfcHJpbnRlcik6IEhhbmRsZSB0eXBlcyBjb3JyZWN0bHkuCglGYWN0b3IgY29kZSBhIGJpdC4KCjIwMDMtMTAtMzAgS2VsbGV5IENvb2sgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogdmFsdWUtcHJvZi5jLCB3ZWIuYzogVXBkYXRlIHRvIEM5MC4KCjIwMDMtMTAtMzAgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAocHVyZ2VfYWRkcmVzc29mXzEpOiBBZGQgY2FzZSBmb3IgUkVHX1JFVFZBTAoJbm90ZXMgd2hlbiBtb2RlcyBhcmUgdW5lcXVhbC4KCjIwMDMtMTAtMzEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYtbW9kZXMuZGVmOiBBZGQgWEZtb2RlIGZvcm1hdCBhZGp1c3RtZW50LgoKMjAwMy0xMC0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVhbC5jIChlbmNvZGVfaWVlZV9leHRlbmRlZCk6IEJhY2sgb3V0IHByZXZpb3VzIHBhdGNoLgoKMjAwMy0xMC0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVhbC5jIChlbmNvZGVfaWVlZV9leHRlbmRlZCk6IEluaXRpYWxpemUgd2hvbGUgYXJyYXkuCgkqIHJlZy1zdGFjay5jIChtb3ZlX2Zvcl9zdGFja19yZWcwOiBVc2UgYWx3YXlzIFhGbW9kZS4KCSogaTM4Ni1tb2Rlcy5kZWY6IENoYW5nZSBkZWZpbml0aW9ucyBvZiBURm1vZGUgYW5kIFhGbW9kZS4KCSogaTM4Ni5jIChjbGFzc2lmeV9hcmd1bWVudCk6IFJlbmFtZSBURm1vZGVzIHRvIFhGbW9kZXM7IGFkZCBuZXcgVEZtb2RlCgljb2RlLgoJKGNvbnN0cnVjdF9jb250YWluZXIpOiBBbGxvdyBjb25zdHJ1Y3Rpbmcgb2YgVEZtb2RlIGludGVnZXIgY29udGFpbmVycy4KCShpeDg2X3JldHVybl9pbl9tZW1vcnkpOiAgWEZtb2RlIGlzIG5vdCByZXR1cm5lZCBpbiBtZW1vcnkuCgkoaW5pdF9leHRfODAzODdfY29uc3RhbnRzKTogQWx3YXlzIHVzZSBYRm1vZGUuCgkocHJpbnRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGl4ODZfcHJlcGFyZV9mcF9jb21wYXJlX3JlZ3MpOiBMaWtld2lzZS4KCShzcGxpdF90b19wYXJ0cyk6IERlYWwgd2l0aCBURm1vZGUuCgkoc3BsaXRfbG9uZ19tb3ZlKTogU2ltcGxpZnkuCgkoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBBZGQgX19mbG9hdDgwLCBfX2Zsb2F0MTI4LgoJKGl4ODZfbWVtb3J5X21vdmVfY29zdCk6IERvIG5vdCBjb25mdXNlIFRGbW9kZS4KCSogaTM4Ni5oIChMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBTZXQgdG8gOTYuCgkoSVNfU1RBQ0tfTU9ERSk6IFRGbW9kZSBpcyBub3Qgc3RhY2sgbW9kZS4KCShIQVJEX1JFR05PX05SRUdTLCBDTEFTU19NQVhfTlJFR1MpOiBEZWFsIG5pY2VseSB3aXRoIFhGbW9kZS4KCShWQUxJRF9TU0VfUkVHX01PREUpOiBBbGxvdyBURm1vZGUuCgkoVkFMSURfRlBfTU9ERV9QKTogRGlzYWxsb3cgVEZtb2RlLgoJKFZBTElEX0lOVF9NT0RFX1ApOiBBbGxvdyBURm1vZGUgaW4gNjRiaXQgbW9kZS4KCSogaTM4Ni5tZCAoVEZtb2RlIHBhdHRlcm5zKTogS2lsbC4KCShtb3Z0ZiwgbW90Zl9yZXg2NCk6IE5ldyBwYXR0ZXJucy4KCjIwMDMtMTAtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGFkZGRpMyk6IEZpeCB0eXBvIGluIG1pcHMxNiBzdGFjayBwb2ludGVyIGNvZGUuCgoyMDAzLTEwLTMwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChtb3ZfbHdsKTogVXNlIG1lbW9yeV9vcGVyYW5kIHdoZXJlIGFwcHJvcHJpYXRlLgoJKG1vdl9sd3IsIG1vdl9zd2wsIG1vdl9zd3IpOiBMaWtld2lzZS4KCShtb3ZfbGRsLCBtb3ZfbGRyLCBtb3Zfc2RsLCBtb3Zfc2RyKTogTGlrZXdpc2UuCgoyMDAzLTEwLTMwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZ2xvYmFsX3BvaW50ZXIpOiBEb24ndCB0cnkgdG8gdXNlICQyNS4KCjIwMDMtMTAtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYnVpbGRfYnVpbHRpbl92YV9saXN0KTogVXNlIHJ1bnRpbWUKCXRlc3QgZm9yIGlyaXg2IHJhdGhlciB0aGFuIHByZXByb2Nlc3NvciB0ZXN0LgoKMjAwMy0xMC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNwcGNoYXJzZXQuYyAob25lX3V0ZjhfdG9fdXRmMTYpOiBJbml0aWFsaXplICdzJyB0byBzaWxlbmNlIHdhcm5pbmcuCgoyMDAzLTEwLTMwICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogVXNlIHNhdmVfcmV0dXJuX2FkZHJfcAoJYXMgYSBnZW5lcmFsIGZsYWcgdGhhdCB0aGUgcmV0dXJuIGFkZHJlc3MgcmVnaXN0ZXIgbmVlZHMgdG8gYmUgc2F2ZWQsCglub3QgbmVjZXNzYXJpbHkgYmVjYXVzZSBvZiBfX2J1aWx0aW5fcmV0dXJuX2FkZHIgKDApLgoJKHMzOTBfc3BsaXRfYnJhbmNoZXMpOiBSZW1vdmUgVEVNUF9SRUcgYW5kIFRFTVBfVVNFRCBhcmd1bWVudHMsCglyZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBvZiB6U2VyaWVzIG1hY2hpbmVzLgoJKHMzOTBfb3B0aW1pemVfcHJvbG9nKTogUmVtb3ZlIFRFTVBfVVNFRCBhcmd1bWVudCwgdHJlYXQgdGhlIHJldHVybgoJcmVnaXN0ZXIgYXMgYSByZWd1bGFyIHJlZ2lzdGVyIG9uIHpTZXJpZXMgbWFjaGluZXMuCgkoczM5MF9yZW9yZyk6IEFkanVzdCBjYWxscyB0byBzMzkwX3NwbGl0X2JyYW5jaGVzIGFuZAoJczM5MF9vcHRpbWl6ZV9wcm9sb2cuCgkoczM5MF9mcmFtZV9pbmZvKTogT24gelNlcmllcyBtYWNoaW5lcywgZG8gbm90IGFzc3VtZSB0aGUgcmV0dXJuCglyZWdpc3RlciBpcyBhbHdheXMgdXNlZC4gIFVwZGF0ZSByZWdzX2V2ZXJfbGl2ZSB3aXRoIGN1cnJlbnQgZGF0YQoJZm9yIHRoZSBzcGVjaWFsIHJlZ2lzdGVycy4KCShzMzkwX2VtaXRfZXBpbG9ndWUpOiBVc2Ugc2F2ZV9yZXR1cm5fYWRkcl9wIHRvIGRldGVybWluZSB3aGV0aGVyCgl0aGUgcmV0dXJuIHJlZ2lzdGVyIHdhcyBzYXZlZC4KCSogY29uZmlnL3MzOTAvczM5MC5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IERvIG5vdCBtYXJrCglSRVRVUk5fUkVHTlVNIGZpeGVkIG9uIHpTZXJpZXMgbWFjaGluZXMuCgkoUkVHX0FMTE9DX09SREVSKTogVXNlIFJFVFVSTl9SRUdOVU0gbGFzdC4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipkb2xvb3Bfc2kiKTogSGFuZGxlIGJyYW5jaCBvdmVyZmxvdwoJdmlhIGFoaS1qZ25lIHBhaXIgb24gelNlcmllcyBtYWNoaW5lcy4KCSgiKmRvbG9vcF9kaSIpOiBMaWtld2lzZS4KCSgiKmRvbG9vcF9kaV9sb25nIik6IFJlbW92ZS4KCjIwMDMtMTAtMzAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogUmV2ZXJ0IGNoYW5nZSBvZiBhcm1fY29uc3RhbnRfbGltaXQKCXdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4KCjIwMDMtMTAtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfc2luZ2xlX2JpdF90ZXN0KTogQ29udmVydCB0aGUgaW5wdXQgdG8gdGhlCglvcGVyYXRpb25hbCBpbnRlcm1lZGlhdGUgdHlwZS4KCjIwMDMtMTAtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChzdGRfYnVpbGRfYnVpbHRpbl92YV9saXN0KTogTmV3LgoJKiBleHByLmggKHN0ZF9idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBEZWNsYXJlLgoJKiBkZWZhdWx0cy5oIChCVUlMRF9WQV9MSVNUX1RZUEUpOiBOZXcuCgkqIHN5c3RlbS5oIChCVUlMRF9WQV9MSVNUX1RZUEUpOiBQb2lzb24uCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0JVSUxEX0JVSUxUSU5fVkFfTElTVCk6IE5ldy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIGJ1aWxkX2J1aWx0aW5fdmFfbGlzdC4KCSogdHJlZS5jIChidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogVXNlIGl0LgoKCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oLCBjb25maWcvYWxwaGEvYWxwaGEuYywKCWNvbmZpZy9hbHBoYS9hbHBoYS5oLCBjb25maWcvYWxwaGEvdW5pY29zbWsuaCwKCWNvbmZpZy9kMzB2L2QzMHYtcHJvdG9zLmgsIGNvbmZpZy9kMzB2L2QzMHYuYywgY29uZmlnL2QzMHYvZDMwdi5oLAoJY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCwgY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaTM4Ni9pMzg2LmgsCgljb25maWcvaTg2MC9pODYwLXByb3Rvcy5oLCBjb25maWcvaTg2MC9pODYwLmMsIGNvbmZpZy9pODYwL2k4NjAuaCwKCWNvbmZpZy9pOTYwL2k5NjAtcHJvdG9zLmgsIGNvbmZpZy9pOTYwL2k5NjAuYywgY29uZmlnL2k5NjAvaTk2MC5oLAoJY29uZmlnL21pcHMvaXJpczYuaCwgY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCwgY29uZmlnL21pcHMvbWlwcy5jLAoJY29uZmlnL21pcHMvbWlwcy5oLCBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCwKCWNvbmZpZy9yczYwMDAvcnM2MDAwLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmgsCgljb25maWcvczM5MC9zMzkwLXByb3Rvcy5oLCBjb25maWcvczM5MC9zMzkwLmMsIGNvbmZpZy9zMzkwL3MzOTAuaCwKCWNvbmZpZy9zaC9zaC1wcm90b3MuaCwgY29uZmlnL3NoL3NoLmMsIGNvbmZpZy9zaC9zaC5oLAoJY29uZmlnL3h0ZW5zYS94dGVuc2EtcHJvdG9zLmgsIGNvbmZpZy94dGVuc2EveHRlbnNhLmMsCgljb25maWcveHRlbnNhL3h0ZW5zYS5oOiBSZW5hbWUgZm9vX2J1aWxkX3ZhX2xpc3QgdG8KCWZvb19idWlsZF9idWlsdGluX3ZhX2xpc3Q7IG1ha2UgaXQgc3RhdGljLiAgRGVmaW5lCglUQVJHRVRfQlVJTERfQlVJTFRJTl9WQV9MSVNULiAgUmVtb3ZlIEJVSUxEX1ZBX0xJU1RfVFlQRS4KCVVwZGF0ZSBwcm90b3MuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2NhcnJ5X2ZsYWdfY29tcGFyZSk6IE1ha2Ugc3RhdGljLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5oIChCVUlMRF9WQV9MSVNUX1RZUEUpOiBSZW1vdmUuCgoyMDAzLTEwLTI5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiByZWNvZy5jIChhc21fb3BlcmFuZF9vayk6IEFkZCBtaXNzaW5nIGJyZWFrIGFmdGVyIGNhc2UgJ1gnLgoJQ2hhbmdlIGlmIHN0YXRlbWVudHMgdG8gZWxzZSBpZiBzdGF0ZW1lbnRzIGluIGRlZmF1bHQgY2FzZS4KCShleHRyYWN0X2NvbnN0cmFpbl9pbnNuX2NhY2hlZCk6IEZpeCBtaXNzcGVsbGluZyBvZiBjb25zdHJhaW5fb3BlcmFuZHMKCWluIGNvbW1lbnQuCgkoY29uc3RyYWluX29wZXJhbmRzX2NhY2hlZCk6IExpa2V3aXNlLgoJKGNvbnN0cmFpbl9vcGVyYW5kcyk6IENoYW5nZSBpZiBzdGF0ZW1lbnRzIHRvIGVsc2UgaWYgc3RhdGVtZW50cyBpbgoJZGVmYXVsdCBjYXNlLgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogTGlrZXdpc2UuCgoyMDAzLTEwLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChub3RpY2VfdXBkYXRlX2NjKTogQ2xlYXIgY2Mgc3RhdHVzIGZvcgoJc2hpZnRzIGFuZCByb3RhdGVzLgoKMjAwMy0xMC0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBSZW1vdmUgZHVwbGljYXRlIHBhdHRlcm4uCgoyMDAzLTEwLTI5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHJlYWwuYyAoZG9fZGl2aWRlKTogSW5pdGlhbGl6ZSByZXN1bHQgd2l0aCBhIDAuCgoJKiBjb25maWd1cmUuaW4gPGVuYWJsZS1jaGVja2luZyBmb3IgdmFsZ3JpbmQ+OiBMb29rIGZvcgoJPHZhbGdyaW5kL21lbWNoZWNrLmg+IGZpcnN0LiAgQUNfREVGSU5FIEhBVkVfVkFMR1JJTkRfTUVNQ0hFQ0tfSAoJaWYgaXQgZXhpc3RzLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogZ2djLWNvbW1vbi5jIFtFTkFCTEVfVkFMR1JJTkRfQ0hFQ0tJTkcgJiYKCUhBVkVfVkFMR1JJTkRfTUVNQ0hFQ0tfSF06IEluY2x1ZGUgPHZhbGdyaW5kL21lbWNoZWNrLmg+LiAgVXNlCgkjZWxpZiBmb3Igb3RoZXIgYWx0ZXJuYXRpdmVzLgoJKiBnZ2MtcGFnZS5jOiBEaXR0by4KCSogZ2djLXpvbmUuYzogRG9uJ3QgYXNzdW1lIDx2YWxncmluZC9tZW1jaGVjay5oPjsgaW5zdGVhZCBjb3B5CglpbmNsdWRlIHN0cnVjdHVyZSBmcm9tIGdnYy1jb21tb24uYy4KCjIwMDMtMTAtMjkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS1saW51eC5oIChBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IFVzZSBsYWJlbCBpbiBiaWcgc3dpdGNoIEVMVHMuCgkoQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogVXNlIGxhYmVsIGRpZmZlcmVuY2UgaW4gYmlnIHN3aXRjaCBFTFRzLgoJKiBwYS5jIChwYV9hZGp1c3RfaW5zbl9sZW5ndGgpOiBDaGVjayBmb3IgYnRhYmxlIGJyYW5jaGVzIHVzaW5nCglhdHRyaWJ1dGUgVFlQRV9CVEFCTEVfQlJBTkNILgoJKHBhX3Jlb3JnKTogU2ltcGxpZnkuCgkqIHBhLmggKENBU0VfVkVDVE9SX01PREUpOiBDaGFuZ2UgYmlnIHN3aXRjaCBtb2RlIHRvIFNJbW9kZS4KCShBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IEFzIGFib3ZlLgoJKEFTTV9PVVRQVVRfQUREUl9ESUZGX0VMVCk6IEFzIGFib3ZlLgoJKiBwYS5tZCAoYnRhYmxlX2JyYW5jaCk6IE5ldyBpbnN0cnVjdGlvbiB0eXBlLgoJKGluX2JyYW5jaF9kZWxheSwgaW5fbnVsbGlmaWVkX2JyYW5jaF9kZWxheSwgaW5fY2FsbF9kZWxheSk6IERpc2FsbG93CglidGFibGUgYnJhbmNoZXMuCgkoZGVmaW5lX2RlbGF5KTogQWRkIGJ0YWJsZSBicmFuY2hlcyB0byBpbnNuIHR5cGVzIHRoYXQgbWF5IGhhdmUgYW4KCWluc24gaW4gdGhlIGRlbGF5IHBvc2l0aW9uLgoJKFoyLCBaMyk6IEFkZCBidGFibGUgYnJhbmNoIHRvIGxpc3QuCglTaW1wbGlmeSB1bmFtZWQgcGF0dGVybiBzZXQgY29weSBwaWNfbGFiZWxfb3BlcmFuZCB0byByZWdpc3Rlci4gIEFkZAoJUEEgMi4wIHZhcmlhbnQuCgkoc2hvcnRfanVtcCk6IE5ldyBqdW1wIGZvciB1c2UgaW4gYnJhbmNoIHRhYmxlcy4KCShjYXNlc2ksIGNhc2VzaTApOiBSZXZpc2UgZm9yIG5ldyBicmFuY2ggdGFibGUgZm9ybWF0cy4KCShjYXNlc2kzMiwgY2FzZXNpMzJwLCBjYXNlc2k2NHApOiBOZXcgY2FzZXNpIHBhdHRlcm5zLgoJKGluZGlyZWN0X2p1bXApOiBNb3ZlLgoKMjAwMy0xMC0yOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoVU5JVFNfUEVSX1dPUkQpOiBSZXZlcnQgdG8KCSFUQVJHRVRfUE9XRVJQQzY0LgoJKFVOSVRTX1BFUl9HUFJfV09SRCk6IERlbGV0ZS4KCShIQVJEX1JFR05PX05SRUdTKTogUmV2ZXJ0IHRvIFVOSVRTX1BFUl9XT1JELgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFNhbWUuCgkoQ0xBU1NfTUFYX05SRUdTKTogU2FtZS4KCjIwMDMtMTAtMjkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5oIChBU01fQ09NTUVOVF9TVEFSVCk6IERlZmluZS4KCjIwMDMtMTAtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZW5tb2Rlcy5jIChjb21wbGV0ZV9tb2RlKTogUmVjb3JkIE1PREVfQ0MsIE1PREVfSU5ULAoJTU9ERV9GTE9BVCwgYW5kIE1PREVfUEFSVElBTF9JTlQgbW9kZXMgYXMgaGF2aW5nIG9uZQoJY29tcG9uZW50LCBub3QgemVyby4KCjIwMDMtMTAtMjkgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvaWE2NC90LWlhNjQgKExJQjJBRERFSCk6IEFkZCAkKHNyY2RpcikvZ3Roci1nbmF0LmMuCgoyMDAzLTEwLTI5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKSBbVEFSR0VUX0FSQ0g2NF06CglOZXZlciByZXR1cm4gMSBmb3IgY29tcGxleCBpbnRlZ3JhbCBtb2RlcyB3aG9zZSBzaXplIGlzIGxlc3NlciBvcgoJZXF1YWwgdG8gYSB3b3JkLgoJKGZ1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSkgW1RBUkdFVF9BUkNINjRdOiBNZW50aW9uIENUSW1vZGUKCWluIHRoZSBjb21tZW50LgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKSBbVEFSR0VUX0FSQ0g2NF06IERvbid0IHNwZWNpYWwtY2FzZSBjb21wbGV4Cgltb2Rlcy4KCShzcGFyY192YV9hcmcpIFtUQVJHRVRfQVJDSDY0XTogSGFuZGxlIGFueSB0eXBlcyB3aG9zZSBzaXplIGlzCglncmVhdGVyIHRoYW4gMTYgYnl0ZXMgYnkgcmVmZXJlbmNlLgoKMjAwMy0xMC0yOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9hc3NlbWJsZV9pbnRlZ2VyKTogVGVzdCBQT0lOVEVSX1NJWkUsCglub3QgVEFSR0VUX0lMUDMyLgoJKGlhNjRfaW5pdGlhbGl6ZV90cmFtcG9saW5lKTogVXNlIGdsb2JhbGl6ZV9sYWJlbCB0YXJnZXQgY2FsbC4KCjIwMDMtMTAtMjkgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChCdWlsZGluZyk6IEFkZCBhIHNlbnRlbmNlIGFib3V0IGJ1aWxkaW5nIEFkYQoJZm9yIGEgY2FuYWRpYW4gY3Jvc3MuCgoyMDAzLTEwLTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChjbXB0Zl9saWJmdW5jKTogTmV3IHN0YXRpYy4KCShpYTY0X2V4cGFuZF9jb21wYXJlKTogQWRkIGxvZ2ljIHRvIG9wZW4tY29kZSBjYWxscyB0bwoJX1VfUWZjbXAgZm9yIFRGbW9kZSBjb21wYXJpc29ucy4KCShpYTY0X2hwdXhfaW5pdF9saWJmdW5jcyk6IEluaXRpYWxpemUgY21wdGZfbGliZnVuYy4KCVNldCBsaWJmdW5jcyBmb3IgVEZtb2RlIGVxL25lL2d0L2dlL2x0L2d0IHRvIDA7IHRoZXNlIHNob3VsZAoJbmV2ZXIgYmUgZ2VuZXJhdGVkIGFueW1vcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGNtcHRmKTogTmV3IGV4cGFuZGVyLgoKMjAwMy0xMC0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlhNjQubWQgKFVOU1BFQ19TRVRGX0VYUCxVTlNQRUNfRlJfU1FSVF9SRUNJUF9BUFBST1gpOiBOZXcgY29uc3RhbnRzLgoJKCpzcXJ0X2FwcHJveCk6IE5ldyBpbnN0cnVjdGlvbiBwYXR0ZXJuIGZvciBhcHByb3hpbWF0ZSBzcXVhcmUgcm9vdHMuCgkoKnNldGZfZXhwX3hmKTogTmV3IGluc3RydWN0aW9uIHBhdHRlcm4gZm9yIGV4cG9uZW50aWF0aW9uLgoJKCptYWRkeGY0X2FsdHNfdHJ1bmNzZik6IE5ldyBpbnN0cnVjdGlvbiBwYXR0ZXJuIGZvciB0cnVuY2F0aW9uLgoJKHNxcnRzZjJfaW50ZXJuYWxfdGhyKTogTmV3IGRlZmluZV9hbmRfc3BsaXQgaW1wbGVtZW50aW5nCgl0aHJvdWdocHV0LW9wdGltaXplZCBpbmxpbmUgY2FsY3VsYXRpb24gb2YgU0Ztb2RlIHNxdWFyZSByb290LgoJKHNxcnRkZjJfaW50ZXJuYWxfdGhyKTogTGlrZXdpc2UgZm9yIERGbW9kZS4KCShzcXJ0eGYyX2ludGVybmFsX3Rocik6IExpa2V3aXNlIGZvciBYRm1vZGUuCgkoc3FydHNmMiwgc3FydGRmMiwgc3FydHhmMik6IE5ldyBleHBhbmRlcnMgdG8gY2hvb3NlIGJldHdlZW4KCWxhdGVuY3ktIGFuZCB0aHJvdWdocHV0LW9wdGltaXplZCBzcXVhcmUgcm9vdCBhbGdvcml0aG1zLgoJKiBpYTY0LmggKE1BU0tfSU5MSU5FX1NRUlRfTEFULCBNQVNLX0lOTElORV9TUVJUX1RIUiwKCVRBUkdFVF9JTkxJTkVfU1FSVF9MQVQsIFRBUkdFVF9JTkxJTkVfU1FSVF9USFIsIFRBUkdFVF9JTkxJTkVfU1FSVCk6CglOZXcgbWFjcm9zLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWlubGluZS1zcXJ0LW1pbi1sYXRlbmN5IGFuZAoJLW1pbmxpbmUtc3FydC1tYXgtdGhyb3VnaHB1dC4KCSogaWE2NC5jIChpYTY0X292ZXJyaWRlX29wdGlvbnMpOiBJZiBib3RoIC1taW5saW5lLXNxcnQtbWluLWxhdGVuY3kKCWFuZCAtbWlubGluZS1zcXJ0LW1heC10aHJvdWdocHV0IGFyZSBnaXZlbiwgbm90aWZ5IHRoZSB1c2VyCgl0aGF0IGJvdGggb3B0aW9ucyBjYW5ub3QgYmUgdXNlZCBzaW11bHRhbmVvdXNseS4KCUlmIC1taW5saW5lLXNxcnQtbWluLWxhdGVuY3kgaXMgZ2l2ZW4sIG5vdGlmeSB0aGUgdXNlciB0aGF0Cgl0aGlzIG1vZGUgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KCShydHhfbmVlZHNfYmFycmllcik6IFJlZm9ybWF0IGluaXRpYWwgY29tbWVudCB0byBvYmV5Cgk3Mi1jaGFyYWN0ZXIgd2lkdGggbGltaXQuICBTdXBwb3J0IFVOU1BFQ19TRVRGX0VYUCBhbmQKCVVOU1BFQ19GUl9TUVJUX1JFQ0lQX0FQUFJPWC4KCjIwMDMtMTAtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGZfc29mdGZsb2F0NjQpOiBBbGxvdyBkdW1teSBjdHIsY3RyCgltb3Zlcy4KCjIwMDMtMTAtMjggIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCglQUiB0YXJnZXQvMTE1OTgKCVBSIGxpYmdjai8xMDYxMAoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFBSRUZFUlJFRF9TVEFDS19CT1VOREFSWSk6IE5ldyBtYWNyby4KCjIwMDMtMTAtMjggIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBXaGVuIHVzaW5nIGEgZnJhbWUgcG9pbnRlciwgZG9uJ3QgZW1pdAoJYW4gZXh0cmEgc3RhY2sgYWRqdXN0bWVudCBpbnNuIGlmIHRoZSBzdGFjayBwb2ludGVyIGlzIGFscmVhZHkKCXBvaW50aW5nIGF0IHRoZSByaWdodCBwbGFjZS4KCSh1c2VfcmV0dXJuX2luc24pOiBBbGxvdyBhIHJldHVybiBpbnNuIHRvIGJlIHVzZWQgd2hlbiB3ZSBoYXZlIGEKCWZyYW1lIHBvaW50ZXIgaWYgdGhlIHN0YWNrIHBvaW50ZXIgaXMgaW4gdGhlIHJpZ2h0IHBsYWNlLgoJKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBIYW5kbGUgaXQuCgoyMDAzLTEwLTI4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBnZ2Mtem9uZS5jIChjaGVja19jb29raWVzKTogQWRkIG1pc3NpbmcgdmFyaWFibGUuCglBZGQgdm9pZCB0byBwcm90b3R5cGVzLgoKMjAwMy0xMC0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlnL21pcHMvaXJpeDYtbGliYy1jb21wYXQuYyAoaW5ldF9tYWtlYWRkcik6IFByb3RvdHlwZS4KCSogY3J0c3R1ZmYuYyAoX19kb19nbG9iYWxfY3RvcnNfMSk6IE1vdmUgcHJvdG90eXBlLgoJKiB1bndpbmQtZHcyLmMgKE5PX1NJWkVfT0ZfRU5DT0RFRF9WQUxVRSk6IERlZmluZSB3aGVuCglhcHByb3ByaWF0ZS4KCSogdW53aW5kLXNqbGouYyAoX1Vud2luZF9HZXRDRkEsIF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uKToKCU1hcmsgcGFyYW1ldGVyIHdpdGggX19hdHRyaWJ1dGVfXygodW51c2VkKSkuCgoyMDAzLTEwLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKHB1c2hkZWNsKTogQ2xhcmlmeSBjb21tZW50LgoKMjAwMy0xMC0yNyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBVcGRhdGUgaW5zdHJ1Y3Rpb25zIGZvciBBZGEgY3Jvc3MgYnVpbGRzCgoJUFIgYWRhLzU5MDk6CgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBEb2N1bWVudCBBZGEgdGVzdCBzdWl0ZS4KCjIwMDMtMTAtMjcgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jOiBDb252ZXJ0IHRvIElTTyBDOTAuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmg6IExpa2V3aXNlLgoKMjAwMy0xMC0yNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiB0b3BsZXYuYyAoZW51bSBkdW1wX2ZpbGVfaW5kZXgsIGR1bXBfZmlsZSk6IEZpeCBvcmRlcmluZyBvZgoJd2ViaXplciBwYXNzIGR1bXAuCgoyMDAzLTEwLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWxvYWQxLmMgKHN0cnVjdCBlbGltX3RhYmxlKTogQ2hhbmdlIG9mZnNldCwgaW5pdGlhbF9vZmZzZXQgYW5kCglwcmV2aW91c19vZmZzZXQgZmllbGRzIHRvIEhPU1RfV0lERV9JTlQuCgkob2Zmc2V0c19hdCk6IENoYW5nZSBmcm9tIGludCB0byBIT1NUX1dJREVfSU5ULgoJKHJlbG9hZCk6IEFkanVzdCBvZmZzZXRzX2F0IGluaXRpYWxpemF0aW9uLgoJKGVsaW1pbmF0ZV9yZWdzX2luX2luc24pOiBDaGFuZ2UgdHlwZSBvZiBvZmZzZXQgdG8gSE9TVF9XSURFX0lOVC4KCSh2ZXJpZnlfaW5pdGlhbF9lbGltX29mZnNldHMpOiBDaGFuZ2UgdHlwZSBvZiB0IHRvIEhPU1RfV0lERV9JTlQuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCk6IENoYW5nZSBvZmZzZXQgdHlwZQoJdG8gSE9TVF9XSURFX0lOVC4gIERvbid0IHNhdmUgcmVncyB1c2luZyBtb3YgZm9yIGh1Z2UgZnJhbWUgc2l6ZXMKCWlmIFRBUkdFVF82NEJJVC4KCShwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrKTogTmV3IGZ1bmN0aW9uLgoJKGl4ODZfZXhwYW5kX3Byb2xvZ3VlLCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBpdC4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAocHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjayk6IFJlbW92ZS4KCShwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrXzEpOiBSZW1vdmUgKiBpbiBmcm9udCBvZiBuYW1lLgoJKHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2tfcmV4NjQpOiBIYW5kbGUgLTIxNDc0ODM2NDggcHJvcGVybHkuCgkocHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFja19yZXg2NF8yKTogTmV3IGluc24uCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2VwaWxvZ3VlKTogRml4IGNvbW1lbnQgdHlwby4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfY2FsbCk6IFJlcGxhY2UgNDAgd2l0aAoJRklSU1RfUkVYX0lOVF9SRUcgKyAzIC8qIFIxMSAqLy4KCjIwMDMtMTAtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGF0dHIgY2Fubm90X2NvcHkpOiBOZXcuCgkoY2FsbF9vc2ZfMl9lciwgY2FsbF92YWx1ZV9vc2ZfMl9lciwgbGRncF9lcl8xLCBsZGdwX2VyXzIsCglwcm9sb2d1ZV9sZGdwX2VyXzIsIHByb2xvZ3VlX2xkZ3BfMSk6IFNldCBpdC4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2Nhbm5vdF9jb3B5X2luc25fcCk6IFRlc3QgaXQuCgoyMDAzLTEwLTI2ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGdnYy16b25lLmM6ICBOZXcgZmlsZSwgem9uZSBhbGxvY2F0aW5nIGNvbGxlY3Rvci4KCSogY29uZmlndXJlOiBBY2NlcHQgem9uZSBvcHRpb24gZm9yIC0td2l0aC1nYwoJKiBjb25maWd1cmUuaW46IERpdHRvLgoJKiBnZ2MuaCAoZ2djX3BjaF9jb3VudF9vYmplY3QpOiBQYXNzIGJvb2wgaW5kaWNhdGluZwoJc3RyaW5naW5lc3MuIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShnZ2NfcGNoX2FsbG9jX29iamVjdCk6IERpdHRvLgoJKGdnY19wY2hfd3JpdGVfb2JqZWN0KTogRGl0dG8uCgkoZ2djX2FsbG9jX3J0eCk6IFVzZSB0eXBlZCBhbGxvY2F0aW9uLCBzaW5jZSBhbGwgUlRYJ3MgYXJlIG9mIGEgc2luZ2xlCgl0eXBlLgoJKGdnY19hbGxvY19ydHZlYyk6IERpdHRvLgoJKGdnY19hbGxvY190cmVlKTogVXNlIHpvbmUgYWxsb2NhdGlvbiwgc2luY2Ugc29tZSB0aGluZ3MgdXNpbmcgdGhpcyBtYWNybwoJYXJlbid0IGEgc2luZ2xlIHR5cGVjb2RlLgoJKiBnZ2Mtbm9uZS5jIChnZ2NfYWxsb2NfdHlwZWQpOiBOZXcgZnVuY3Rpb24uCgkoZ2djX2FsbG9jX3pvbmUpOiBEaXR0by4KCSogZ2djLXBhZ2UuYzogRGl0dG8gb24gYm90aCBmdW5jdGlvbnMuCgoyMDAzLTEwLTI2ICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOiBFbnN1cmUgRlBVIHJlbGF0ZWQKCWZyYW1lIGluZm9ybWF0aW9uIGlzIGFsd2F5cyB2YWxpZC4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFJlbW92ZSBzdXBlcmZsdW91cyBUQVJHRVRfNjg4ODEKCXRlc3Q7IGZpeCBmb3JtYXR0aW5nLgoKMjAwMy0xMC0yNiAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogU3dhcCByZWdfbWFzayBhbmQKCXJlZ19yZXZfbWFzayBjb21wdXRhdGlvbi4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IEZpeCB1c2FnZSBvZiBjdXJyZW50X2ZyYW1lIChvbmUgdHlwbwoJYW5kIG9uZSBtaXNzaW5nKTsgdXNlIHJlZ19yZXZfbWFzayBub3QgcmVnX21hc2suCgkobTY4a19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBGaXggdXNhZ2Ugb2YgY3VycmVudF9mcmFtZTsKCXVzZSBmcHVfcmV2X21hc2sgbm90IGZwdV9tYXNrLgoKMjAwMy0xMC0yNiAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IEVsaW1pbmF0ZQoJbnVtX3NhdmVkX3JlZ3MsIHVzZSBjdXJyZW50X2ZyYW1lLnJlZ19ubyBpbnN0ZWFkLgoKMjAwMy0xMC0yNiAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoJICAgIFBhdWwgRGFsZSAgPHBhdWxpQHNuYXBnZWFyLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoaW50ZXJydXB0X2hhbmRsZXIpOiBBZGQgbTY4ayB0byB0aGUKCWxpc3Qgb2YgcHJvY2Vzc29ycyBpbXBsZW1lbnRpbmcgaXQuCgkqIGRvYy9pbnZva2UudGV4aSAoLW1zZXAtZGF0YSk6IERvY3VtZW50IG5ldyBtNjhrIG9wdGlvbi4KCSgtbW5vLXNlcC1kYXRhKTogTGlrZXdpc2UuCgkoLW1pZC1zaGFyZWQtbGlicmFyeSk6IExpa2V3aXNlLgoJKC1tbm8taWQtc2hhcmVkLWxpYnJhcnkpOiBMaWtld2lzZS4KCSgtbXNoYXJlZC1saWJyYXJ5LWlkKTogTGlrZXdpc2UuCgoyMDAzLTEwLTI2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB1bndpbmQtZHcyLmMgKF9VbndpbmRfR2V0R1IpOiBBdm9pZCB3YXJuaW5nIGFib3V0IHVuc2lnbmVkCgljb21wYXJpc29uLgoJKF9VbndpbmRfU2V0R1IpOiBMaWtld2lzZS4KCjIwMDMtMTAtMjYgIE90dGF2aW8gQ2FtcGFuYSA8b3R0YXZpb0BjYW1wYW5hLnZpLml0PgoKCVBSIHRhcmdldC8xMjY5MAoJKiBjb25maWcvaTM4Ni9tbWludHJpbi5oIChfbW1fc2V0MV9waTgpOiBGaXggY29tbWVudC4KCjIwMDMtMTAtMjYgIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBNb3ZlIGZyb250Cgljb21tZW50IGZyb20gaGVyZSB0by4uLgoJKG02OGtfc2F2ZV9yZWcpOiAuLi5oZXJlLiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGNvbnN0X21ldGhvZCk6IExpa2V3aXNlLgoKMjAwMy0xMC0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRvcGxldi5jIChkZWZhdWx0X2dldF9wY2hfdmFsaWRpdHkpOiBHdWFyZCB0aGUgdXNlIG9mCgl0YXJnZXRfb3B0aW9ucyB3aXRoICNpZmRlZiBUQVJHRVRfT1BUSU9OUy4KCShkZWZhdWx0X3BjaF92YWxpZF9wKTogTGlrZXdpc2UuCgoyMDAzLTEwLTI2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBBbmRyZWFzIFRvYmxlciA8dG9hQHBvcC5hZ3JpLmNoPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9jZmkpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVC4KCShvdXRwdXRfZGllKTogTGlrZXdpc2UuCgkocHJpbnRfZGllKTogTGlrZXdpc2UuCgoyMDAzLTEwLTI2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB0cmVlLmggKGR3YXJmMm91dF9kZWZfY2ZhLCBkd2FyZjJvdXRfYXJnc19zaXplLAoJZHdhcmYyb3V0X3JlZ19zYXZlLCBuZXdfbG9jX2Rlc2NyKTogVXBkYXRlIHByb3RvdHlwZXMgZm9yIHJlY2VudAoJZHdhcmYyb3V0LmMgY2hhbmdlLgoKCSogdG9wbGV2LmMgKGRlZmF1bHRfcGNoX3ZhbGlkX3ApOiBGaXggd2FybmluZy4KCjIwMDMtMTAtMjUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlcGxhY2VfcnR4KTogQXZvaWQgYWxsb2NhdGluZyBkdXBsaWNhdGUKCVJUTCBub2Rlcy4gIElmIGFuIG9wZXJhdG9yJ3Mgb3BlcmFuZHMgYXJlIHVuY2hhbmdlZCwgcmV0dXJuIHRoZQoJb3JpZ2luYWwgYXJndW1lbnQgdW5jaGFuZ2VkLgoKMjAwMy0xMC0yNiAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtLnN0b3R0QGJ0aW50ZXJuZXQuY29tPgoKCUZpeCBib290c3RyYXAgZmFpbHVyZS4KCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IERvbid0IGNvbXBhcmUgYml0c2l6ZSBhZ2FpbnN0Cgltb2RlcyB3aXRoIHplcm8gYml0LXNpemUuCgoJKGV4dHJhY3RfYml0X2ZpZWxkKTogTGlrZXdpc2UKCjIwMDMtMTAtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGR3YXJmMm91dC5jIChkd19jZmlfb3BybmRfc3RydWN0KTogT2Zmc2V0IGlzIEhPU1RfV0lERV9JTlQuCgkoY2ZhX2xvYyk6IExpa2V3aXNlLgoJKHJlZ19zYXZlLCBzdGFja19hZGp1c3Rfb2Zmc2V0LCBxdWV1ZV9yZWdfc2F2ZSk6IFJlcGxhY2UgbG9uZyBieQoJSE9TVF9XSURFX0lOVC4KCShhcmdzX3NpemUsIG9sZF9hcmdzX3NpemUpOiBjaGFuZ2UgdHlwZSB0byBIT1NUX1dJREVfSU5ULgoJKGR3YXJmMm91dF9kZWZfY2ZhLCBkd2FyZjJvdXRfYXJnc19zaXplLAoJZHdhcmYyb3V0X3JlZ19zYXZlLCBuZXdfbG9jX2Rlc2NyKTogb2Zmc2V0IGlzIEhPU1RfV0lERV9JTlQuCgkoZHdfdmFsX3N0cnVjdCk6IGludGVnZXJzLCB1bnNpZ25lZHMgYW5kIG9mZnNldHMgYXJlIEhPU1RfV0lERV9JTlQuCgkoYWRkX0FUX2ludCwgYWRkX0FUX3Vuc2lnbmVkLCBhdHRfQVRfb2Zmc2V0LCBBVF9pbnQsIEFUX3Vuc2lnbmVkLAoJQVRfb2Zmc2V0KTogVXNlIEhPU1RfV0lERV9JTlQuCgkoYmFzZWRfbG9jX2Rlc2NyKTogb2Zmc2V0IGlzIEhPU1RfV0lERV9JTlQuCgkoYWRkX2RhdGFfbWVtYmVyKTogTGlrZXdpc2UuCgkoYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IFNpbXBsaWZ5LgoKMjAwMy0xMC0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9lYXhfbGl2ZV9hdF9zdGFydF9wKTogTmV3LgoJKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogU2F2ZSBhbmQgcmVzdG9yZSBlYXggYXJvdW5kIHN0YWNrIHByb2JlCglpZiBpdCdzIGxpdmUuCgoyMDAzLTEwLTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjcHBjaGFyc2V0LmMgKG9uZV91dGY4X3RvX3V0ZjMyKTogSW5pdGlhbGl6ZSAncycgdG8gc2lsZW5jZSB3YXJuaW5nLgoKMjAwMy0xMC0yNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTI3MTIKCSogcmVnLXN0YWNrLmMgKGNvbnZlcnRfcmVnc18xKTogQ3JlYXRlIGFuIGFyYml0cmFyeSBpbnB1dCBzdGFjawoJaWYgdGhlIGJsb2NrIGhhcyBubyBwcmVkZWNlc3NvcnMuCgkoY29udmVydF9yZWdzXzIpOiBEb2N1bWVudCB0aGUgcHJvYmxlbSB3aXRoIHN1Y2Nlc3NvcnMgd2hvc2UKCW9ubHkgcHJlZGVjZXNzb3IgaXMgdGhlIGJsb2NrIHRvIGJlIHByb2Nlc3NlZC4KCShjb252ZXJ0X3JlZ3MpOiBEb24ndCBjcmVhdGUgdGhlIGFyYml0cmFyeSBpbnB1dCBzdGFjayBoZXJlLgoKMjAwMy0xMC0yNCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbm1vZGVzLmMgKHN0cnVjdCBtb2RlX2RhdGEpOiBBZGQgY29udGFpbmVkIGFuZCBuZXh0X2NvbnQKCWZpZWxkcy4KCShjb21wbGV0ZV9tb2RlKTogTWFpbnRhaW4gbGlua2VkIGxpc3Qgb2YgbW9kZXMgdGhhdCBoYXZlIGEKCWdpdmVuIGNvbXBvbmVudC4KCShlbWl0X21vZGVfdW5pdF9zaXplKTogRGVsZXRlLgoJKGVtaXRfbW9kZV9udW5pdHMpOiBOZXcuCgkoZW1pdF9pbnNuX21vZGVzX2MpOiBVcGRhdGUgdG8gbWF0Y2guCgkoZW1pdF9tb2RlX2FkanVzdG1lbnRzKTogUHJvcGFnYXRlIHNpemUgYW5kIGFsaWdubWVudAoJYWRqdXN0bWVudHMgZnJvbSBjb21wb25lbnQgbW9kZXMgdG8gdGhlaXIgY29udGFpbmVycy4KCSogbWFjaG1vZGUuaCAobW9kZV91bml0X3NpemUpOiBEZWxldGUuCgkobW9kZV9udW5pdHMpOiBOZXcuCgkoR0VUX01PREVfTlVOSVRTKTogSnVzdCByZXR1cm4gdGhlIHZhbHVlIGluIHRoZSB0YWJsZS4KCShHRVRfTU9ERV9VTklUX1NJWkUpOiBDb21wdXRlIHVzaW5nIEdFVF9NT0RFX0lOTkVSIGFuZAoJR0VUX01PREVfU0laRS4KCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOiBDYW4gdXNlIGEKCXBsYWluIG1vdmUgaW5zdHJ1Y3Rpb24gaWYgYml0c2l6ZSA+PSBHRVRfTU9ERV9CSVRTSVpFIG9mCglkZXN0aW5hdGlvbi9zb3VyY2UgbW9kZSwgcmVzcGVjdGl2ZWx5LgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfcmVhbCk6IFdyaXRlIG91dCB0aGUgZnVsbCBzaXplIG9mIHRoZQoJY29uc3RhbnQsIG5vdCBqdXN0IGl0cyBiaXRzaXplLgoJKG91dHB1dF9jb25zdGFudCk6IEhvbm9yIFRZUEVfTU9ERSBvZiBUUkVFX1JFQUxfQ1NUcy4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtbW9kZXMuZGVmOiBEZWZpbmUgWEZtb2RlIGFzIHdlbGwgYXMgVEZtb2RlLgoJVXNlIEFESlVTVF9CWVRFU0laRSBhbmQgQURKVVNUX0FMSUdOTUVOVCB0byBzZXQgc2l6ZSBhbmQKCWFsaWdubWVudCBvZiBYRiBhbmQgVEYgbW9kZXMgaW4gY29tcGxpYW5jZSB3aXRoIGlhNjQgQUJJcy4KCUNhbiBub3cgaGFyZHdpcmUgdGhlIGZvcm1hdCBvZiBib3RoIG1vZGVzLgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IENoYW5nZSBURm1vZGUgdG8gWEZtb2RlIHdoZXJldmVyIGFwcHJvcHJpYXRlLgoJKGdlbmVyYWxfdGZtb2RlX29wZXJhbmQsIGRlc3RpbmF0aW9uX3RmbW9kZV9vcGVyYW5kKQoJKHRmcmVnX29yX2ZwMDFfb3BlcmFuZCwgc3BpbGxfdGZtb2RlX29wZXJhbmQpOiBSZW5hbWUgdG8KCWdlbmVyYWxfeGZtb2RlX29wZXJhbmQsIGRlc3RpbmF0aW9uX3hmbW9kZV9vcGVyYW5kLAoJeGZyZWdfb3JfZnAwMV9vcGVyYW5kLCBzcGlsbF94Zm1vZGVfb3BlcmFuZCByZXNwZWN0aXZlbHkuCgkoaWE2NF9pbml0X2J1aWx0aW5zKTogTWFrZSBUWVBFX1BSRUNJU0lPTiBvZiBmcHJlZ190eXBlCglhbmQgZmxvYXQ4MF90eXBlIGJlIDk2IHNvIHRoZXkgZ2V0IFhGbW9kZS4gIFVzZSAhVEFSR0VUX0hQVVgsCglub3QgSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQsIHRvIGRlY2lkZSBob3cgdG8gZGVmaW5lCglfX2Zsb2F0MTI4LgoJKiBjb25maWcvaWE2NC9pYTY0Lmg6IERlZmF1bHQgVEFSR0VUX0hQVVggdG8gMC4KCUNoYW5nZSBURm1vZGUgdG8gWEZtb2RlIHdoZXJldmVyIGFwcHJvcHJpYXRlLiAgUmVtb3ZlIGFsbAoJcmVmZXJlbmNlcyB0byBJTlRFTF9FWFRFTkRFRF9JRUVFX0ZPUk1BVC4KCShMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBWYXJpZXMgd2l0aCBUQVJHRVRfSFBVWC4KCShMSUJHQ0MyX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSAoYWx3YXlzIDk2KS4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUgdG8gbWF0Y2ggZnVuY3Rpb24gcmVuYW1lcy4KCSogY29uZmlnL2lhNjQvaWE2NC5tZDogQ2hhbmdlIFRGIHRvIFhGIHRocm91Z2hvdXQ7IHJlbmFtZSBhbGwKCXBhdHRlcm5zIHRvIG1hdGNoLiAgUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvCglJTlRFTF9FWFRFTkRFRF9JRUVFX0ZPUk1BVC4gIFVwZGF0ZSBwcmVkaWNhdGUgY2FsbHMgdG8gbWF0Y2gKCWZ1bmN0aW9uIHJlbmFtZXMuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmM6IFVwZGF0ZSBhbGwgcHJvdG90eXBlcyB0byBtYXRjaAoJcmVuYW1lZCBmdW5jdGlvbnMuCgkqIGNvbmZpZy9pYTY0L2hwdXguaDogUmVkZWZpbmUgVEFSR0VUX0hQVVggdG8gMS4KCVJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBJTlRFTF9FWFRFTkRFRF9JRUVFX0ZPUk1BVC4KCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbTogQWRkIF9fZGl2eGYzIGFzIG5ldyBuYW1lIGZvcgoJX19kaXZ0ZjM7IGtlZXAgb2xkIG5hbWUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgkoTF9fY29tcGF0KTogTmV3IHNlY3Rpb24gcHJvdmlkaW5nIGZvcndhcmRpbmcgc3R1YnMgZm9yCglfX2ZpeHRmdGksIF9fZml4dW5zdGZ0aSwgX19mbG9hdHRpdGYuCgkqIGNvbmZpZy9pYTY0L3QtaWE2NDogQWRkIF9fY29tcGF0IHRvIExJQjFBU01GVU5DUy4KCjIwMDMtMTAtMjQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVBSIDEwNzU3CgkqIGMtcGNoLmM6IEluY2x1ZGUgdGFyZ2V0LmguICBJbXByb3ZlIGNvbW1lbnRzLgoJKHN0cnVjdCBjX3BjaF92YWxpZGl0eSk6IEFkZCB0YXJnZXRfZGF0YV9sZW5ndGguCgkocGNoX2luaXQpOiBBZGQgdGFyZ2V0J3MgdmFsaWRpdHkgZGF0YS4KCShjX2NvbW1vbl92YWxpZF9wY2gpOiBDaGVjayB0YXJnZXQncyB2YWxpZGl0eSBkYXRhLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9HRVRfUENIX1ZBTElESVRZKTogTmV3LgoJKFRBUkdFVF9QQ0hfVkFMSURfUCk6IE5ldy4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBBZGQgbmV3IGZpZWxkcy4KCSogdGFyZ2V0Lmg6IEluY2x1ZGUgdG0uaC4KCShzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBnZXRfcGNoX3ZhbGlkaXR5LCBwY2hfdmFsaWRfcC4KCSogdG9wbGV2LmggKGRlZmF1bHRfZ2V0X3BjaF92YWxpZGl0eSk6IE5ldyBwcm90b3R5cGUuCgkoZGVmYXVsdF9wY2hfdmFsaWRfcCk6IE5ldyBwcm90b3R5cGUuCgkqIHRvcGxldi5jIChkZWZhdWx0X2dldF9wY2hfdmFsaWRpdHkpOiBOZXcgcm91dGluZS4KCShkZWZhdWx0X3BjaF92YWxpZF9wKTogTmV3IHJvdXRpbmUuCgkqIE1ha2VmaWxlLmluIChUQVJHRVRfSCk6IEFkZCBUTV9ILiAgUmVwbGFjZSBhbGwgdXNlcnMgb2YKCXRhcmdldC5oIHdpdGggJChUQVJHRVRfSCkuCgkoYy1wY2gubyk6IEFkZCBUQVJHRVRfSC4KCSogZG9jL3RtLnRleGkgKFBDSCBUYXJnZXQpOiBOZXcgbm9kZS4KCShUQVJHRVRfR0VUX1BDSF9WQUxJRElUWSk6IERvY3VtZW50LgoJKFRBUkdFVF9QQ0hfVkFMSURfUCk6IERvY3VtZW50LgoKMjAwMy0xMC0yNCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluOiBEZWZpbmUgYSB2cGF0aCBmb3IgJS50ZXhpLiAgUmVtb3ZlIGV4cGxpY2l0ICQoZG9jZGlyKQoJYW5kICQoZG9jZGlyKS9pbmNsdWRlIGZyb20gYW55ICoudGV4aSBkZXBlbmRlbmNpZXMuCgkoJChkb2NvYmpkaXIpLyUuZHZpKTogRGVwZW5kIG9uIHN0bXAtZG9jb2JqZGlyLgoJKCQoZG9jb2JqZGlyKS8lLjEpOiBEZXBlbmQgb24gLnBvZCBpbnN0ZWFkIG9mIC50ZXhpLgoJKCQoZG9jb2JqZGlyKS8lLjcpOiBMaWtld2lzZS4KCSglLnBvZCk6IE5ldyBpbXBsaWNpdCBydWxlLgoJKGNwcC5wb2QpOiBOZXcgZGVwZW5kZW5jeSBvbmx5IHJ1bGUuCgkoZ2NjLnBvZCk6IE5ldyBpbnRlcm1lZGlhdGUgcnVsZSB3aXRoIGRlcGVuZGVuY2llcyBhbmQgY29tbWFuZHMuCgkoZ2ZkbC5wb2QpOiBMaWtld2lzZS4KCShmc2YtZnVuZGluZy5wb2QpOiBMaWtld2lzZS4KCjIwMDMtMTAtMjQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBSZW1vdmUgc3BlY2lhbCBjYXNlcyBmb3Igc3ZyNCBhbmQgcHR4LCBhbmQKCXJlbGF0ZWQgY29kZS4KCSogZml4aW5jL2ZpeGluYy5wdHg6IFJlbW92ZS4KCSogZml4aW5jL2ZpeGluYy5zdnI0OiBSZW1vdmUuCgoyMDAzLTEwLTI0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKGxvYWRfbXVsdGlwbGVfb3BlcmF0aW9uKTogQWxsb3cgYm90aCBTSW1vZGUKCWFuZCBESW1vZGUgaWYgd29yZF9tb2RlIGlzIERJbW9kZS4KCShzdG9yZV9tdWx0aXBsZV9vcGVyYXRpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImxvYWRfbXVsdGlwbGUiLCAic3RvcmVfbXVsdGlwbGUiKTogTGlrZXdpc2UuCgkoIipsb2FkX211bHRpcGxlX2RpIik6IEFsbG93IG9ubHkgaWYgd29yZF9tb2RlID09IERJbW9kZS4KCSgibW92cWkiKTogVXNlIExMR0Mgd2hlbmV2ZXIgVEFSR0VUX1pBUkNILgoJKCJmaXhfdHJ1bmNkZnNpMiIpOiBGaXggaW5jb3JyZWN0IHRlbXBvcmFyeSBzaXplLgoJKCJmaXhfdHJ1bmNzZnNpMiIpOiBMaWtld2lzZS4KCSgiKmJyYXNfciIsICIqYnJhc2xfciIsICIqYmFzcl9yIik6IFJlbW92ZSBwcmVkaWNhdGUgYW5kIGNvbnN0cmFpbnQKCXN0cmluZyBmb3IgZnVuY3Rpb24gcmV0dXJuIHZhbHVlIG9wZXJhbmQuCgkoIipicmFzX3RscyIsICIqYnJhc2xfdGxzIiwgIipiYXNyX3RscyIpOiBMaWtld2lzZS4KCjIwMDMtMTAtMjQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1wYXJzZS5pbiAoYXJyYXlfZGVjbGFyYXRvcik6IFVzZSBleHByX25vX2NvbW1hcy4KCUZpeGVzIFBSIGMvMTE5NDMuCgoyMDAzLTEwLTI0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBXcmFwIE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUiBhbmQKCWFzc29jaWF0ZWQgaW5jbHVkZXMgaW4gI2lmbmRlZiBpbmhpYml0X2xpYmMuCgoyMDAzLTEwLTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGRvYy9saWJnY2MudGV4aTogRG9jdW1lbnQgc29tZSBtb3JlIG9mIHRoZSBsaWJnY2MgQVBJLgoKMjAwMy0xMC0yNCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX3J0eF9jb3N0c18xLCBjYXNlIFRBUkdFVF9USFVNQik6IEFkanVzdCBjb3N0cyBmb3IKCWNvbXBhcmluZyBhIGNvbnN0YW50IHdpdGggc21hbGwgbmVnYXRpdmUgbnVtYmVycyBhbmQgYWRkIGNvc3RpbmcKCWZvciBjb25zdGFudHMgaW4gY29uanVuY3Rpb24gd2l0aCBBTkQuCgkobm90ZV9pbnZhbGlkX2NvbnN0YW50cyk6IFRpZHkgcHJldmlvdXMgY2hhbmdlLgoJKHRodW1iX2NtcF9vcGVyYW5kKTogVGlkeS4KCSh0aHVtYl9jbXBuZWdfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogYXJtLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogRG9uJ3QgdXNlIEhJIHJlZ3MgaWYgb3B0aW1pemluZwoJZm9yIHNpemUuCgkoRklSU1RfTE9fUkVHTlVNLCBGSVJTVF9ISV9SRUdOVU0sIExBU1RfSElfUkVHTlVNKTogRGVmaW5lLgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCB0aHVtYl9jbXBuZWdfb3BlcmFuZC4KCSogYXJtLm1kIChjYnJhbmNoc2k0KTogQ29udmVydCB0byBkZWZpbmVfZXhwYW5kLiAgSGFuZGxlIGNvbXBhcmlzb24KCXdpdGggYSBuZWdhdGl2ZSBjb25zdGFudC4KCShjYnJhbmNoc2k0X2luc24pOiBNYXRjaGVyIGZvciBjYnJhbmNoc2k0LgoJKGNicmFuY2hzaTRfc2NyYXRjaCk6IFNpbWlsYXIsIGJ1dCBhIHNjcmF0Y2ggaXMgYXZhaWxhYmxlIGZvcgoJaGFuZGxpbmcgbmVnYXRpdmUgY29uc3RhbnRzLgoJKG1vdnNpX2NicmFuY2hzaTQpOiBOZXcgcGF0dGVybi4KCSh0c3RzaTNfY2JyYW5jaCk6IFJlbmFtZWQgZnJvbSBhbmRzaTNfY2JyYW5jaF9zY3JhdGNoLCByZW1vdmUgc2NyYXRjaAoJYW5kIHVzZSB0aGUgVFNUIGluc3RydWN0aW9uLgoJKGFuZHNpM19jYnJhbmNoLCBvcnJzaTNfY2JyYW5jaCwgeG9yc2kzX2NicmFuY2gsIGNicmFuY2huZV9kZWNyMSkKCShhZGRzaTNfY2JyYW5jaCwgc3Vic2kzX2NicmFuY2gpOiBFbnN1cmUgdGhhdCByZWdpc3RlciBwcmVmZXJlbmNpbmcKCWNhbm5vdCBzZWUgaGlnaCByZWdzIG9yIG1lbW9yeSBhbHRlcm5hdGl2ZXMuCgkoYmljc2kzX2NicmFuY2hfc2NyYXRjaCwgYmljc2kzX2NicmFuY2gpOiBOZXcgcGF0dGVybnMuCgoyMDAzLTEwLTI0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChub3RlX2ludmFsaWRfY29uc3RhbnRzKTogVHJ5IHRvIGV4dHJhY3QgdGhlIGNvbnN0YW50Cglwb29sIHZhbHVlIHVzaW5nIGF2b2lkX2NvbnN0YW50X3Bvb2xfcmVmZXJlbmNlOyBvbmx5IHVzZQoJZ2V0X3Bvb2xfY29uc3RhbnQgaWYgdGhhdCByZXR1cm5zIHRoZSBvcmlnaW5hbCByZWZlcmVuY2UuCgoyMDAzLTEwLTI0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgYysrLzEyNjI0CgkqIHZhcmFzbS5jIChub3RpY2VfZ2xvYmFsX3N5bWJvbCk6IERpc3F1YWxpZnkgZ2xvYmFsIHJlZ2lzdGVycy4KCjIwMDMtMTAtMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTE0MTQKCSogbG9vcC5jIChsb2FkX21lbXMpOiBVc2UgcmVkaXJlY3RfanVtcCB0byBmb3J3YXJkIGp1bXBzIGZyb20KCXRoZSBvcmlnaW5hbCBsb29wIGVuZCBsYWJlbCB0byB0aGUgbmV3ICJsb29wIHNpbmsiIGJsb2NrJ3MgbGFiZWwuCgoyMDAzLTEwLTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzEyNzA1CgkqIG9wdGFicy5jIChleHBhbmRfYmlub3ApOiBXaGVuIGV4cGFuZGluZyBjb21wbGV4IG9wZXJhdGlvbnMKCWlubGluZSwgYWx3YXlzIGNhbGN1bGF0ZSByZXN1bHQgaW50byBhIG5ldyB0ZW1wb3JhcnkgcmVnaXN0ZXIuCglNaW5vciBjb2RlIGNsZWFuLXVwcy4KCjIwMDMtMTAtMjQgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogb2JqYy9sYW5nLXNwZWNzLmg6IEhhbmRsZSAtcHJpbnQtb2JqYy1ydW50aW1lLWluZm8uCgkqIGRvYy9pbnZva2UudGV4aSAoT2JqZWN0aXZlLUMgRGlhbGVjdCBPcHRpb25zKTogRG9jdW1lbnQgaXQuCgoyMDAzLTEwLTI0ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvY3lnd2luLmFzbTogQWRkIGNvcHlyaWdodCBub3RpY2UuIEFkZCBjb21tZW50CglvbiB3aHkgdGhpcyBjb2RlIGlzIG5lZWRlZC4KCjIwMDMtMTAtMjMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvY2x6aGkyLmM6IEZpeCB3YXJuaW5ncy4KCSogY29uZmlnL2g4MzAwL2N0emhpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2ZpeHVuc3Nmc2kuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9wYXJpdHloaTIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9wb3Bjb3VudGhpMi5jOiBMaWtld2lzZS4KCjIwMDMtMTAtMjMgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGdjYy5jIChvcHRpb25fbWFwKTogRGVsZXRlIC0tdGFyZ2V0IGFuZCAtLXVzZS12ZXJzaW9uLgoKMjAwMy0xMC0yMyAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoJICAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFVOSVRTX1BFUl9XT1JEKTogVXNlIFRBUkdFVF8zMkJJVCwgbm90CglUQVJHRVRfUE9XUkVQQzY0LgoJKFVOSVRTX1BFUl9HUFJfV09SRCk6IERlZmluZS4KCShIQVJEX1JFR05PX05SRUdTKTogVXNlIFVOSVRTX1BFUl9HUFJfV09SRC4KCShIQVJEX1JFR05PX0NBTExfUEFSVF9DTE9CQkVSRUQpOiBEZWZpbmUuCgkoSEFSRF9SRUdOT19NT0RFX09LKTogVXNlIFVOSVRTX1BFUl9HUFJfV09SRC4KCShDTEFTU19NQVhfTlJFR1MpOiBVc2UgVU5JVFNfUEVSX0dQUl9XT1JELgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChmdW5jdGlvbl9hcmcpOiBHZW5lcmF0ZSBQQVJBTExFTCBmb3IKCURGbW9kZSBhbmQgREltb2RlIGluIDMyLWJpdCBBQkkgLyA2NC1iaXQgY29tcHV0YXRpb24gbW9kZS4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IFNlbGVjdCByZWdfbW9kZSBhbmQgcmVnX3NpemUgdXNpbmcKCVRBUkdFVF8zMkJJVCwgbm90IFRBUkdFVF9QT1dFUlBDNjQuCgkocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogR2VuZXJhdGUgUEFSQUxMRUwgZm9yIERJbW9kZSBpbiAzMi1iaXQKCUFCSSAvIDY0LWJpdCBjb21wdXRhdGlvbiBtb2RlCgoyMDAzLTEwLTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChvdXRwdXRfZmlsZV9kaXJlY3RpdmUpOiBBbGxvdyBmb3IgbnVsbCBpbnB1dF9uYW1lLgoKMjAwMy0xMC0yMiAgV2FsZGVrIEhlYmlzY2ggPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoY2xhc3NpZnlfYXJndW1lbnQpOiBIYW5kbGUgU0VUX1RZUEUuCgoyMDAzLTEwLTIyICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlndXJlLmluOiBJbiAtLWVuYWJsZS1nZW5lcmF0ZWQtZmlsZXMtaW4tc3JjZGlyIG9wdGlvbgoJaGFuZGxpbmcsIGZpeCBkZWZhdWx0IGNhc2UgaGFuZGxpbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMTAtMjIgIFBoaWwgRWR3YXJkcyAgPHBoaWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6ICBVcGRhdGUgKi0qLXZ4d29ya3MqIGdlbmVyaWMgaG9vayBhbmQgY29tbWVudHMuCgkoYXJtLXdycy12eHdvcmtzLCBpWzQ1NjddODYtd3JzLXZ4d29ya3MsIG1pcHMtd3JzLXZ4d29ya3MsCgltaXBzLXdycy13aW5kaXNzLCBzaC13cnMtdnh3b3Jrcyk6ICBOZXcgc3Rhbnphcy4KCSogZ2VubXVsdGlsaWI6ICBBbGxvdyB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyB0byBiZSBtYXBwZWQgZGlyZWN0bHkuCgkqIGNvbmZpZy9zdnI0LmggKFNXSVRDSF9UQUtFU19BUkcpOiAgVW5kZWZpbmUgaXQgYmVmb3JlIHJlZGVmaW5pbmcgaXQuCgkqIGNvbmZpZy93aW5kaXNzLmg6ICBOZXcgZmlsZS4KCSogY29uZmlnL2FybS90LXZ4d29ya3M6ICBOZXcgZmlsZS4KCSogY29uZmlnL2FybS92eHdvcmtzLmg6ICBOZXcgZmlsZS4KCSogY29uZmlnL2kzODYvdC12eHdvcmtzOiAgTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L3Z4d29ya3MuaDogIE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy90LXZ4d29ya3M6ICBOZXcgZmlsZS4KCSogY29uZmlnL21pcHMvdnh3b3Jrcy5oOiAgTmV3IGZpbGUuCgkqIGNvbmZpZy9taXBzL3dpbmRpc3MuaDogIE5ldyBmaWxlLgoJKiBjb25maWcvc2gvdC12eHdvcmtzOiAgTmV3IGZpbGUuCgkqIGNvbmZpZy9zaC92eHdvcmtzLmg6ICBOZXcgZmlsZS4KCjIwMDMtMTAtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogUmVtb3ZlLgoJKGg4MzAwX3NhdmVhbGxfZnVuY3Rpb25fcCk6IE5ldy4KCShoODMwMF9pbnNlcnRfYXR0cmlidXRlcyk6IEluc2VydCB0aGUgc2F2ZWFsbCBhdHRyaWJ1dGUgaWYKCSNwcmFnbWEgc2F2ZWFsbCBpcyBzcGVjaWZpZWQuCgkoaDgzMDBfYXR0cmlidXRlX3RhYmxlKTogQWRkIHNhdmVhbGwuCgkoVEFSR0VUX0FTTV9GVU5DVElPTl9FUElMT0dVRSk6IFJlbW92ZS4KCSogZG9jL2V4dGVuZC50ZXhpOiBNZW50aW9uIHRoZSBzYXZlYWxsIGF0dHJpYnV0ZS4KCjIwMDMtMTAtMjIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy10eXBlY2suYyAocGVkYW50aWNfbHZhbHVlX3dhcm5pbmcpOiBVbmNvbmRpdGlvbmFsbHkgd2FybiBvZgoJZGVwcmVjYXRpb24gb2YgY2FzdHMgYXMgbHZhbHVlcy4KCSogZml4aW5jL2luY2xoYWNrLmRlZiAob2JzdGFja19sdmFsdWVfY2FzdCk6IE5ldyBmaXguCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgkqIGZpeGluYy90ZXN0cy9iYXNlL29ic3RhY2suaDogTmV3IHRlc3QuCgoyMDAzLTEwLTIyICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCVBSIHRhcmdldC8xMjY3NgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG91dHB1dF9hZGRzaTMpOiBGaXggcmFuZ2UgY2hlY2sgdG8gd29yayBvbgoJTFA2NCBwbGF0Zm9ybXMuCgoyMDAzLTEwLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2Fic3RyYWN0X2Z1bmN0aW9uKTogVXNlIERXX0FUIHRvIGNoZWNrCglwcmVzZW5jZSBvZiBEV19BVF9pbmxpbmUuCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogTGlrZXdpc2U7IGRvIG5vdCBhYm9ydCBpbnN0ZWFkIG9mIGVtaXR0aW5nCglEV19BVF9ub3RfaW5saW5lLgoKMjAwMy0xMC0yMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNncmFwaF9mdW5jdGlvbl9wb3NzaWJseV9pbmxpbmVkX3ApOiBCZSBjb25zZXJ2YXRpdmUgd2hlbgoJZ2xvYmFsIGluZm8gaXMgbm90IHJlYWR5LgoKMjAwMy0xMC0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9leHRlbmQudGV4aTogTWVudGlvbiBIOFMgd2hlcmV2ZXIgSDgvMzAwSCBpcyBtZW50aW9uZWQuCgoyMDAzLTEwLTIyICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibW92c3RyX3Nob3J0XzY0IiwgIm1vdnN0cl9zaG9ydF8zMSIpOiBNZXJnZSAuLi4KCSgiKm1vdnN0cl9zaG9ydCIpOiAuLi4gaW50byB0aGlzIGluc24gcGF0dGVybi4KCSgibW92c3RyX3Nob3J0Iik6IE5ldyBleHBhbmRlci4KCSgiKm1vdnN0cl9sb25nXzY0Iik6IFJlbmFtZSBmcm9tICJtb3ZzdHJfbG9uZ182NCIsIHNpbXBsaWZ5LgoJKCIqbW92c3RyX2xvbmdfMzEiKTogUmVuYW1lIGZyb20gIm1vdnN0cl9sb25nXzMxIiwgc2ltcGxpZnkuCgkoIm1vdnN0cl9sb25nIik6IE5ldyBleHBhbmRlci4KCSgiY2xyc3RyX3Nob3J0XzY0IiwgImNscnN0cl9zaG9ydF8zMSIpOiBNZXJnZSAuLi4KCSgiKmNscnN0cl9zaG9ydCIpOiAuLi4gaW50byB0aGlzIGluc24gcGF0dGVybi4KCSgiY2xyc3RyX3Nob3J0Iik6IE5ldyBleHBhbmRlci4KCSgiKmNscnN0cl9sb25nXzY0Iik6IFJlbmFtZSBmcm9tICJjbHJzdHJfbG9uZ182NCIsIHNpbXBsaWZ5LgoJKCIqY2xyc3RyX2xvbmdfMzEiKTogUmVuYW1lIGZyb20gImNscnN0cl9sb25nXzMxIiwgc2ltcGxpZnkuCgkoImNscnN0cl9sb25nIik6IE5ldyBleHBhbmRlci4KCSgiY21wbWVtX3Nob3J0XzY0IiwgImNtcG1lbV9zaG9ydF8zMSIpOiBNZXJnZSAuLi4KCSgiKmNtcG1lbV9zaG9ydCIpOiAuLi4gaW50byB0aGlzIGluc24gcGF0dGVybi4KCSgiY21wbWVtX3Nob3J0Iik6IE5ldyBleHBhbmRlci4KCSgiKmNtcG1lbV9sb25nXzY0Iik6IFJlbmFtZSBmcm9tICJjbXBtZW1fbG9uZ182NCIuCgkoIipjbXBtZW1fbG9uZ18zMSIpOiBSZW5hbWUgZnJvbSAiY21wbWVtX2xvbmdfMzEiLgoJKCJjbXBtZW1fbG9uZyIpOiBOZXcgZXhwYW5kZXIuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9leHBhbmRfbW92c3RyKTogVXNlIG5ldyBleHBhbmRlcnMuCgkoczM5MF9leHBhbmRfY2xyc3RyKTogTGlrZXdpc2UuCgkoczM5MF9leHBhbmRfY21wbWVtKTogTGlrZXdpc2UuCgoyMDAzLTEwLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1wY2guYyAoc3RydWN0IGNfcGNoX3ZhbGlkaXR5KTogQWRkIHBjaF9pbml0IGZpZWxkLgoJKHBjaF9pbml0KTogU2V0IGl0LgoJKGNfY29tbW9uX3ZhbGlkX3BjaCk6IENoZWNrIGl0LgoKMjAwMy0xMC0yMiAgRGF2aWQgVGF5bG9yIDxkdGF5bG9yQGVtYy5jb20+CgoJUFIgZGVidWcvMTI1MDAKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlZGVmcyk6IFVzZSBDT01QTEVURV9PUl9WT0lEX1RZUEVfUC4KCjIwMDMtMTAtMjIgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoZnVuY3Rpb25fdmFsdWUgW0VOQUJMRV9DSEVDS0lOR10pOiBEb24ndCBjYWxsCglhbHBoYV9yZXR1cm5faW5fbWVtb3J5IGlmIG5vIFZBTFRZUEUgc3BlY2lmaWVkLgoKMjAwMy0xMC0yMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGRlYnVnLzEyMzg5CgkqIE1ha2VmaWxlLmluIChkd2FyZjJvdXQubyk6IERlcGVuZCBvbiBjZ3JhcGguaC4KCSogY2dyYXBoLmMgKGNncmFwaF9mdW5jdGlvbl9wb3NzaWJseV9pbmxpbmVkX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNncmFwaC5oIChjZ3JhcGhfZnVuY3Rpb25fcG9zc2libHlfaW5saW5lZF9wKTogRGVjbGFyZS4KCShjZ3JhcGhfZ2xvYmFsX2luZm8pOiBBZGQgZmxhZyBpbmxpbmVkCgkqIGR3YXJmMm91dC5jIChnZW5fc3VicHJvZ3JhbV9kaWUsIGdlbl9kZWNsX2RpZSk6IFVzZQoJY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2luZGVkX3AKCSogY2dyYXBodW5pdC5jIChtYXJrX2lubGluZSk6IFNldCBpbmxpbmVkIGZsYWcuCgkqIHRvcGxldi5jIChyZXN0X29mX2RlY2xfY29tcGlsYXRpb24pOiBDYWxsIG91dGxpbmluZ19pbmxpbmVfZnVuY3Rpb24KCW9ubHkgZm9yIHBvc3NpYmx5IGlubGluZWQgZnVuY3Rpb25zLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTmV2ZXIgb3V0cHV0IGFic3RyYWN0IERJRSByZXByZXNlbnRpbmcgb2xkCglib2R5IG9mIGZ1bmN0aW9uLgoKMjAwMy0xMC0yMiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0cnVjdG9yKTogTWFrZSBjb25zdHJ1Y3RvciBhbm5vdGF0aW9uCgljb25kaXRpb25hbCBvbiBBU01fQ09NTUVOVF9TVEFSVC4KCjIwMDMtMTAtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS5jIChnZXRfdW53aWRlbmVkKTogQ2hlY2sgVFJFRV9VTlNJR05FRCBvbiB0aGUgZmllbGQncyB0eXBlLgoJKGdldF9uYXJyb3dlcik6IExpa2V3aXNlLgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBEbyBwYWNrZWQgZmllbGQgYWxpZ25tZW50IGZvcgoJYml0LWZpZWxkcywgdG9vLgoKMjAwMy0xMC0yMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGNvbnZlcnRfbW92ZSk6IFVzZSBGTE9BVF9FWFRFTkQgZm9yIGV4dGVuc2lvbnMuCgoyMDAzLTEwLTIxICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGMtcGNoLmM6IEFkZCBjb21tZW50cyBpbiB2YXJpb3VzIHBsYWNlcy4KCShzdHJ1Y3QgY19wY2hfdmFsaWRpdHkpOiBBZGQgdGhlIGxlbmd0aHMgb2YgdmFyaW91cyBzdHJpbmdzLgoJKGhvc3RfbWFjaGluZSk6IE5ldyBzdGF0aWMuCgkodGFyZ2V0X21hY2hpbmUpOiBOZXcgc3RhdGljLgoJKGdldF9pZGVudCk6IEJ1bXAgdmVyc2lvbiBudW1iZXIuCgkocGNoX2luaXQpOiBXcml0ZSBvdXQgdmVyc2lvbiwgaG9zdCwgdGFyZ2V0IHZhbGlkaXR5IGRhdGEuCgkoY19jb21tb25fdmFsaWRfcGNoKTogQ2hlY2sgdmVyc2lvbiwgaG9zdCwgdGFyZ2V0LgoJKiBNYWtlZmlsZS5pbiAoYy1wY2gubyk6IEFkZCB2ZXJzaW9uLmg7IGRlZmluZSBIT1NUX01BQ0hJTkUgYW5kCglUQVJHRVRfTUFDSElORS4KCjIwMDMtMTAtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS5oIChJU19FWFBSX0NPREVfQ0xBU1MpOiBVc2Ugc3RyY2hyLgoJKEVYUFJfUCk6IE5ldyBtYWNyby4KCjIwMDMtMTAtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChjbXB4Y2hnX2FjcV9zaSk6IE1hcmsgb3BlcmFuZCAzIGFzIERJbW9kZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9mZXRjaF9hbmRfb3AsCglpYTY0X2V4cGFuZF9vcF9hbmRfZmV0Y2gpOiBNYWtlIHN1cmUgdGhlIFJFRyBmb3IgYXIuY2N2IGlzCglESW1vZGUuICAgVXNlIGNvbnZlcnRfbW92ZSB0byBsb2FkIGFyLmNjdi4KCShpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogTGlrZXdpc2UuCglJZiBleHBhbmRfZXhwciBkb2Vzbid0IHB1dCAnb2xkJyBhbmQgJ25ldycgaW4gdGhlIHByb3BlcgoJbW9kZXMsIHJ1biB0aGVtIHRocm91Z2ggY29udmVydF90b19tb2RlLgoKMjAwMy0xMC0yMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfYWRqdXN0X2ZpZWxkX2FsaWduKTogQ2hlY2sgREVDTF9BUlRJRklDSUFMCglmb3IgdG9vIGxhcmdlIGJpdGZpZWxkcy4KCjIwMDMtMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoJChkb2NvYmpkaXIpLyUuaW5mbyk6IEhvbm9yIEJVSUxEX0lORk8uCgoyMDAzLTEwLTIxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RydWN0b3IpOiBBbm5vdGF0ZSBjb25zdHJ1Y3Rvci4KCjIwMDMtMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoJChERVNURElSKSQoaW5mb2RpcikvJS5pbmZvKTogQ29uZGl0aW9uYWxpemUgY2htb2QKCW9uIGV4aXN0ZW5jZSBvZiBkZXN0aW5hdGlvbiBmaWxlLgoKMjAwMy0xMC0yMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaGFpZmEtc2NoZWQuYyAoY2hvb3NlX3JlYWR5KTogSW5pdGlhbGl6ZSBpbmRleC4KCjIwMDMtMTAtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS5jIChidWlsZDEpOiBGaXggb2ZmLWJ5LW9uZSBlcnJvci4KCjIwMDMtMTAtMjEgIFJvYmVydCBNaWxsYW4gIDxyb2JlcnRtaEBnbnUub3JnPgoKCSogY29uZmlnL2kzODYva2ZyZWVic2RnbnUuaDogTmV3LiBpMzg2LSota2ZyZWVic2QtZ251IGRlZmluaXRpb25zLgoJKiBjb25maWcva2ZyZWVic2RnbnUuaDogTmV3LiAqLSota2ZyZWVic2QtZ251IGRlZmluaXRpb25zLgoJKiBjb25maWcvdC1rZnJlZWJzZC1nbnU6IE5ldy4gKi0qLWtmcmVlYnNkLWdudSB0bWFrZV9maWxlLgoJKiBjb25maWcuZ2NjOiBBZGQgKi0qLWtmcmVlYnNkKi1nbnUgYW5kIGlbMzQ1NjddODYtKi1rZnJlZWJzZCotZ251LgoKMjAwMy0xMC0yMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIHdlYi5jOiBGaXggdmFyaW91cyBjb21tZW50cy4KCjIwMDMtMTAtMjAgIE5pY29sYXMgUGl0cmUgPG5pY29AY2FtLm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogU2V0IGFybV9jb25zdGFudF9saW1pdAoJdG8gMiBpbnN0ZWFkIG9mIDEgd2hlbiBvcHRpbWl6ZV9zaXplIGlzIHRydWUuICBHYXRoZXIgY29kZSBiYXNlZCBvbgoJb3B0aW1pemVfc2l6ZSB0b2dldGhlci4gIEFkZCBjb21tZW50IGFib3V0IFhTY2FsZSBsb2FkIGxhdGVuY3kuCgoyMDAzLTEwLTIxICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUmVtb3ZlCglvYnNvbGV0ZSBjb21tZW50cy4KCjIwMDMtMTAtMjAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogR2V0IHBhcnNlZGlyIGFuZCBkb2NvYmpkaXIgZnJvbSBjb25maWd1cmUuCgkqIGNvbmZpZ3VyZS5pbjogUmVjb2dvbml6ZSAtLWVuYWJsZS1nZW5lcmF0ZWQtZmlsZXMtaW4tc3JjZGlyLgoJUGFzcyBhbG9uZyBwYXJzZWRpciBhbmQgZG9jb2JqZGlyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IC0tZW5hYmxlLWdlbmVyYXRlZC1maWxlcy1pbi1zcmNkaXIuCgoyMDAzLTEwLTIwICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IERlZmluZSAkKGRvY2RpcikgYmVmb3JlIHRoZSBNYWtlLWxhbmcuaW4gZnJhZ21lbnRzIGFyZQoJaW5jbHVkZWQuCgoyMDAzLTEwLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGMtY29tbW9uLmMgKGV4cGFuZF90cmVlX2J1aWx0aW4pOiBFbnN1cmUgY3JlYWwgYW5kIGNpbWFnCglmdW5jdGlvbnMgZG8gbm90IHJldHVybiBsdmFsdWVzLgoKMjAwMy0xMC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYy8xMjU1MwoJKiB0cmVlLmMgKGJ1aWxkMSkgPEFERFJfRVhQUj46IFNldCBUUkVFX1NJREVfRUZGRUNUUwoJYXBwcm9wcmlhdGVseS4KCglQUiBjLzExNDQ2CgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogRml4IGFsaWdubWVudCBoYW5kbGluZy4KCjIwMDMtMTAtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEZXByZWNhdGUgY2FzdHMgYXMgbHZhbHVlcy4KCjIwMDMtMTAtMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRml4IHdlYml6ZXIgcGFzcyBvcmRlcmluZy4KCgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6ICBGaXggdGVzdCBkZWFsaW5nCgl3aXRoIGZ1bmN0aW9ucyBpbXBsaWNpdGx5IG1hZGUgaW5saW5lLgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkpOiAgTmV3IGZ1bmN0aW9uLgoJKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IFVzZSBpdC4KCShjZ3JhcGhfbWFya19pbmxpbmUpOiBBbGxvdyBpbmNybWVudGFsIGRlY2lzaW9ucwoJKiBpbnZva2UudGV4aSAobWF4LWlubGluZS1zbG9wZSwgbWluLWlubGluZS1pbnNucyk6IEtpbGwuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9JTkxJTkVfU0xPUEUsIFBBUkFNX01JTl9JTkxJTkVfSU5TTlMpOiBLaWxsLgoJKiB0cmVlLWlubGluZS5jIChsaW1pdHNfYWxsb3dfaW5saW5pbmcpOiBLaWxsLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IEFsd2F5cyB1c2UgdW5pdC1hdC1hLXRpbWUgcGF0aC4KCjIwMDMtMTAtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChocHV4MTFfc25wcmludGYpOiBOZXcgZWRpdC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3RkaW8uaDogQWRkIHRlc3QgZm9yIGhwdXgxMV9zbnByaW50Zi4KCjIwMDMtMTAtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1pbmZvKTogU2ltcGxpZnkuCgkoJChERVNURElSKSQoaW5mb2RpcikvJS5pbmZvKTogTmV3IHJ1bGUuCgkqIGNvbmZpZ3VyZS5pbiAodGFyZ2V0X2xpc3QpOiBSZW1vdmUgaW5zdGFsbC1pbmZvLgoJKiBkb2MvLmN2c2lnbm9yZSAoZ2NjLmluZm8qKTogUmVtb3ZlLgoJKGdjY2ludC5pbmZvKik6IExpa2V3aXNlLgoJKGdjY2luc3RhbGwuaW5mbyopOiBMaWtld2lzZS4KCShjcHAuaW5mbyopOiBMaWtld2lzZS4KCShjcHBpbnRlcm5hbHMuaW5mbyopOiBMaWtld2lzZS4KCSgqLmluZm8qKTogQWRkIGl0LgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogVXBkYXRlIGRlc2NyaXB0aW9uIG9mIGluc3RhbGwtaW5mby4KCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMuaW5zdGFsbC1pbmZvKTogUmVtb3ZlLgoKMjAwMy0xMC0yMCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy9saW51eC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9BQklPMzIuCglVc2UgaXQgaW4gX01JUFNfU0lNIGRlZmluaXRpb24uCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKTogTGlrZXdpc2UuCgoyMDAzLTEwLTIwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChwcmludF9yZWcpOiBBYm9ydCBpZiBSRUdOTyAoeCkgaXMgYQoJdmlydHVhbCByZWdpc3RlciwgYnV0IG9ubHkgaWYgZmlsZSA9PSBhc21fb3V0X2ZpbGUuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoSElfUkVHSVNURVJfTkFNRVMpOiBVc2UgImFyZ3AiLCBub3QgIiIsCglmb3IgQVJHX1BPSU5URVJfUkVHTlVNLgoKMjAwMy0xMC0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKHJlZ2lzdGVyZWRfYnVpbHRpbl90eXBlcyk6IE5ldyBzdGF0aWMuCgkoY19jb21tb25fdHlwZV9mb3JfbW9kZSk6IENvbnN1bHQgcmVnaXN0ZXJlZF9idWlsdGluX3R5cGVzLgoJKGNfcmVnaXN0ZXJfYnVpbHRpbl90eXBlKTogQWRkIHR5cGUgdG8gcmVnaXN0ZXJlZF9idWlsdGluX3R5cGVzLgoJKiBvcHRhYnMuYyAoaW5pdF9mbG9hdGluZ19saWJmdW5jcyk6IEluaXRpYWxpemUgbGliZnVuY3MgZm9yCglhbGwgTU9ERV9GTE9BVCBtb2Rlcywgbm90IGp1c3QgdGhlIG9uZXMgY29ycmVzcG9uZGluZyB0bwoJZmxvYXRfdHlwZV9ub2RlLCBkb3VibGVfdHlwZV9ub2RlLCBhbmQgbG9uZ19kb3VibGVfdHlwZV9ub2RlLgoKMjAwMy0xMC0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgbm9ybWFsX21lbW9yeV9vcGVyYW5kLgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IFJlbW92ZSBQUkVESUNBVEVfQ09ERVMgcHJvdG90eXBlcy4KCjIwMDMtMTAtMjAgIERvcml0IE5haXNobG9zICA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmg6IChyczYwMDBfc2NoZWRfaW5zZXJ0X25vcHMpOgoJc3VwcG9ydCBuZXcgZmxhZyAtbWluc2VydC1zY2hlZC1ub3BzLgoJKERFRkFVTFRfU0NIRURfRklOSVNIX05PUF9JTlNFUlRJT05fU0NIRU1FKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiAocnM2MDAwX3NjaGVkX2luc2VydF9ub3BzKToKCXN1cHBvcnQgbmV3IGZsYWcgLW1pbnNlcnQtc2NoZWQtbm9wcy4KCShpc19jcmFja2VkX2luc24sIGlzX21pY3JvY29kZWRfaW5zbik6IE5ldyBmdW5jdGlvbnMuCgkocnM2MDAwX3NjaGVkX2ZpbmlzaCk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfaXNzdWVfcmF0ZSk6IFJldHVybiA1IGZvciBwb3dlcjQuCgkoZ2V0X25leHRfYWN0aXZlX2luc24sIGluc25fdGVybWluYXRlc19ncm91cF9wKTogTmV3CglmdW5jdGlvbnMuCgkoaXNfY29zdGx5X2dyb3VwLCBmb3JjZV9uZXdfZ3JvdXApOiBOZXcgZnVuY3Rpb25zLgoJKHJlZGVmaW5lX2dyb3VwcywgcGFkX2dyb3Vwcyk6IE5ldyBmdW5jdGlvbnMuCgkocnM2MDAwX3ZhcmlhYmxlX2lzc3VlKTogVXNlIG5ldyBmdW5jdGlvbnMuCgkqIGRvYy9pbnZva2UudGV4aSAoLW1pbnNlcnQtc2NoZWQtbm9wcyk6IERvY3VtZW50IG5ldwoJb3B0aW9uLgoKMjAwMy0xMC0yMCAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAodHlwZSBhdHRyaWJ1dGUpOiBBZGQgbmV3IGluc24gdHlwZXMKCWZwYSwgZnBtX3BhY2ssIGZnbV9tdWwsIGZnbV9wZGlzdCwgYW5kIGZnbV9jbXAgZm9yIFZJUy4KCShwYXR0ZXJucyBlbWl0dGluZyBWSVMgaW5zbnMpOiBVc2UgdGhlbS4KCSogY29uZmlnL3NwYXJjL3VsdHJhMV8yLm1kOiBBZGQgVklTIHNjaGVkdWxpbmcgcnVsZXMuCgkqIGNvbmZpZy9zcGFyYy91bHRyYTMubWQ6IExpa2V3aXNlLgoKMjAwMy0xMC0yMCAgRmFsayBIdWVmZm5lciAgPGZhbGtAZGViaWFuLm9yZz4KCglQUiB0YXJnZXQvMTI2NTQKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfYnJhbmNoKTogRG9uJ3QgZG8KCWNvbXBhcmlzb24gYWdhaW5zdCBjb25zdGFudCBieSBhZGp1c3RpbmcgdGhlIGFyZ3VtZW50IGV4Y2VwdCBmb3IKCUVRIGFuZCBORS4KCjIwMDMtMTAtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgc3VwcG9ydCBmb3IgYXJtOTI2ZWpzLCBhcm0xMDI2ZWpzLCBhcm0xMTM2anMsCglhcm0xMTM2amZzLCBhbmQgYXJtdjZqLgoJKiBjb25maWcvYXJtL2FybS5jIChGTF9BUkNINkopOiBOZXcgbWFjcm8uCgkoRkxfVkZQVjIpOiBMaWtld2lzZS4KCShhbGxfY29yZXMpOiBBZGQgZW50cmllcyBmb3IgYXJtOTI2ZWpzLCBhcm0xMDI2ZWpzLCBhcm0xMTM2anMsCglhbmQgYXJtMTEzNmpmcy4KCShhbGxfYXJjaGl0ZWN0dXJlcyk6IEFkZCBlbnRyeSBmb3IgYXJtdjZqLgoJKGFybV9vdmVycmlkZV9vcHRpb25zKTogQWRkIGVudHJpZXMgZm9yIGFybTkyNmVqcywgYXJtMTAyNmVqcywKCWFybTExMzZqcywgYW5kIGFybTExMzZqZnMuCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9DUFVfYXJtOTI2ZWpfcyk6IE5ldyBtYWNyby4KCShUQVJHRVRfQ1BVX2FybTEwMjZlal9zKTogTGlrZXdpc2UuCgkoVEFSR0VUX0NQVV9hcm0xMTM2al9zKTogTGlrZXdpc2UuCgkoVEFSR0VUX0NQVV9hcm0xMTM2amZfcyk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyBBUk0gY29yZXMgYW5kIGFyY2hpdGVjdHVyZQoJdmFyaWFudHMuCgoyMDAzLTEwLTE5ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBNYWtlZmlsZS5pbiAodG9wbGV2Lm8pOiBBZGQgdmFsdWUtcHJvZi5oIGRlcGVuZGVuY3kuCgkodmFsdWUtcHJvZi5vKTogQWRkIFJFR1NfSCBkZXBlbmRlbmN5LgoJKiBjb21tb24ub3B0IChmcHJvZmlsZS12YWx1ZXMsIGZ2cHQpOiBOZXcuCgkqIGZsYWdzLmggKGZsYWdfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMpOiBEZWNsYXJlLgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIC1mcHJvZmlsZV92YWx1ZXMgYW5kCgktZnZwdC4KCSogcHJvZmlsZS5jIChicmFuY2hfcHJvYik6IERvbid0IHJlbW92ZSBkZWF0aCBub3RlcyBoZXJlLgoJKiB0aW1ldmFyLmRlZiAoVFZfVlBUKTogTmV3LgoJKiB2YWx1ZS1wcm9mLmM6IEluY2x1ZGUgcmVncy5oLgoJKGluc25fZGl2bW9kX3ZhbHVlc190b19wcm9maWxlLCBnZW5fZGl2bW9kX2ZpeGVkX3ZhbHVlLCBnZW5fbW9kX3BvdzIsCglnZW5fbW9kX3N1YnRyYWN0LCBkaXZtb2RfZml4ZWRfdmFsdWVfdHJhbnNmb3JtLG1vZF9wb3cyX3ZhbHVlX3RyYW5zZm9ybSwKCW1vZF9zdWJ0cmFjdF90cmFuc2Zvcm0sIHZhbHVlX3Byb2ZpbGVfdHJhbnNmb3JtYXRpb25zKTogTmV3LgoJKGluc25fdmFsdWVzX3RvX3Byb2ZpbGUpOiBDYWxsIGluc25fZGl2bW9kX3ZhbHVlc190b19wcm9maWxlLgoJKGZpbmRfdmFsdWVzX3RvX3Byb2ZpbGUpOiBBZGQgZHVtcHMuCgkqIHZhbHVlLXByb2YuaCAodmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYzogSW5jbHVkZSB2YWx1ZS1wcm9mLmguCgkocmVzdF9vZl9oYW5kbGVfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMpOiBOZXcuCgkoZW51bSBkdW1wX2ZpbGVfaW5kZXgpOiBBZGQgREZJX3ZwdC4KCShkdW1wX2ZpbGUpOiBBZGQgdnB0IGR1bXAuCgkoZmxhZ192YWx1ZV9wcm9maWxlX3RyYW5zZm9ybWF0aW9ucyk6IE5ldy4KCShsYW5nX2luZGVwZW5kZW50X29wdGlvbnMpOiBBZGQgZmxhZ19wcm9maWxlX3ZhbHVlcyBhbmQKCWZsYWdfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwKCXJlc3Rfb2ZfaGFuZGxlX3ZhbHVlX3Byb2ZpbGVfdHJhbnNmb3JtYXRpb25zLgoJKHByb2Nlc3Nfb3B0aW9ucyk6IExldCAtZnZwdCBpbXBseSAtZnByb2ZpbGUtdmFsdWVzLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mdnB0KTogRG9jdW1lbnQuCgoyMDAzLTEwLTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKHByaW50X3JlZyk6IERvIG5vdCBhYm9ydCBvbiBjZXJ0YWluIHJlZ2lzdGVycy4KCglQUiBvcHRpbWl6YXRpb24vMTI2MTIKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogIFVzZSBzdCgxKSBmb3IgY2xvYmJlcnMuCgkqIGkzODYubWQgKGZwYXRhbiwgZnlsMngsIGZzY2FsZSBwYXR0ZXJucyBhbmQgZXhwYW5kZXJzKTogVXNlCgltYXRjaF9zY3JhdGNoOyBhdm9pZCBib2d1cyBwYXJhbGxlcy4KCglQUiB0YXJnZXQvMTI2NzQKCSogaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX3JlZ3Bhcm0pOiBEaXNhYmxlIGltcGxpY2l0IHJlZ2lzdGVyIHBhc3NpbmcKCWNvbnZlbnRpb25zIHdoZW4gcHJvZmlsaW5nLgoKMjAwMy0xMC0xOSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi84MTc4CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCptb3ZzaV96ZXJvKTogRGVsZXRlLgoJKCpmZnNfbm9fY21vdmUpOiBVc2UgaXg4Nl9leHBhbmRfY2xlYXIgdG8gemVybyB0aGUgdGhpcmQgb3BlcmFuZC4KCjIwMDMtMTAtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoZml4X29wZXJhdG9yKTogTmV3LgoJKGRpdm1vZF9vcGVyYXRvcik6IFRpZHkuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY3Z0KTogSGFuZGxlIFVOU0lHTkVEX0ZJWC4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKEZJWFVOU19UUlVOQ19MSUtFX0ZJWF9UUlVOQyk6IFJlbW92ZS4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoZml4X3RydW5jZGZzaV9pZWVlKTogVXNlIG1hdGNoX29wZXJhdG9yLgoJKGZpeF90cnVuY2Rmc2lfaW50ZXJuYWwsIGZpeF90cnVuY2RmZGlfaWVlZSk6IExpa2V3aXNlLgoJKGZpeF90cnVuY3Nmc2lfaWVlZSwgZml4X3RydW5jc2ZzaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGZpeF90cnVuY3NmZGlfaWVlZSk6IExpa2V3aXNlLgoJKGZpeF90cnVuY2RmZGkyLCBmaXhfdHJ1bmNzZmRpMik6IFR1cm4gaW50byBkZWZpbmVfZXhwYW5kLgoJKGZpeHVuc190cnVuY2RmZGkyLCBmaXh1bnNfdHJ1bmNzZmRpMiwgZml4dW5zX3RydW5jdGZkaTIpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogVXBkYXRlLgoKMjAwMy0xMC0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBTaW1wbGlmeS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2xvYWRfZ290KTogQXNzdW1lIFBtb2RlID09IHB0cl9tb2RlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChleHRlbmRzaWRpMiwgKmV4dGVuZHNpZGkyKTogTWVyZ2UuIERvbid0IGFjY2VwdAoJY29uc3RhbnQgb3BlcmFuZHMuCgoyMDAzLTEwLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2V4dGVuZC50ZXhpOiBGaXggdHlwb3MuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgoyMDAzLTEwLTE4ICBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBhcm1fdHVuZV94c2NhbGUgZm9yCglYU2NhbGUgb3B0aW1pemF0aW9ucyBub3QgYXJtX2FyY2hfeHNjYWxlLgoJKiBjb25maWcvYXJtL2FybS5oIChDT05TVEFOVF9BTElHTk1FTlRfRkFDVE9SLCBNT1ZFX1JBVElPKTogTGlrZXdpc2UuCgoyMDAzLTEwLTE4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzaGlmdF9jb3VudF9vcGVyYW5kKTogQWRkIHByb3RvdHlwZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzaGlmdF9jb3VudF9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfZXh0cmFfY29uc3RyYWludCk6IFVzZSBpdCB0byBpbXBsZW1lbnQgJ1knIGNvbnN0cmFpbnQuCgkocHJpbnRfc2hpZnRfY291bnRfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogVXNlIGl0IHRvIGltcGxlbWVudCAnJVknLgoJKiBjb25maWcvczM5MC9zMzkwLmggKEVYVFJBX0FERFJFU1NfQ09OU1RSQUlOVCk6IEFkZCAnWScgY29uc3RyYWludC4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgc2hpZnRfY291bnRfb3BlcmFuZC4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoInJvdGxkaTMiKTogTWVyZ2UgYWx0ZXJuYXRpdmVzLAoJdXNpbmcgInNoaWZ0X2NvdW50X29wZXJhbmQiIHByZWRpY2F0ZSBhbmQgIlkiIGNvbnN0cmFpbnQsCglhbmQgIiVZIiB0byBvdXRwdXQgdGhlIGNvbWJpbmVkIHNoaWZ0IGNvdW50LgoJKCJyb3Rsc2kzIik6IExpa2V3aXNlLgoJKCJhc2hsZGkzIiwgIiphc2hsZGkzXzMxIiwgIiphc2hsZGkzXzY0Iik6IExpa2V3aXNlLgoJKCJhc2hyZGkzIiwgIiphc2hyZGkzXzMxIiwgIiphc2hyZGkzXzY0IiwgIiphc2hyZGkzX2NjXzMxIiwKCSIqYXNocmRpM19jY182NCIsICIqYXNocmRpM19jY29ubHlfMzEiLCAiKmFzaHJkaTNfY2Nvbmx5XzY0Iik6IExpa2V3aXNlLgoJKCJhc2hsc2kzIiwgImFzaHJzaTMiLCAiKmFzaHJzaTNfY2MiLCAiKmFzaHJzaTNfY2Nvbmx5Iik6IExpa2V3aXNlLgoJKCJsc2hyZGkzIiwgIipsc2hyZGkzXzMxIiwgIipsc2hyZGkzXzY0Iik6IExpa2V3aXNlLgoJKCJsc2hyc2kzIik6IExpa2V3aXNlLgoKMjAwMy0xMC0xOCAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IEFkZCBtaXNzaW5nCglhcmd1bWVudCB0byBhc21fZnByaW50ZiBzdGF0ZW1lbnQuCgoyMDAzLTEwLTE4ICBGYXJpYm9yeiBKYWhhbmlhbiAgPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiByczYwMDAubWQ6IFNlcGFyYXRlIFRBUkdFVF9QT1dFUlBDNjQgcGF0dGVybnMgZm9yIFRBUkdFVF82NEJJVCBvciBUQVJHRVRfMzJCSVQuCgkoYXNocmRpc2kzX25vcHBjNjQpIEdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IGNvZGUgZm9yIDMyLWJpdCByaWdodC1zaGlmdCBvZgoJYSAibG9uZyBsb25nIiBhcmd1bWVudC4KCjIwMDMtMTAtMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogUnVuIEZJTkFMX1BSRVNDQU5fSU5TTlMgb24gYXNtIGluc25zCglhcyB3ZWxsLgoKMjAwMy0xMC0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogcnRsLmggKHJ0bF9zaXplKTogRGVjbGFyZS4KCShydHVuaW9uKTogUmVtb3ZlIHJ0d2ludC4KCShydHhfZGVmKTogUmVwbGFjZSAnZmxkJyB3aXRoIGEgdW5pb24gb2YgYW4gcnR1bmlvbiBvciBhIEhPU1RfV0lERV9JTlQuCgkoUlRYX0hEUl9TSVpFLCBSVFhfU0laRSk6IE5ldyBtYWNyb3MuCgkoUlRMX0NIRUNLMSk6IEFkanVzdCBmb3IgbmV3IHJ0eF9kZWYgbGF5b3V0LgoJKFJUTF9DSEVDSzIsIFJUTF9DSEVDS0MxLCBSVExfQ0hFQ0tDMik6IExpa2V3aXNlLgoJKFhXSU5ULCBYQ1dJTlQpOiBMaWtld2lzZS4gIEFjY2VzcyB0aGUgcnR4IHN0cnVjdHVyZSBkaXJlY3RseS4KCShYMFdJTlQpOiBSZW1vdmUuCgkoWDBBTlkpOiBOZXcgbWFjcm8uCgkqIHJ0bC5kZWY6IEFkanVzdCBjb21tZW50cyBmb3IgbmV3IHJ0eF9kZWYgbGF5b3V0LgoJKiBnZ2MuaCAoZ2djX2FsbG9jX3J0eCk6IFRha2UgdGhlIHJ0eCBjb2RlIGFzIGFyZ3VtZW50LCBub3QgdGhlCgludW1iZXIgb2Ygc2xvdHMuCgkqIHJ0bC5jIChydHhfc2l6ZSk6IE5ldyBhcnJheS4KCShydHhfYWxsb2MpOiBBZGp1c3QgY2FsbCB0byBnZ2NfYWxsb2NfcnR4LiAgVXNlIFJUWF9IRFJfU0laRS4KCShjb3B5X3J0eCk6IFVzZSBSVFhfSERSX1NJWkUuICBBZGp1c3QgZm9yIG5ldyBydHhfZGVmIGxheW91dC4KCShzaGFsbG93X2NvcHlfcnR4KTogQWRqdXN0IGNhbGwgdG8gZ2djX2FsbG9jX3J0eC4gIFVzZSBSVFhfU0laRS4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogVXNlIFgwQU5ZIHRvIGNvcHkgJzAnIGZpZWxkcy4KCSogZW1pdC1ydGwuYyAoY29weV9tb3N0X3J0eCk6IExpa2V3aXNlLgoJKGNvcHlfcnR4X2lmX3NoYXJlZCk6IFVzZSBSVFhfU0laRS4KCShjb3B5X2luc25fMSk6IFVzZSBSVFhfSERSX1NJWkUuICBBZGp1c3QgZm9yIG5ldyBydHhfZGVmIGxheW91dC4KCSogZ2VuZ2VucnRsLmMgKGdlbmRlZik6IEFkanVzdCBnZ2NfYWxsb2NfcnR4IGNhbGwuICBVc2UgUlRYX0hEUl9TSVpFLgoJKiBnZW5ndHlwZS5jICh3cml0ZV9ydHhfbmV4dCk6IFVzZSBSVFhfSERSX1NJWkUuCgkoYWRqdXN0X2ZpZWxkX3J0eF9kZWYpOiBFeHBlY3QgInJ0eF9kZWYiIHRvIGJlIGEgdW5pb24gcmF0aGVyIHRoYW4KCWFuIGFycmF5LiAgQWRqdXN0IG91dHB1dCBmb3IgbmV3IHJ0eF9kZWYgbGF5b3V0LgoJKiBnZ2MtcGFnZS5jIChSVExfU0laRSk6IFVzZSBSVFhfSERSX1NJWkUuCgkqIHJlbG9hZDEuYyAoZWxpbWluYXRlX3JlZ3MpOiBVc2UgUlRYX1NJWkUuCgkqIHJ0bGFuYWwuYyAobG9jX21lbnRpb25lZF9pbl9wKTogQWRqdXN0IGZvciBuZXcgcnR4X2RlZiBsYXlvdXQuCgkqIGdkYmluaXQuaW4gKHBpKTogTGlrZXdpc2UuCgoyMDAzLTEwLTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9kZWNsX2Zvcl9pbmxpbmluZyk6IFJldmVydCBwcmV2aW91cyBwYXRjaC4KCjIwMDMtMTAtMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogRml4IGNvcHlpbmcgb2YgY29waWVzLgoKMjAwMy0xMC0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBsaWJnY2MudGV4aTogR3JvdXAgbXVsdGktd29yZCB0eXBlcywgc3VjaCBhcyAibG9uZyBkb3VibGUiIGFuZAoJInVuc2lnbmVkIGludCIsIHVzaW5nIGJyYWNlcyBpbiBAZGVmdHlwZWZuIGFuZCBAZGVmdHlwZWZueCBub2Rlcy4KCURvY3VtZW50IF9fdW5vcmQ/ZjIgYXMgcmV0dXJuaW5nIGEgbm9uLXplcm8gdmFsdWUsIG5vdCBqdXN0IG9uZS4KCjIwMDMtMTAtMTggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNvbmZpZy9tbWl4L3QtbW1peCAoQ1JUU1RVRkZfVF9DRkxBR1MpOiBEZWZpbmUuCgkoJChUKWNydGkubywgJChUKWNydG4ubyk6IFBhc3MgQ1JUU1RVRkZfVF9DRkxBR1MgaGVyZSB0b28uCgoyMDAzLTEwLTE4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL2kzODYvazYubWQgKGs2X2FsdXgpOiBVc2UgdGhlICdtb2RlJyBhdHRyaWJ1dGUgaW5zdGVhZCBvZgoJbWF0Y2hfb3BlcmFuZC4KCjIwMDMtMTAtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8xKTogTmV3IGZvdXJ0aAoJcGFyYW1ldGVyIHBhY2tlZF9wLiAgU2VhcmNoIGZvciBhIERFQ0xfUEFDS0VEIGZpZWxkIG9ubHkgaWYKCXBhY2tlZF9wIGlzIGZhbHNlLiAgUGFzcyBwYWNrZWRfcCByZWN1cnNpdmVseS4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzIpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlKTogVXBkYXRlIGNhbGxzIHRvCglmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzEgYW5kIGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMi4KCjIwMDMtMTAtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjc2UuYyAoY3NlX2luc24pIFtzcmNfZm9sZGVkXTogQ2hlY2sgdGhhdCB0aGUgdGVudGF0aXZlIHJlcGxhY2VtZW50Cgl3YXMgc3VjY2Vzc2Z1bGx5IGZvcmNlZCB0byBtZW1vcnkgYmVmb3JlIHVzaW5nIHRoZSByZXN1bHQuCgoyMDAzLTEwLTE4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi84MTc4CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCptb3ZzaV96ZXJvKTogTmV3IGluc24gdG8gc2V0CglhIHJlZ2lzdGVyIHRvIHplcm8gb24gVEFSR0VUX1VTRV9NT1YwIHRhcmdldHMuCgoyMDAzLTEwLTE4ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKE1ha2VmaWxlKTogRGVwZW5kIG9uIHRoZSBhbGwgTWFrZS1sYW5nLmluIGZyYWdtZW50cy4KCShQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MpOiBQYXNzIGRvd24gTUFLRUlORk8gYW5kIE1BS0VJTkZPRkxBR1MuCgoyMDAzLTEwLTE3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBkb2MvaW52b2tlLnRleGkgKGdjc2UtbGFzKTogRml4IHR5cG8uCgoyMDAzLTEwLTE3ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFJlbW92ZSBmaXJzdCBwYXJ0IG9mIHRoZSBzZW50ZW5jZSBmb3IKCXpzaCBub3Qgd29ya2luZy4gIENoYW5nZSBnY2MgdG8gR0NDLgoKCVBSIGJvb3RzdHJhcC8xMjU0NgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCB0aGF0IHpzaCBkb2VzIG5vdCB3b3JrIHdoZW4KCWNvbmZpZ3VyaW5nIGdjYy4KCjIwMDMtMTAtMTcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3B0eDQuaDogU3dpdGNoIHRvIERXQVJGIDI7IHVwZGF0ZSBjb21tZW50cy4KCjIwMDMtMTAtMTcgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPGJvZXNzZW5AZGUuaWJtLmNvbT4KCSAgICBIYXJ0bXV0IFBlbm5lciAgPGhwZW5uZXJAZGUuaWJtLmNvbT4KCglQUiAxMDQwNCwgcGFydGlhbCAxMTU5MSwgcGFydGlhbCAxMTYwMQoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKCJhbHRpdmVjX2RzdCIsICJhbHRpdmVjX2RzdHQiLAoJImFsdGl2ZWNfZHN0c3QiLCAiYWx0aXZlY19kc3RzdHQiLCAiYWx0aXZlY19sdnNsIiwgImFsdGl2ZWNfbHZzciIsCgkiYWx0aXZlY19sdmVieCIsICJhbHRpdmVjX2x2ZWh4IiwgImFsdGl2ZWNfbHZld3giLCAiYWx0aXZlY19sdnhsIiwKCSJhbHRpdmVjX2x2eCIsICJhbHRpdmVjX3N0dngiLCAiYWx0aXZlY19zdHZ4bCIsICJhbHRpdmVjX3N0dmVieCIsCgkiYWx0aXZlY19zdHZlaHgiLCAiYWx0aXZlY19zdHZld3giKTogVXNlIGEgbWVtb3J5X29wZXJhbmQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGFsdGl2ZWNfZXhwYW5kX2x2X2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkoYWx0aXZlY19leHBhbmRfc3R2X2J1aWx0aW4pOiBBZGp1c3QgZm9yIHRoZSBtZW1vcnlfb3BlcmFuZC4KCShhbHRpdmVjX2V4cGFuZF9idWlsdGluKTogQ2FsbCBhbHRpdmVjX2V4cGFuZF9sdl9idWlsdGluLgoJKGFsdGl2ZWNfaW5pdF9idWlsdGlucyk6IFVzZSBgbG9uZyBpbnQnIGZvciBtZW1vcnkgb2Zmc2V0cy4KCjIwMDMtMTAtMTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG9wdHMuYyAgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIE9QVF9md2ViCgkqIGludm9rZS50ZXhpICgtZndlYik6IEFkZCBtaXNzaW5nIHBhcnRzIG9mIGRvY3VtZW50YXRpb24uCgoyMDAzLTEwLTE3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKEZVTkNUSU9OX05BTUVfQUxSRUFEWV9ERUNMQVJFRCk6IFVuZGVmCgliZWZvcmUgcmVkZWZpbml0aW9uLgoKMjAwMy0xMC0xNyAgTW9zdGFmYSBIYWdvZyAgPG11c3RhZmFAaWwuaWJtLmNvbT4KCgkqIGNvbW1vbi5vcHQ6IEFkZCBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3IC1mZ2NzZS1sYXMgZmxhZy4KCSogZmxhZ3MuaCAoZmxhZ19nY3NlX2xhcyk6IERlY2xhcmF0aW9uIG9mIGdsb2JhbCBmbGFnX2djc2VfbGFzLgoJKiBnY3NlLmMgKGhhc2hfc2Nhbl9zZXQpOiBIYW5kbGUgdGhlIGNhc2Ugb2Ygc3RvcmUgZXhwcmVzc2lvbiBhbmQKCWluc2VydCB0aGUgbWVtb3J5IGV4cHJlc3Npb24gdG8gdGhlIGhhc2ggdGFibGUsIHRoaXMgd2F5IHdlIG1ha2UgaXQKCXBvc3NpYmxlIHRvIGRpc2NvdmVyIHJlZHVuZGFudCBsb2FkcyBhZnRlciBzdG9yZXMgYW5kIHJlbW92ZSB0aGVtLgoJKHByZV9pbnNlcnRfY29weV9pbnNuKTogbW92ZWQgdGhlIGNhbGwgdG8gdXBkYXRlX2xkX21vdGlvbl9zdG9yZXMsCgl0byBwcmVfaW5zZXJ0X2NvcGllcywgaXQgaXMgbm90IHRoZSBjb3JyZWN0IHBsYWNlIHRvIGNhbGwgaXQgYWZ0ZXIKCWFkZGluZyBzdG9yZXMgdG8gYmUgaW4gdGhlIGF2YWlsYWJsZSBleHByZXNzaW9uIGhhc2ggdGFibGUuCgkocHJlX2luc2VydF9jb3BpZXMpOiBBZGRlZCB0aGUgY2FsbCB0byB1cGRhdGVfbGRfbW90aW9uX3N0b3JlcyB3aGVuCglvbmUgb3IgbW9yZSBjb3BpZXMgd2VyZSBpbnNlcnRlZC4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSB0aGUgLWZnY3NlLWxhcyBmbGFnLgoJKiB0b3BsZXYuYyAoZmxhZ19nY3NlX2xhcyk6IEluaXRpYWxpemF0aW9uIG9mIGZsYWdfZ2NzZV9sYXMuCgoJKiBkb2MvaW52b2tlLnRleDogRG9jdW1lbnQgbmV3IC1mZ2NzZS1sYXMgZmxhZy4KCjIwMDMtMTAtMTggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL2NydHNhdnJlcy5hc206IENvcnJlY3QgYWxpZ25tZW50IG9mIHBvd2VycGM2NCBjb2RlCglmb3IgcG9zdGVyaXR5LCB0aGVuIHJlbW92ZSBpdC4KCjIwMDMtMTAtMTcgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgkgICAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHVzZV9yZXR1cm5faW5zbik6IE5vdCBhIHNpbmdsZSBpbnN0cnVjdGlvbiwgaWYKCXRoZXJlJ3MgYSBmcmFtZSBwb2ludGVyLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBQcm90ZWN0IHN0YWNrIHBvaW50ZXIgZnJvbSBiZWluZyBjb3JydXB0ZWQKCW9uIGludGVycnVwdC4KCjIwMDMtMTAtMTcgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfdHJ5X2FkZGNjKTogSGFuZGxlIGlmcyB3aXRoICdlbHNlJyBjYXNlLgoKMjAwMy0xMC0xNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zZXQpOiBEbyBub3QgY2xlYXIgb3V0IHVuZG9idWYub3RoZXJfaW5zbgoJYWxyZWFkeSBzZXQgZWxzZXdoZXJlLgoKMjAwMy0xMC0xNyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiAgVXNlCglnZW5fYWxsb2NhdGVfc3RhY2tfd29ya2VyLgoKMjAwMy0xMC0xNyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcuZ2NjIChtaXBzLXNnaS1pcml4NipvMzIpOiBPbmx5IGVuYWJsZSB1c2VfY29sbGVjdDIKCXdpdGhvdXQgZ2FzLgoJKG1pcHMtc2dpLWlyaXg2Kik6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvaXJpczZnYXMuaDogTmV3IGZpbGUuCgkqIGdjYy9jb25maWcuZ2NjIChtaXBzLXNnaS1pcml4NiopOiBVc2UgaXQuCgoJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9JUklYKTogUHJvdmlkZSBkZWZhdWx0LgoJKFRBUkdFVF9JUklYNSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TR0lfTzMyX0FTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKFRBUkdFVF9JUklYKTogUmVkZWZpbmUgYXMgMS4KCShUQVJHRVRfSVJJWDUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvaXJpczYuaCAoVEFSR0VUX0lSSVg2KTogUmVtb3ZlLgoJKFRBUkdFVF9JUklYNSk6IFJlZGVmaW5lIGFzIDAuCgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2V4dGVybmFsKTogVGVzdCBmb3IgSVJJWCA2IE8zMgoJbGlua2VyIHdvcmthcm91bmQgd2l0aCBUQVJHRVRfSVJJWCBhbmQgbWlwc19hYmkgaW5zdGVhZCBvZgoJQVNNX09VVFBVVF9VTkRFRl9GVU5DVElPTi4KCShtaXBzX2ZpbGVfZW5kKTogSW5saW5lIG9sZCBBU01fT1VUUFVUX1VOREVGX0ZVTkNUSU9OIGRlZmluaXRpb24sCgl0ZXN0aW5nIFRBUkdFVF9JUklYIGFuZCBtaXBzX2FiaSBleHBsaWNpdGx5LgoJKiBjb25maWcvbWlwcy9pcmlzNS5oIChBU01fT1VUUFVUX1VOREVGX0ZVTkNUSU9OKTogUmVtb3ZlLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChBU01fT1VUUFVUX1VOREVGX0ZVTkNUSU9OKTogUmVtb3ZlIHVuZGVmLgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChpcml4X291dHB1dF9leHRlcm5hbF9saWJjYWxsKTogUmVuYW1lZCBmcm9tCgltaXBzX291dHB1dF9leHRlcm5hbF9saWJjYWxsLgoJVXNlIG5ldyBUQVJHRVRfSVJJWCBpbiBndWFyZC4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAoaXJpeF9vdXRwdXRfZXh0ZXJuYWxfbGliY2FsbCk6IE1hdGNoCgl0aGlzLgoJKiBjb25maWcvbWlwcy9pcmlzNS5oIChUQVJHRVRfQVNNX0VYVEVSTkFMX0xJQkNBTEwpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9taXBzL2lyaXM1Z2FzLmggKEhBVkVfR0FTX1NIRl9NRVJHRSk6IFVwZGF0ZSBjb21tZW50LgoJRGVmaW5lIGFzIDAuCgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChGVU5DVElPTl9OQU1FX0FMUkVBRFlfREVDTEFSRUQpOiBEZWZpbmUKCWRlcGVuZGluZyBvbiBtaXBzX2FiaS4KCSogY29uZmlnL21pcHMvbGludXguaCAoRlVOQ1RJT05fTkFNRV9BTFJFQURZX0RFQ0xBUkVEKTogRGVmaW5lIGFzIDEuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBUZXN0CglGVU5DVElPTl9OQU1FX0FMUkVBRFlfREVDTEFSRUQgYXQgcnVudGltZS4KCShtaXBzX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX21pcHMxNl9mdW5jdGlvbl9zdHViKTogTGlrZXdpc2UuCgkoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZVTkNUSU9OX05BTUVfQUxSRUFEWV9ERUNMQVJFRCk6IFByb3ZpZGUKCWRlZmF1bHQuCgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChEV0FSRjJfVU5XSU5EX0lORk8pOiBEb24ndCBkZWZpbmUgZm9yIG5hdGl2ZQoJSVJJWCA2IE8zMiBhc3NlbWJsZXIuCgkoU1VCVEFSR0VUX0NDMV9TUEVDKTogRW5mb3JjZSBtaXBzMiBJU0Egd2l0aCBPMzIgQUJJLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX0FCSU8zMiwgdXNlIGl0IHRvIGRlZmluZQoJX01JUFNfU0lNIGZvciBPMzIgQUJJLgoJKERXQVJGMl9GUkFNRV9JTkZPKTogRG9uJ3QgZGVmaW5lIGZvciBuYXRpdmUgSVJJWCA2IE8zMiBhc3NlbWJsZXIuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IEludGVncmF0ZSBtaXBzLmggdmVyc2lvbi4KCShBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogTW92ZSB1bmRlZiBiZWZvcmUgcmVkZWZpbml0aW9uLgoJSW50ZWdyYXRlIE8zMiB2ZXJzaW9uLgoJKFNVQlRBUkdFVF9BU01fU1BFQyk6IEhhbmRsZSAtbWFiaT0zMi4KCShTVUJUQVJHRVRfQVNNX0RFQlVHR0lOR19TUEVDKTogQWRkIG1kZWJ1Z19hc21fc3BlYyBmb3IgZ2FzIHdpdGgKCU8zMiBBQkkuCgkoQlNTX1NFQ1RJT05fQVNNX09QXzMyKTogRGVmaW5lLgoJKEJTU19TRUNUSU9OX0FTTV9PUF82NCk6IExpa2V3aXNlLgoJKEJTU19TRUNUSU9OX0FTTV9PUCk6IERlZmluZSBkaWZmZXJlbnRseSBmb3IgTzMyIGFuZCBOMzIvTjY0IEFCSXMKCXVzaW5nIHRoZW0uCgkoVEFSR0VUX0FTTV9OQU1FRF9TRUNUSU9OKTogUmVmbGVjdCByZW5hbWluZy4KCU1vdmUgdXAgdG8gYWxsb3cgb3ZlcnJpZGUgZm9yIE8zMiBBQkkgd2l0aG91dCBHTlUgYXMuCgkoRUhfRlJBTUVfU0VDVElPTl9OQU1FKTogRGVmaW5lIGV4cGxpY2l0bHkuCgkoTVVTVF9VU0VfU0pMSl9FWENFUFRJT05TKTogRGVmaW5lLgoJW19NSVBTX1NJTSA9PSBfQUJJTzMyICYmICFHQVNdIChDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QKTogRHVtbXkgZGVmaW5pdGlvbnMuCgkoVEFSR0VUX0FTTV9OQU1FRF9TRUNUSU9OKTogVW5kZWYgc3RhdGljYWxseS4KCShFSF9GUkFNRV9TRUNUSU9OX05BTUUpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0ZJTEVOQU1FKTogSW50ZWdyYXRlIG1pcHMuaCB2ZXJzaW9uLgoJKExJTktfU1BFQyk6IE9ubHkgdXNlIGRlZmF1bHQgb3B0aW9ucyAtY2FsbF9zaGFyZWQgLW5vX3VucmVzb2x2ZWQKCXdpdGhvdXQgLXIuCglEb24ndCBwYXNzIC1pbml0LCAtZmluaSB3aXRoIC1tYWJpPTMyLgoJKENPTExFQ1RfUEFSU0VfRkxBRyk6IERlZmluZS4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoaXJpczZfYXNtX25hbWVkX3NlY3Rpb25fMSk6IENoYW5nZWQgZ3VhcmQgdG8KCVRBUkdFVF9JUklYLgoJUmVuYW1lZCB0byB1c2UgaXJpeF8gcHJlZml4LgoJKGlyaXM2X2FzbV9uYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgkoaXJpc19zZWN0aW9uX2FsaWduX2VudHJ5X2VxKTogTGlrZXdpc2UuCgkoaXJpc19zZWN0aW9uX2FsaWduX2VudHJ5X2hhc2gpOiBMaWtld2lzZS4KCShpcmlzNl9maWxlX3N0YXJ0KTogTGlrZXdpc2UuCgkoaXJpczZfc2VjdGlvbl9hbGlnbl8xKTogTGlrZXdpc2UuCgkoaXJpczZfZmlsZV9lbmQpOiBMaWtld2lzZS4KCShpcmlzNl9zZWN0aW9uX3R5cGVfZmxhZ3MpOiBMaWtld2lzZS4KCShpcmlzX3NlY3Rpb25fYWxpZ25faHRhYik6IExpa2V3aXNlLgoJKGlyaXNfb3JpZ19hc21fb3V0X2ZpbGUpOiBMaWtld2lzZS4KCVtUQVJHRVRfSVJJWF0gKFRBUkdFVF9BU01fRklMRV9TVEFSVCk6IFJlZmxlY3QgcmVuYW1lLgoJKFRBUkdFVF9BU01fRklMRV9FTkQpOiBMaWtld2lzZS4KCShUQVJHRVRfU0VDVElPTl9UWVBFX0ZMQUdTKTogTGlrZXdpc2UuCgoJKiBjb25maWcvbWlwcy9taXBzLmMgW1RBUkdFVF9JUklYNSAmJiAhVEFSR0VUX0lSSVg2XQoJKFRBUkdFVF9BU01fVU5BTElHTkVEX0hJX09QKTogVXNlIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb24gaW4KCW92ZXJyaWRlX29wdGlvbnMgaW5zdGVhZC4KCShUQVJHRVRfQVNNX1VOQUxJR05FRF9TSV9PUCk6IExpa2V3aXNlLgoJKFRBUkdFVF9BU01fVU5BTElHTkVEX0RJX09QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucykgW1VTRV9DT0xMRUNUMl06IFJlc3RvcmUKCWZsYWdfZ251X2xpbmtlciB0byBkZWZhdWx0cyB3aXRob3V0IFVTRV9DT0xMRUNUMiBmb3Igbm9uLUlSSVggTzMyCglhc3NlbWJsZXJzLgoJTGlrZXdpc2UgZm9yIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgaGFuZGxpbmcuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEhhbmRsZSBJUklYIE8zMiBhc3NlbWJsZXIgcXVpcmtzLgoJW1RBUkdFVF9JUklYXSAoaXJpeF9hc21fbmFtZWRfc2VjdGlvbik6IEhhbmRsZSBPMzIgQUJJIHdpdGggYW5kCgl3aXRob3V0IGdhcy4KCShtaXBzX2ZpbGVfc3RhcnQpOiBVc2UgbmV3IFRBUkdFVF9JUklYLgoJKG1pcHNfZGVjbGFyZV9vYmplY3RfbmFtZSk6IE5vIHNwZWNpYWwgcHJvY2Vzc2luZyBmb3IgSVJJWCBPMzIKCWFzc2VtYmxlci4KCShtaXBzX2ZpbmlzaF9kZWNsYXJlX29iamVjdCk6IExpa2V3aXNlLgoJKGlyaXhfYXNtX291dHB1dF9hbGlnbik6IFJlbmFtZWQgZnJvbSBpcmlzNl9hc21fb3V0cHV0X2FsaWduLgoJRG9uJ3QgcmVjb3JkIGFsaWdubWVudCBmb3IgTzMyIEFCSS4KCShpcml4X2ZpbGVfc3RhcnQpOiBSZW5hbWVkIGZyb20gaXJpczZfZmlsZV9zdGFydC4KCVJldHVybiBlYXJseSBmb3IgTzMyIEFCSS4KCShpcml4X2ZpbGVfZW5kKTogUmVuYW1lZCBmcm9tIGlyaXM2X2ZpbGVfZW5kLgoJRG9uJ3QgZW1pdCAuc2VjdGlvbiBkaXJlY3RpdmVzIGZvciBPMzIgQUJJLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChBU01fT1VUUFVUX0FMSUdOKTogUmVmbGVjdCByZW5hbWluZy4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAoaXJpeF9hc21fb3V0cHV0X2FsaWduKTogTGlrZXdpc2UuCgoJKiBjb25maWcvbWlwcy90LWlyaXM2IChNVUxUSUxJQl9PUFRJT05TKTogQWRkIG1hYmk9MzIuCgkoTVVMVElMSUJfT1NESVJOQU1FUyk6IExpa2V3aXNlLgoKMjAwMy0xMC0xNyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb2xsZWN0Mi5jIChDT0xMRUNUX1BBUlNFX0ZMQUcpOiBQcm92aWRlIGRlZmF1bHQuCgkobWFpbik6IFVzZSBpdC4KCSogZG9jL3RtLnRleGkgKENPTExFQ1RfUEFSU0VfRkxBRyk6IERvY3VtZW50IGl0LgoKMjAwMy0xMC0xNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0tbW9kZXMuZGVmIChDQ19ObW9kZSk6IE5ldyBjb25kaXRpb24gY29kZSBtb2RlLgoJKiBhcm0uYyAodGh1bWJfY29uZGl0aW9uX2NvZGUpOiBEZWxldGUuCgkoYXJtX3NlbGVjdF9jY19tb2RlKTogSGFuZGxlIHNpbmdsZS1iaXQgdGVzdCBmb3IgVGh1bWIuCgkoYXJtX3ByaW50X29wZXJhbmQsIGNhc2VzICdkJyBhbmQgJ0QnKTogRG9uJ3Qgc3BlY2lhbCBjYXNlIHRoZQoJY29uZGl0aW9uIGNvZGUgbG9naWMgZm9yIFRodW1iLgoJKGdldF9hcm1fY29uZGl0aW9uX2NvZGUpOiBIYW5kbGUgQ0NfTm1vZGUuCgkodGh1bWJfY2JyY2hfdGFyZ2V0X29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkqIGFybS5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgdGh1bWJfY2JyY2hfdGFyZ2V0X29wZXJhbmQuCgkqIGFybS1wcm90b3MuaCAodGh1bWJfY2JyY2hfdGFyZ2V0X29wZXJhbmQpOiBBZGQgcHJvdG90eXBlLgoJKiBhcm0ubWQ6IEFkZCBUaHVtYiBzcGxpdCBwYXR0ZXJucyBmb3IgemVyb19leHRyYWN0IGFuZAoJc2lnbl9leHRyYWN0LgoJKHRiaXRfY2JyYW5jaCwgYW5kc2kzX2NicmFuY2hfc2NyYXRjaCwgYW5kc2kzX2NicmFuY2gpCgkob3Jyc2kzX2NicmFuY2hfc2NyYXRjaCwgb3Jyc2kzX2NicmFuY2gsIHhvcnNpM19jYnJhbmNoX3NjcmF0Y2gpCgkoeG9yc2kzX2NicmFuY2gsIGFkZHNpM19jYnJhbmNoLCBhZGRzaTNfY2JyYW5jaF9zY3JhdGNoKQoJKHN1YnNpM19jYnJhbmNoLCBzdWJzaTNfY2JyYW5jaF9zY3JhdGNoKTogTmV3IFRodW1iIHBhdHRlcm5zLgoJKGNicmFuY2huZV9kZWNyMSk6IFJlLXdvcmsgdG8gdXNlIENDX05tb2RlLgoKCSogYXJtLmMgKHRodW1iX2V4cGFuZF9lcGlsb2d1ZSk6IEFkZCBjbG9iYmVycyBvZiByZWdpc3RlcnMgcmVzdG9yZWQKCWJ5IHRoZSByZXR1cm4gaW5zdHJ1Y3Rpb24uICBBZGQgYSB1c2Ugb2YgdGhlIGxpbmsgcmVnaXN0ZXIgaWYgaXQKCXdhc24ndCBzdG9yZWQuCgoyMDAzLTEwLTE3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGZsb3cuYyAoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IERvbid0IGFib3J0IGlmIGEgY29uZGl0aW9uYWwKCWp1bXAgaXMgbm90IGEgY29tcGFyaXNvbiBvZiBhIHJlZ2lzdGVyLiAgSW5zdGVhZCwganVzdCBkb24ndCByZWNvcmQKCWNvbmRpdGlvbmFsIGxpZmUgaW5mb3JtYXRpb24uCgoyMDAzLTEwLTE2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgb3B0aW1pemF0aW9uLzEyNjMwCgkqIHBhLm1kIChtb3ZzdHJzaSwgbW92c3Ryc2lfaW50ZXJuYWwpOiBVc2UgbWF0Y2hfc2NyYXRjaCBpbiBjbG9iYmVycwoJZm9yIG9wZXJhbmRzIDcgYW5kIDguCgoyMDAzLTEwLTE2ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMtcGFyc2Uubyk6IEhvbm9yICQocGFyc2VkaXIpIGZvciBvYmpjLXBhcnNlLmMuCgoyMDAzLTEwLTE2ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTKTogRGVmaW5lLgoKCSogY29uZmlnL2kzODYvd2lubnQuYyAoZ2VuX3N0ZGNhbGxfc3VmZml4KTogTWFrZSBzdGF0aWMKCShnZW5fZmFzdGNhbGxfc3VmZml4KTogTGlrZXdpc2UuCgkoaTM4Nl9wZV9kbGxleHBvcnRfcCk6IExpa2V3aXNlLgoJKGkzODZfcGVfZGxsaW1wb3J0X3ApOiBMaWtld2lzZS4KCShpMzg2X3BlX21hcmtfZGxsZXhwb3J0KTogTGlrZXdpc2UuCgkoaTM4Nl9wZV9tYXJrX2RsbGltcG9ydCk6IExpa2V3aXNlLgoJKGkzODZfcGVfYXNtX25hbWVkX3NlY3Rpb24pOiBGaXggZm9ybWF0dGluZy4KCjIwMDMtMTAtMTYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCBzbnByaW50ZiB0byBnY2NfQUNfQ0hFQ0tfREVDTFMgbGlzdC4KCSogc3lzdGVtLmg6IERlY2xhcmUgc25wcmludGYgaWYgbmVjZXNzYXJ5LgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCjIwMDMtMTAtMTUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92YV9hcmcpOiBPbmx5IGFsaWduIHZlY3RvcgoJYXJndW1lbnRzIGlmIFRBUkdFVF9BTFRJVkVDX0FCSS4KCjIwMDMtMTAtMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX21lbWNweSwgZm9sZF9idWlsdGluX21lbXBjcHksCglmb2xkX2J1aWx0aW5fbWVtbW92ZSwgZm9sZF9idWlsdGluX3N0cmNweSwgZm9sZF9idWlsdGluX3N0cm5jcHksCglmb2xkX2J1aWx0aW5fbWVtY21wLCBmb2xkX2J1aWx0aW5fc3RyY21wLCBmb2xkX2J1aWx0aW5fc3RybmNtcCk6CglOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9idWlsdGluX21lbWNweSk6IFVzZSBpbnRlZ2VyX3plcm9wIGluc3RlYWQgb2YgdGVzdGluZwoJaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0IGRpcmVjdGx5LiAgTW92ZSBtaXNhcHBsaWVkIGh1bmsKCWZvciBvcHRpbWl6YXRpb24gd2hlciBTUkMgYW5kIERFU1QgcG9pbnQgdG8gdGhlIHNhbWUgbG9jYXRpb24uCgkoZXhwYW5kX2J1aWx0aW5fbWVtcGNweSk6IEZyb20gaGVyZS4KCShleHBhbmRfYnVpbHRpbl9tZW1tb3ZlKTogVXNlIGludGVnZXJfemVyb3AgaW5zdGVhZCBvZiB0ZXN0aW5nCglob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3RfZGlyZWN0bHkuCgkoZXhwYW5kX2J1aWx0aW5fbWVtc2V0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY21wKTogTGlrZXdpc2UgKGFuZCBmb3IgaW50ZWdlcl9vbmVwKS4KCShleHBhbmRfYnVpbHRpbl9zdHJuY21wKTogTGlrZXdpc2UuCgkoZm9sZF9idWlsdGluKTogQ2FsbCB0aGUgYXBwcm9wcmlhdGUgZm9sZF9idWlsdGluX2ZvbyBmdW5jdGlvbnMKCXRvIG9wdGltaXplIG1lbWNweSwgbWVtcGNweSwgbWVtbW92ZSwgc3RyY3B5LCBzdHJuY3B5LCBtZW1jbXAsCglzdHJjbXAgYW5kIHN0cm5jbXAuCgoyMDAzLTEwLTE1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmggKG1hY2hvcGljX25vbl9sYXp5X3B0cl9uYW1lKTogRGVsZXRlCglwcm90b3R5cGUuICBDbGVhbiB1cCBzb21lIHdoaXRlc3BhY2UuCgkqIGNvbmZpZy9kYXJ3aW4uYzogVXNlIGdlbl9ydHhfRk9PICguLi4pIHJhdGhlciB0aGFuCglnZW5fcnR4IChGT08sIC4uLikuCgkobWFjaG9waWNfbm9uX2xhenlfcHRyX25hbWUpOiBNYWtlIHN0YXRpYy4KCShuYW1lX25lZWRzX3F1b3Rlcyk6IEFsbG93ICcuJyBhbmQgJyQnIHVucXVvdGVkLgoJKG1hY2hvcGljX2xlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBJbXByb3ZlIGNvZGVnZW4gaW4gZHluYW1pYy1uby1waWMKCWNhc2UuCgoyMDAzLTEwLTE1ICBH4WJvciBM82tpICA8YWxnYUByZ2FpLmh1PgoKCSogZm9sZC1jb25zdC5jICh0cmVlX3N3YXBfb3BlcmFuZHNfcCk6IERpc2FibGUgc29tZSBmZWF0dXJlcwoJd2hlbiBvcHRpbWl6aW5nIGZvciBzaXplLgoKMjAwMy0xMC0xNSAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IE5ldwoJKiBjb25maWcvbWlwcy9taXBzLmggKERXQVJGX0ZSQU1FX1JFR05VTSk6IEZpeGVkIHRvIGFsbG93IHVud2luZAoJZnJvbSBsZWFmIGZ1bmN0aW9ucy4KCShEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogRGl0dG8uCgkoU0lHTkFMX1VOV0lORF9SRVRVUk5fQ09MVU1OKTogTmV3LCB1c2VkCglieSBNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvY2xlYW51cC05LmM6IEFkZGVkIG1pcHMqLSotbGludXgqIHRhcmdldC4KCjIwMDMtMTAtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZW5tb2Rlcy5jOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShtb2Rlc19ieV9uYW1lLCBoYXNoX21vZGUsIGVxX21vZGUsIHN0cnVjdCBtb2RlX2FkanVzdCkKCShhZGpfYnl0ZXNpemUsIGFkal9hbGlnbm1lbnQsIGFkal9mb3JtYXQsIG5ld19hZGp1c3QpCgkoX0FERF9BREpVU1QsIEFESlVTVF9CWVRFU0laRSwgQURKVVNUX0FMSUdOTUVOVCwgQURKVVNUX0ZPUk1BVCkKCShwcmludF9tYXliZV9jb25zdF9kZWNsLCBlbWl0X21vZGVfYWRqdXN0bWVudHMpOiBOZXcuCgkoa25vd25fbW9kZXMpOiBSZW5hbWUgdG8gbW9kZXMuCgkoZmluZF9tb2RlKTogS2lsbCBjbGFzcyBhcmd1bWVudDsgbG9vayB1cCBpbiBoYXNoIHRhYmxlLgoJKG5ld19tb2RlKTogSW5zZXJ0IGludG8gaGFzaCB0YWJsZSBhbHNvLgoJKG5ld19hZGp1c3QpOiBOZXcuCgkocmVzZXRfZmxvYXRfZm9ybWF0LCBtYWtlX3BhcnRpYWxfaW50ZWdlcl9tb2RlKQoJKG1ha2VfdmVjdG9yX21vZGUpOiBUd2VhayBlcnJvciByZXBvcnRpbmcuCgkocmVzZXRfZmxvYXRfZm9ybWF0KTogQ29ycmVjdCB0eXBlIG9mIGZvdXJ0aCBhcmd1bWVudC4KCShlbWl0X2luc25fbW9kZXNfaCk6IEFkZCAjZGVmaW5lcyB0byBoZWxwIG1ha2UgbW9kZV9zaXplLAoJbW9kZV9iYXNlX2FsaWduLCBhbmQgcmVhbF9mb3JtYXRfZm9yX21vZGUgY29uZGl0aW9uYWxseSBjb25zdC4KCShlbWl0X21vZGVfc2l6ZSwgZW1pdF9tb2RlX2Jhc2VfYWxpZ24pOiBVc2UgcHJpbnRfbWF5YmVfY29uc3RfZGVjbC4KCShlbWl0X3JlYWxfZm9ybWF0X2Zvcl9tb2RlKTogTGlrZXdpc2UsIGJ1dCB0ZW1wb3JhcmlseSBkaXNhYmxlZC4KCShlbWl0X2luc25fbW9kZXNfYyk6IENhbGwgZW1pdF9tb2RlX2FkanVzdG1lbnRzLgoJKG1haW4pOiBJbml0aWFsaXplIG1vZGVzX2J5X25hbWUuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBtYWNobW9kZS5kZWY6IERvY3VtZW50IEVYUFIgYXJndW1lbnRzIGFuZCBuZXcgQURKVVNUXyogc3RhdGVtZW50cy4KCSogbWFjaG1vZGUuaDogVXNlIENPTlNUX01PREVfU0laRSBhbmQgQ09OU1RfTU9ERV9CQVNFX0FMSUdOIGluCglkZWNsYXJhdGlvbnMgb2YgbW9kZV9zaXplIGFuZCBtb2RlX2Jhc2VfYWxpZ24uICBEZWNsYXJlCglpbml0X2FkanVzdF9tYWNoaW5lX21vZGVzLgoJKiB0b3BsZXYuYyAoYmFja2VuZF9pbml0KTogQ2FsbCBpbml0X2FkanVzdF9tYWNoaW5lX21vZGVzLgoKMjAwMy0xMC0xNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZ2VubW9kZXMuYyAoY2FsY193aWRlcl9tb2RlKTogQWxsb2NhdGUgZW5vdWdoIHJvb20gZm9yIGFsbCB0aGUKCWVudHJpZXMgd2UnbGwgcG9zc2libHkgYXNzaWduIGluIHRoZSBzb3J0IGJ1ZmZlci4KCjIwMDMtMTAtMTUgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy5nY2MgKHMzOTB4LWlibS10cGYqKTogTmV3IHRhcmdldC4KCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgaXQuCgkqIGNvbmZpZy9zMzkwL3QtdHBmOiBOZXcgZmlsZS4KCSogY29uZmlnL3MzOTAvdHBmLmg6IE5ldyBmaWxlLgoKMjAwMy0xMC0xNSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJUFIgdGFyZ2V0LzEyNTk4CgkqIGNvbmZpZy9jcmlzL2NyaXMubWQgKGRlZmluZV9zcGxpdCAiKm1vdl9zaWRlc2lfYmlhcF9tZW0iKzEpCgkoZGVmaW5lX3NwbGl0cyAiKm1vdl9zaWRlc2lfbWVtIisxLCAiY2FzZXNpIis5LCArMTAsICsxMSwgKzEyKToKCVVzZSBjcmlzX21lbV9vcCBhbmQgcmVwbGFjZV9lcXVpdl9hZGRyZXNzLCBub3QgZ2VuX3J0eF9NRU0uCgkoImNhbGwiLCAiY2FsbF92YWx1ZSIsIGRlZmluZV9zcGxpdCAiKm1vdl9zaWRlc2lfbWVtIisxOSwgKzIwKQoJKGRlZmluZV9zcGxpdCAiKm1vdl9zaWRlc2lfbWVtIisyMSwgKzIyLCArMjMsICsyNCwgKzI1LCArMjYsICsyNykKCShkZWZpbmVfc3BsaXQgIiptb3Zfc2lkZXNpX21lbSIrMjgsICsyOSwgKzMwKTogVXNlCglyZXBsYWNlX2VxdWl2X2FkZHJlc3MsIG5vdCBnZW5fcnR4X01FTS4KCSogY29uZmlnL2NyaXMvY3Jpcy5jIChjcmlzX21lbV9vcCk6IE5ldyBtYXRjaF9vcGVyYXRvciBmdW5jdGlvbi4KCShjcmlzX25vdGljZV91cGRhdGVfY2MpOiBVc2UgcmVwbGFjZV9lcXVpdl9hZGRyZXNzLCBub3QKCWdlbl9ydHhfTUVNLgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBjcmlzX21lbV9vcC4KCjIwMDMtMTAtMTUgIEJlcm5hcmRvIElubm9jZW50aSA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChNQVNLX1NFUF9EQVRBLCBUQVJHRVRfU0VQX0RBVEEsCglNQVNLX0lEX1NIQVJFRF9MSUJSQVJZLCBUQVJHRVRfSURfU0hBUkVEX0xJQlJBUlkpOiBNb3ZlCglkZWZpbml0aW9ucyBhZnRlciB0aGUgb3RoZXIgZmxhZ3MuCgoyMDAzLTEwLTE0ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLXBhcnNlLmluIChtZXRob2RkZWYsIG1ldGhvZHByb3RvKTogQ2FsbCBvYmpjX2FkZF9tZXRob2QoKQoJaW5zdGVhZCBvZiBhZGRfbWV0aG9kKCkuCgkqIG9iamMvb2JqYy1hY3QuYyAob2JqY19jaGVja19kZWNsKTogRG8gbm90IGNoZWNrIGZvcgoJY29uc3RhbnRfc3RyaW5nX3R5cGUuCgkoYWRkX21ldGhvZCk6IFJlbmFtZSB0byBvYmpjX2FkZF9tZXRob2QoKS4KCShyZWFsbHlfc3RhcnRfbWV0aG9kKTogQ2FsbCBvYmpjX2FkZF9tZXRob2QoKSBpbnN0ZWFkIG9mCglhZGRfbWV0aG9kKCkuCgkqIG9iamMvb2JqYy1hY3QuaCAoYWRkX21ldGhvZCk6IFJlbmFtZSB0byBvYmpjX2FkZF9tZXRob2QoKS4KCjIwMDMtMTAtMTQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfYWxjX2NvbXBhcmlzb24pOiBBZGQgcHJvdG90eXBlLgoJKHMzOTBfc2xiX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2FsY19jb21wYXJpc29uLCBzMzkwX3NsYl9jb21wYXJpc29uKToKCU5ldyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIHMzOTBfYWxjX2NvbXBhcmlzb24KCWFuZCBzMzkwX3NsYl9jb21wYXJpc29uLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmFkZGRpM18zMSIsICIqc3ViZGkzXzMxIik6IERvIG5vdCB1c2Ugb24KCXpTZXJpZXMgbWFjaGluZXMuCgkoIiphZGRkaTNfMzF6IiwgIipzdWJkaTNfMzF6Iik6IE5ldyBpbnNucy4KCSgiKmFkZGRpM19hbGNfY2MiLCAiKmFkZGRpM19hbGMiLCAiKnN1YmRpM19zbGJfY2MiLCAiKnN1YmRpM19zbGIiLAoJIiphZGRzaTNfYWxjX2NjIiwgIiphZGRzaTNfYWxjIiwgIipzdWJzaTNfc2xiX2NjIiwgIipzdWJzaTNfc2xiIik6CglOZXcgaW5zbnMuCgoyMDAzLTEwLTE0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQ2xlYW4gdXAgc29tZSBmZWVkYmFjayBlY2hvZXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGFjbG9jYWwubTQ6IFByb3Blcmx5IHF1b3RlIG5hbWVzIG9mIG1hY3JvcyBiZWluZyBkZWZpbmVkLgoKCSogY29uZmlnLmdjYyAoYW0zM18yLjAtKi1saW51eCopOiBVc2UgdC1zbGliZ2NjLWVsZi12ZXIuCgoyMDAzLTEwLTE0ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfY2FsbCk6IEZvcmNlIGZ1bmN0aW9uIGFkZHJlc3MKCXRvIERJbW9kZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoY2FsbF9ncCk6IFB1dCBESW1vZGUgb24gb3BlcmFuZCAwLgoKMjAwMy0xMC0xNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIm11bGRmMyIsICIqbXVsZGYzIiwgIiptdWxkZjNfaWJtIiwKCSJtdWxzZjMiLCAiKm11bHNmMyIsICIqbXVsc2YzX2libSIpOiBEbyBub3QgY2xvYmJlciBDQy4KCSgiZGl2ZGYzIiwgIipkaXZkZjMiLCAiKmRpdmRmM19pYm0iLCAiZGl2c2YzIiwgIipkaXZzZjMiLAoJIipkaXZzZjNfaWJtIik6IExpa2V3aXNlLgoKMjAwMy0xMC0xNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjLCBjb25maWcvbTY4aGMxMS90LW02OGhjMTEtZ2FzOiBSZXBsYWNlIHVzZXMgb2YKCXRhcmdldF9hbGlhcyB3aXRoIHRhcmdldF9ub25jYW5vbmljYWwuCgoyMDAzLTEwLTE0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGV4cHIuYyAoYmxvY2tfbW92ZV9saWJjYWxsX3NhZmVfZm9yX2NhbGxfcGFybSk6IENsZWFuIHVwLAoJYW5kIGFkZCBjYXNlIGZvciBtYWNoaW5lcyB3aGVyZSBvdXRnb2luZyByZWdpc3RlciBwYXJhbWV0ZXJzCglnZXQgc3RhY2sgc3BhY2UuCgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2luZGlyZWN0X2RhdGFfcmVmZXJlbmNlKTogVXNlIGEgc2NyYXRjaAoJcmVnaXN0ZXIgd2hlbiBnZW5lcmF0aW5nIGluZGlyZWN0IGFkZHJlc3MuCgoyMDAzLTEwLTE0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fYWRkaW1tX29wZXJhbmQpOiBNT0RFIGFyZ3VlbW50IGlzIHVudXNlZC4KCSogYXJtLm1kIChjYnJhbmNobmVfZGVjcjEpOiBGaXggYm9vdHN0cmFwIHdhcm5pbmcuCgoyMDAzLTEwLTE0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGFscGhhX3B0aHJlYWRfZ2NjKTogTmV3IGZpeC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvcHRocmVhZC5oIFtBTFBIQV9QVEhSRUFEX0dDQ19DSEVDS106IE5ldwoJdGVzdGNhc2UuCglGaXhlcyBQUiBib290c3RyYXAvOTMzMC4KCjIwMDMtMTAtMTMgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2FkanVzdF9maWVsZF9hbGlnbik6IFJlZG8gY2hlY2sgZm9yCgl0b28gd2lkZSBiaXRmaWVsZHMuCgkoZnJ2X2hhcmRfcmVnbm9fbW9kZV9vayk6IEFkZCBTUFJfUCBhbmQgQVBfRklSU1QuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKEZVTkNUSU9OX1BST0ZJTEVSKTogUmVtb3ZlIGFib3J0IGNhbGwuCgkoU0JTU19TRUNUSU9OX0FTTV9PUCk6IFJlbW92ZS4KCShFWFRSQV9TRUNUSU9OUyk6IFJlbW92ZSBpbl9zYnNzLgoJKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogUmVtb3ZlIFNCU1NfU0VDVElPTl9GVU5DVElPTi4KCShTQlNTX1NFQ1RJT05fRlVOQ1RJT04sIHNic3Nfc2VjdGlvbik6IFJlbW92ZS4KCShBU01fT1VUUFVUX0FMSUdORURfREVDTF9MT0NBTCk6IENoYW5nZSBzYnNzX3NlY3Rpb24gdG8KCW5hbWVkX3NlY3Rpb24uCgoyMDAzLTEwLTEzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUuaW4sIGNvbmZpZy5ob3N0LCBta2hlYWRlcnMuaW46IFJlcGxhY2UKCXVzZXMgb2YgJHt0YXJnZXRfYWxpYXN9IGZvciBkaXJlY3RvcnkgbmFtZXMgKGFuZCBvdGhlciBwbGFjZXMgd2hpY2gKCXdvbid0IGxpa2UgdGhlIGVtcHR5IHN0cmluZykgd2l0aCAke3RhcmdldF9ub25jYW5vbmljYWx9LiAgSW50cm9kdWNlCgljYWxsIGVhcmx5IGluIGNvbmZpZ3VyZS5pbiB0byBfR0NDX1RPUExFVl9OT05DQU5PTklDQUxfVEFSR0VUIHNvIGl0J3MKCWF2YWlsYWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0xMC0xMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9hcm0vaXdtbXh0Lm1kIChjb25kX2l3bW14dF9tb3ZzaV9pbnNuKTogTmV3IHBhdHRlcm4uCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBGb3Igc3BsaXRzIHdoaWNoIHJlbHkgb24gY29uZGl0aW9uYWwgbW92ZXMsCglyZW1vdmUgISBUQVJHRVRfSVdNTVhUIGNvbmRpdGlvbi4KCjIwMDMtMTAtMTMgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQHJlZGhhdC5jb20+CgoJKiBpZmN2dC5jIChudW1fcmVtb3ZlZF9ibG9ja3MpOiBSZW5hbWUgdG8gbnVtX3RydWVfY2hhbmdlcy4KCShmaW5kX2NvbmRfdHJhcCk6IEFsd2F5cyBpbmNyZW1lbnQgaWYgd2UgZW1pdCBhIGNvbmRpdGlvbmFsCgl0cmFwIGluc24uCgoyMDAzLTEwLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKEJVSUxEX1JUTCk6IFJlcGxhY2UgJChCVUlMRF9QUkVGSVgpaW5zbi1tb2Rlcy5vCgl3aXRoIG1pbi1pbnNuLW1vZGVzLm8uCgkoU1RBR0VTVFVGRik6IEFkZCBtaW4taW5zbi1tb2Rlcy5jLgoJKGdlbm9ianMpOiBBZGQgZ2VubW9kZXMuby4KCShwcmludC1ydGwubywgcHJpbnQtcnRsMS5vKTogRGVwZW5kIG9uICQoVE1fUF9IKS4KCShpbnNuLW1vZGVzLm8pOiBEZXBlbmQgb24gJChUTV9IKSBub3QgJChHVE1fSCk7IGFsc28gcmVhbC5oLgoJKG1pbi1pbnNuLW1vZGVzLmMsIG1pbi1pbnNuLW1vZGVzLm8pOiBOZXcgcnVsZXMuCgkocy1tb2Rlcyk6IEFsc28gZ2VuZXJhdGUgbWluLWluc24tbW9kZXMuYy4KCSgkKEJVSUxEX1BSRUZJWF8xKWluc24tbW9kZXMubyk6IEtpbGwuCgkqIGdlbm1vZGVzLmMgKHN0cnVjdCBtb2RlX2RhdGEpOiBBZGQgZm9ybWF0IGZpZWxkLgoJKGJsYW5rX21vZGUsIHZhbGlkYXRlX21vZGUsIGNvbXBsZXRlX21vZGUpOiBVcGRhdGUgdG8gbWF0Y2guCgkobWFrZV9zY2FsYXJfbW9kZSk6IFNlcGFyYXRlIGludG8gbWFrZV9pbnRfbW9kZSBhbmQgbWFrZV9mbG9hdF9tb2RlLgoJKF9TQ0FMQVJfTU9ERSk6IEtpbGwuCgkoRkxPQVRfTU9ERSwgRlJBQ1RJT05BTF9GTE9BVF9NT0RFKTogQWRkIGZvcm1hdCBhcmd1bWVudC4KCShlbWl0X2luc25fbW9kZXNfY19oZWFkZXIpOiBBZGp1c3QuCgkoZW1pdF9taW5faW5zbl9tb2Rlc19jX2hlYWRlciwgZW1pdF9yZWFsX2Zvcm1hdF9mb3JfbW9kZSkKCShlbWl0X21pbl9pbnNuX21vZGVzX2MpOiBOZXcgZnVuY3Rpb25zLgoJKGVtaXRfaW5zbl9tb2Rlc19jKTogQ2FsbCBlbWl0X3JlYWxfZm9ybWF0X2Zvcl9tb2RlLgoJKG1haW4pOiBBZGQgLW0gb3B0aW9uIHRvIGdlbmVyYXRlIG1pbi1pbnNuLW1vZGVzLmMuCgkqIG1hY2htb2RlLmg6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLiAgQWRkIGZvcm1hdCBhcmd1bWVudCB0bwoJYWxsIHVzZXMgb2YgRkxPQVRfTU9ERS4KCSogcmVhbC5jOiBEb24ndCBkZWZpbmUgcmVhbF9mb3JtYXRfZm9yX21vZGUgaGVyZS4KCgkqIGR3YXJmb3V0LmM6IE1vdmUgZGVmYXVsdCBkZWZpbml0aW9uIG9mIFBSSU5UX1JFRy4uLgoJKiBkZWZhdWx0cy5oOiAuLi5oZXJlLgoJKiBwcmludC1ydGwuYzogSW5jbHVkZSB0bV9wLmguCgkoREVCVUdfUFJJTlRfUkVHLCBERUJVR19SRUdJU1RFUl9OQU1FUywgZGVidWdfcmVnX25hbWVzLCByZWdfbmFtZXMpOgoJS2lsbC4KCShwcmludF9ydHgpOiBVc2UgUFJJTlRfUkVHLCBub3QgREVCVUdfUFJJTlRfUkVHLiAgQnV0IHN1cnJvdW5kCgl0aGlzIGVudGlyZSBibG9jayB3aXRoICNpZm5kZWYgR0VORVJBVE9SX0ZJTEUuCgkqIHJlZ2NsYXNzLmM6IFVuY29uZGl0aW9uYWxseSBkZWZpbmUgcmVnX25hbWVzLgoJKiBjb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmgsIGNvbmZpZy9zaC9zaC5oCglEb24ndCBkZWZpbmUgREVCVUdfUkVHSVNURVJfTkFNRVMuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmg6IERvbid0IHVzZSBERUJVR19SRUdJU1RFUl9OQU1FUyBpbgoJcmVkZWZpbml0aW9uIG9mIFJFR0lTVEVSX05BTUVTLgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IERvbid0IGRlZmluZSBERUJVR19QUklOVF9SRUcuCgoJKiBjb21iaW5lLmM6IENoYW5nZSBhbGwgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscyBvbgoJRVhUUkFfQ0NfTU9ERVMgdG8gdXNlIFNFTEVDVF9DQ19NT0RFIGluc3RlYWQ7IHJlYXJyYW5nZSBhIGJpdAoJZm9yIGNsYXJpdHkuCgkqIGdlbm9waW5pdC5jOiBSZW1vdmUgbWVudGlvbiBvZiBFWFRSQV9DQ19NT0RFUyBpbiBjb21tZW50LgoJKiBjb25maWd1cmUuaW46IERvbid0IGRlZmluZSBFWFRSQV9DQ19NT0RFUy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGRvYy90bS50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiBFWFRSQV9DQ19NT0RFUy4KCgkqIGNvbmZpZy9hcmMvYXJjLmMsIGNvbmZpZy9tMzJyL20zMnIuYywgY29uZmlnL3NwYXJjL3NwYXJjLmM6CglNYXkgYXNzdW1lIHRoYXQgR0VUX01PREVfQ0xBU1MgaXMgYWNjdXJhdGUgZm9yIGV4dHJhIENDIG1vZGVzCglhdCBhbGwgdGltZXMuCgoJKiBjb25maWcvaTg2MC9pODYwLmggKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogUGFzcyBjb3JyZWN0CgludW1iZXIgb2YgYXJndW1lbnRzIHRvIGFnZ3JlZ2F0ZV92YWx1ZV9wLgoKCSogZ2VubW9kZXMuYyAoUkVTRVRfRkxPQVRfRk9STUFULCByZXNldF9mbG9hdF9mb3JtYXQpOiBOZXcuCgkqIG1hY2htb2RlLmRlZjogRXhwbGFpbiBBUkNILW1vZGVzLmRlZi4gIERvY3VtZW50CglSRVNFVF9GTE9BVF9GT1JNQVQuICBJbXByb3ZlIGNvbW1lbnRhcnkgb24gdmFyaW91cyBtb2RlCgljbHVzdGVycy4gIERvIG5vdCBkZWZpbmUgT0ksIFBRSSwgUEhJLCBQU0ksIFBESSwgUUYsIEhGLCBUUUYsCglYRiwgb3IgVEYgbW9kZXMgaGVyZS4gIFJlbW92ZSBiYWNrd2FyZC1jb21wYXRpYmlsaXR5CglkZWZpbml0aW9uIG9mIENDLgoKCSogY29uZmlnL2FscGhhL2FscGhhLW1vZGVzLmRlZjogTmV3IGZpbGU7IGRlZmluZSBURiBtb2RlLgoJKiBjb25maWcvYXJjL2FybS1tb2Rlcy5kZWY6IERlZmluZSBYRiBtb2RlLgoJKiBjb25maWcvYzR4L2M0eC1tb2Rlcy5kZWY6IERlZmluZSBRRiBhbmQgSEYgbW9kZXMuICBVbnNldAoJZmxvYXQgZm9ybWF0IGZvciBTRiBhbmQgREYgbW9kZXMuCgkqIGNvbmZpZy9kc3AxNnh4L2RzcDE2eHgtbW9kZXMuZGVmOiBOZXcgZmlsZTsgZGVmaW5lIEhGIG1vZGUuCgkqIGNvbmZpZy9pMzg2L2kzODYtbW9kZXMuZGVmOiBEZWZpbmUgWEYgYW5kIFRGIG1vZGVzLgoJKiBjb25maWcvaTk2MC9pOTYwLW1vZGVzLmRlZjogRGVmaW5lIFRGIG1vZGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQtbW9kZXMuZGVmOiBEZWZpbmUgVEYgYW5kIE9JIG1vZGVzLgoJKiBjb25maWcvbTY4ay9tNjhrLW1vZGVzLmRlZjogTmV3IGZpbGU7IGRlZmluZSBYRiBtb2RlLgoJKiBjb25maWcvbWlwcy9taXBzLW1vZGVzLmRlZjogTmV3IGZpbGU7IGRlZmluZSBURiBtb2RlLCByZXNldAoJZm9ybWF0cyBmb3IgU0YgYW5kIERGIG1vZGVzLgoJKiBjb25maWcvcGEvcGEtbW9kZXMuZGVmOiBEZWZpbmUgVEYgbW9kZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogRGVmaW5lIFRGIGFuZCBQU0kgbW9kZXMuCgkqIGNvbmZpZy9zMzkwL3MzOTAtbW9kZXMuZGVmOiBEZWZpbmUgT0kgbW9kZS4KCSogY29uZmlnL3NoL3NoLW1vZGVzLmRlZjogTmV3IGZpbGU7IGRlZmluZSBQU0kgbW9kZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLW1vZGVzLmRlZjogRGVmaW5lIFRGIG1vZGUuCgkqIGNvbmZpZy92YXgvdmF4LW1vZGVzLmRlZjogTmV3IGZpbGU7IHJlc2V0IGZvcm1hdHMgZm9yIFNGIGFuZAoJREYgbW9kZXMuCgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfb3ZlcnJpZGVfb3B0aW9ucyk6IE5vIG5lZWQgdG8gbWVzcwoJd2l0aCByZWFsX2Zvcm1hdF9mb3JfbW9kZSBvciBzZXQgUkVBTF9NT0RFX0ZPUk1BVHMuCgkoYzR4X2ltbWVkX2ludF9jb25zdGFudCk6IERvbid0IGFwcGx5IEdFVF9NT0RFX0NMQVNTIHRvIHJ0eAoJdmFyaWFibGUuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IE5vIG5lZWQgdG8gc2V0CglSRUFMX01PREVfRk9STUFUcyBoZXJlLgoJKiBjb25maWcvaTk2MC9pOTYwLmMgKGk5NjBfaW5pdGlhbGl6ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3ZlcnJpZGVfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBSRUFMX01PREVfRk9STUFUCglmb3IgVEZtb2RlIG9ubHkgaWYgbm90IHRoZSBkZWZhdWx0LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL3ZheC92YXguYyAob3ZlcnJpZGVfb3B0aW9ubXMpOiBTZXQgUkVBTF9NT0RFX0ZPUk1BVCBmb3IKCURGbW9kZSBvbmx5IGlmIG5vdCB0aGUgZGVmYXVsdC4KCgkqIGNvbmZpZy9pMzcwL2kzNzAuaCAoUkVUX1JFRyk6IERvbid0IGNvbnNpZGVyIFRGbW9kZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChwcmludF9vcGVyYW5kKTogRG9uJ3QgY29uc2lkZXIgWEZtb2RlLgoJKiBjb25maWcvZHNwMTZ4eC9kc3AxNnh4LmMgKGhhcmRfcmVnbm9fbW9kZV9vayk6ICNpZiAwIG91dCB1c2UKCW9mIG1vZGVzIHRoYXQgZG9uJ3QgYXBwZWFyIGFueXdoZXJlIGluIHRoZSBtYWNoaW5lIGRlc2NyaXB0aW9uLgoKCSogY29uZmlnL2FyYy9hcmMtbW9kZXMuZGVmLCBjb25maWcvYXJtL2FybS1tb2Rlcy5kZWYKCSogY29uZmlnL2M0eC9jNHgtbW9kZXMuZGVmLCBjb25maWcvZnJ2L2Zydi1tb2Rlcy5kZWYKCSogY29uZmlnL2kzODYvaTM4Ni1tb2Rlcy5kZWYsIGNvbmZpZy9pOTYwL2k5NjAtbW9kZXMuZGVmCgkqIGNvbmZpZy9pYTY0L2lhNjQtbW9kZXMuZGVmLCBjb25maWcvbW1peC9tbWl4LW1vZGVzLmRlZgoJKiBjb25maWcvcGEvcGEtbW9kZXMuZGVmLCBjb25maWcvcGRwMTEvcGRwMTEtbW9kZXMuZGVmCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLW1vZGVzLmRlZiwgY29uZmlnL3MzOTAvczM5MC1tb2Rlcy5kZWYKCSogY29uZmlnL3NwYXJjL3NwYXJjLW1vZGVzLmRlZjogQ29udmVydCB0byBuZXcgc3R5bGUgZm9yCglkZWNsYXJpbmcgZXh0cmEgQ0MgbW9kZXMuCgoyMDAzLTEwLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbGV4LmMgKF9jcHBfY2xlYW5fbGluZSk6IEluIHRoZSBjb21tb24gY2FzZSBvZiBhIGxpbmUKCXdpdGggbm8gdHJpZ3JhcGhzIGFuZCBubyBcLW5ld2xpbmUsIGF2b2lkIHdyaXRpbmcgdG8gbWVtb3J5LgoJKF9jcHBfc2tpcF9ibG9ja19jb21tZW50KTogVXNlIGEgbG9jYWwgJ2N1cicgcG9pbnRlciBpbnN0ZWFkCglvZiB0aGUgYnVmZmVyIG1lbWJlci4gIE1ha2UgYyBhbiB1Y2hhciB0byBhdm9pZCB1bm5lY2Vzc2FyeQoJc2lnbiBleHRlbnNpb25zLgoKMjAwMy0xMC0xMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSB1bm5lY2Vzc2FyeSB0ZXN0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjb25maWd1cmUuaW46IEZpeCBncmFtbWF0aWNhbCBlcnJvci4gIE1vdmUgVVdJTiBob3N0IGVycm9yIHRvLi4uCgkqIGNvbmZpZy5ob3N0OiBIZXJlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTEwLTEzICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipmbWFkZGRmNCIsICIqZm1zdWJkZjQiLCAiKmZtYWRkc2Y0IiwKCSIqZm1zdWJzZjQiKTogSW5zbnMgYXJlIG5vdyBkZXBlbmRlbnQgb24gVEFSR0VUX0ZVU0VEX01BREQgaW5zdGVhZAoJb2YgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zLgoJKiBjb25maWcvczM5MC9zMzkwLmggKCJNQVNLX05PX0ZVU0VEX01BREQiLCAiVEFSR0VUX05PX0ZVU0VEX01BREQiLAoJIlRBUkdFVF9GVVNFRF9NQUREIiwgIlRBUkdFVF9TV0lUQ0hFUyIpOiBJbnRyb2R1Y2VkIG5ldyB0YXJnZXQgZmxhZ3MKCWZ1c2VkLW1hZGQgYW5kIG5vLWZ1c2VkLW1hZGQuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnRlZCB0aGUgbmV3IG9wdGlvbnMgZnVzZWQtbWFkZCBhbmQKCW5vLWZ1c2VkLW1hZGQgZm9yIFMvMzkwLgoKMjAwMy0xMC0xNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChTVUJTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IENob29zZQoJTUFTS19BTElHTl9OQVRVUkFMIGlmIHJzNjAwMF9hbGlnbm1lbnRfc3RyaW5nIG5vdCBnaXZlbi4gIERvbid0Cglhc3NpZ24gREVGQVVMVF9BQkkuCgkoQURKVVNUX0ZJRUxEX0FMSUdOLCBST1VORF9UWVBFX0FMSUdOKTogVXBkYXRlIGNvbW1lbnQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IEZvcm1hdHRpbmcuCgkocnM2MDAwX3BhcnNlX2FsaWdubWVudF9vcHRpb24pOiBPbmx5IHNldCByczYwMDBfYWxpZ25tZW50X2ZsYWdzCgl3aGVuIHJzNjAwMF9hbGlnbm1lbnRfc3RyaW5nIGdpdmVuLgoKMjAwMy0xMC0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTI1MzgKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKE1VU1RfU0FWRV9SRUdJU1RFUik6IERlbGV0ZS4KCShzcGFyY19mbGF0X211c3Rfc2F2ZV9yZWdpc3Rlcl9wKTogTmV3IGZ1bmN0aW9uIHRvIGRlY2lkZSB3aGV0aGVyCglhIHJlZ2lzdGVyIG11c3QgYmUgc2F2ZWQvcmVzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIHByb2xvZ3VlL2VwaWxvZ3VlLgoJKHNwYXJjX2ZsYXRfY29tcHV0ZV9mcmFtZV9zaXplKTogVXNlIGl0IGluc3RlYWQgb2YgTVVTVF9TQVZFX1JFR0lTVEVSLgoKMjAwMy0xMC0xMiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL2F2ci9hdnIuYywgY29uZmlnL2F2ci9hdnItcHJvdG9zLmg6IENvbnZlcnQgdG8KCUlTTyBDOTAgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucy4KCSogY29uZmlnL3NoL3NoLmMsIGNvbmZpZy9zaC9zaC1wcm90b3MuaDogTGlrZXdpc2UuCgoyMDAzLTEwLTEyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKCotKi1mcmVlYnNkKik6IFVzZSB0bV9kZWZpbmVzIGluc3RlYWQgb2YgdGlueQoJY29uZmlnIGZpbGVzIHdoaWNoIGRvIHRoZSBzYW1lIHRoaW5nLgoJKiBjb25maWcvZnJlZWJzZDMuaCwgY29uZmlnL2ZyZWVic2Q0LmgsIGNvbmZpZy9mcmVlYnNkNS5oLAoJY29uZmlnL2ZyZWVic2Q2Lmg6IFJlbW92ZSBub3cgdW5uZWNlc3NhcnkgZmlsZXMuCgoyMDAzLTEwLTEyICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBXYXJuIGlmIHRoZQoJYWRkcmVzcyBvZiBhIG5vbi13ZWFrIGZ1bmN0aW9uIGlzIHVzZWQgYXMgYSB0cnV0aCB2YWx1ZS4KCjIwMDMtMTAtMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoV09SRF9SRUdfVVNFRCk6IFVzZSBTUF9SRUcgaW5zdGVhZCBvZgoJYSBsaXRlcmFsLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoUkVHTk9fT0tfRk9SX0JBU0VfUCk6IFVzZSBNQUNfUkVHCglpbnN0ZWFkIG9mIGEgbGl0ZXJhbC4KCjIwMDMtMTAtMTIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoRnVuY3Rpb24gQXR0cmlidXRlcyk6IE1lbnRpb24gdGhlIGV4Y2VwdGlvbmFsCglwYXRoIGZvciBub3JldHVybi1tYXJrZWQgZnVuY3Rpb25zLgoKMjAwMy0xMC0xMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZGVjaWRlX2lubGluaW5nKTogRml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUKCXdhcm5pbmcuCgoyMDAzLTEwLTEyICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfdGhpc19wYXJhbWV0ZXIpOiBGaXggdHlwby4KCjIwMDMtMTAtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluICh3ZWIubyk6IE5ldy4KCSogd2ViLmM6IE5ldyBmaWxlLgoJKiBydGwuaCAod2ViX21haW4pOiBEZWNsYXJlLgoJKiB0aW1lcnZhci5kZWYgKFRWX1dFQik6IE5ldy4KCSogdG9wbGV2LmMgKGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlX2luZm8pOiBBZGQgREZJX3dlYi4KCShyZXN0X29mX2hhbmxlX3dlYik6IE5ldy4KCShmbGFnX3dlYik6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkobGFuZ19pbmRlcGVuZGVudF9vcHRpb25zKTogQWRkICJ3ZWIiLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIHJlc3Rfb2ZfaGFuZGxlX3dlYi4KCSogaW52b2tlLnRleGkgKC1md2ViKTogRG9jdW1lbnQuCgkqIGNvbW1vbi5vcHQgKGZ3ZWIpOiBOZXcuCgkqIGZsYWdzLmggKGZsYWdfd2ViKTogTmV3LgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogU2V0IGZsYWdfd2ViIGF0IC1PMy4KCgkqIHBhc3Nlcy50ZXhpICh3ZWIgY29uc3RydWN0aW9uKTogIERvY3VtZW50LgoJKiBpbnZva2UudGV4aSAoLU8zKTogRG9jdW1lbnQgdGhhdCAtZndlYiBpcyBlbmFibGVkLgoKCSogcmVncmVuYW1lLmMgKHJlZ3JlbmFtZV9vcHRpbWl6ZSk6IERlYWwgYmV0dGVyIHdpdGggc2l0dWF0aW9uIHdoZW4KCXJlcGxhY2VtZW50IGZhaWxlZC4KCgkqIHNjaGVkLWViYi5jOiBJbmNsdWRlIHBhcmFtcy5oIGFuZCBwcm9maWxlLmgKCShzY2hlZHVsZV9lYmJzKTogIFVzZSB0cmFjZXIgcGFyYW1ldGVycyB0byBkaXNjb3ZlciBzdXBlcmJsb2NrcwoJKiBNYWtlZmlsZS5pbiAoc2NoZWQtZWJiLm8pOiAgQWRkIGRlcGVuZGVuY2llcy4KCjIwMDMtMTAtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChuZWdhdGVfbWF0aGZuX3ApOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIKCWEgYnVpbHQtaW4gbWF0aGVtYXRpY2FsIGZ1bmN0aW9uIGlzIHNpZ24gcHJlc2VydmluZywgZigteCkgPT0gLWYoeCkuCglBZGQgc3VwcG9ydCBmb3IgQlVJTFRfSU5fQVNJTiwgQlVJTFRfSU5fQVNJTkYgYW5kIEJVSUxUX0lOX0FTSU5MLgoJKHRyZWVfc3dhcF9vcGVyYW5kc19wKTogQ2hhbmdlIEFQSSB0byB0YWtlIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQKCWluZGljYXRpbmcgdGhhdCB0aGUgc3dhcHBlZCBvcGVyYW5kcyBldmFsdWF0ZSBpbiByZXZlcnNlIG9yZGVyLgoJQ2Fub25pY2FsaXplIFZBUl9ERUNMcyBhbmQgUEFSTV9ERUNMcyBsYXN0IGlmIHdlIGNhbiwgaS5lLiBuZWl0aGVyCglvcGVyYW5kIHNpZGUtZWZmZWN0cyBvciB3ZSBkb24ndCBjYXJlIGFib3V0IGZsYWdfZXZhbHVhdGlvbl9vcmRlci4KCShyZW9yZGVyX29wZXJhbmRzX3ApOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciBpdHMgc2FmZSB0bwoJZXZhbHVhdGUgdGhlIGdpdmVuIG9wZXJhbmRzIGluIHJldmVyc2Ugb3JkZXIuCgkobmVnYXRlX2V4cHJfcCk6ICBXZSBjYW4gYWx3YXlzIG5lZ2F0ZSBpbnRlZ2VyIGNvbnN0YW50cyB1bmxlc3MKCXdlIGhvbm9yIC1mdHJhcHYgYW5kIHRoZSBzaWduZWQgdHlwZSB3b3VsZCBvdmVyZmxvdy4gIE9ubHkgYWxsb3cKCS0oQS1CKSBpbnRvIEItQSBpZiByZW9yZGVyX29wZXJhbmRzX3Agc2F5cyB0aGF0IGl0cyBPSy4gIEFsbG93CgluZWdhdGlvbiBvZiBDT01QTEVYX0NTVCBpZiBib3RoIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBjYW4gYmUKCW5lZ2F0ZWQuICBBbGxvdyBuZWdhdGlvbiB0aHJvdWdoIGZsb2F0aW5nIHBvaW50IGV4dGVuc2lvbnMgYW5kCglzaWduLXByZXNlcnZpbmcgYnVpbHQtaW4gZnVuY3Rpb25zLgoJKG5lZ2F0ZV9leHByKTogIE1vdmUgdGhlIGNvZGUgdG8gbmVnYXRlIGludGVnZXJzIGZyb20gImZvbGQiIHRvCgloZXJlLiAgQWx3YXlzIG5lZ2F0ZSBpbnRlZ2VyIGNvbnN0YW50cyB1bmxlc3Mgd2UgaG9ub3IgLWZ0cmFwdgoJYW5kIHRoZSBzaWduZWQgdHlwZSB3b3VsZCBvdmVyZmxvdy4gIEFsd2F5cyBuZWdhdGUgcmVhbCBjb25zdGFudHMKCXVubGVzcyB3ZSBob25vciAtZnRyYXBwaW5nLW1hdGguICBPbmx5IGNvbnZlcnQgLShBLUIpIGludG8gQi1BCglpZiBhbGxvd2VkIGJ5IHJlb3JkZXJfb3BlcmFuZHNfcC4gIEFkZCBzdXBwb3J0IGZvciBDT01QTEVYX0NTVC4KCU9wdGltaXplIG5lZ2F0aW9uIHRocm91Z2ggZmxvYXRpbmcgcG9pbnQgZXh0ZW5zaW9ucyBhbmQKCXNpZ24tcHJlc2VydmluZyBidWlsdC1pbiBmdW5jdGlvbnMgKGFzIGRlZmluZWQgYnkgbmVnYXRlX21hdGhmbl9wKS4KCShmb2xkKTogQWRqdXN0IGNhbGxzIHRvIHRyZWVfc3dhcF9vcGVyYW5kc19wLgoJKGZvbGQgPE5FR0FURV9FWFBSPik6IE1vdmUgdGhlIHJlbWFpbmluZyBuZWdhdGlvbiBvcHRpbWl6YXRpb25zCgl0byBuZWdhdGVfZXhwcl9wL25lZ2F0ZV9leHByLgoJKGZvbGQgPE1JTlVTX0VYUFI+KTogVXNlIHJlb3JkZXJfb3BlcmFuZHNfcCB0byBjaGVjayB3aGV0aGVyIHdlJ3JlCglhbGxvd2VkIHRvIGNvbnZlcnQgKC1BKSAtIEIgaW50byAoLUIpIC0gQS4KCjIwMDMtMTAtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogRGVmZW5kIGFnYWluc3QgdGhlIHBvc3NpYmlsaXR5Cgl0aGF0IGdlbl9jbXBzdHJzaSBtYXkgZmFpbDogU3RhYmlsaXplIHRoZSBhcmd1bWVudCBsaXN0IGFnYWluc3QKCXJlLWV2YWx1YXRpb24gYW5kIGV4cGFuZCB0aGUgbGlicmFyeSBjYWxsIGRpcmVjdGx5IHVzaW5nIHRoaXMgc2F2ZWQKCWFyZ3VtZW50IGxpc3QgaWYgYSBjbXBzdHJzaSBzZXF1ZW5jZSBjYW4ndCBiZSBnZW5lcmF0ZWQuCgkoZXhwYW5kX2J1aWx0aW5fc3RybmNtcCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoY21wc3Ryc2ksIG1vdnN0cnNpKTogRGlzYWJsZSB3aXRoIC1Pcy4KCjIwMDMtMTAtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMjI2MAoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogU2ltcGxpZnkgYWxsIHVuYXJ5CglvcGVyYXRpb25zIHRocm91Z2ggQ09OU1Qgbm9kZXMuICBPcHRpbWl6ZSAobmVnIChwbHVzIFggQykpIGFzCgkobWludXMgLUMgWCkgZm9yIGNvbnN0YW50IHZhbHVlcyBDLgoJKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBPcHRpbWl6ZSAobWludXMgKG5lZyBYKSBDKSBhcwoJKG1pbnVzIC1DIFgpIGZvciBjb25zdGFudCB2YWx1ZXMgQy4KCShzaW1wbGlmeV9wbHVzX21pbnVzKTogQXZvaWQgY3JlYXRpbmcgKG5lZyAoY29uc3QgKHBsdXMgWCBDKSksCglpbnN0ZWFkIGNyZWF0ZSAobWludXMgLUMgWCkuCgoyMDAzLTEwLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIgPFBMVVNfRVhQUj4pOiBMZXQgZXhwYW5kX29wZXJhbmRzIGNhbGwKCXNhZmVfZnJvbV9wIGZvciB1cywgb25jZSBpdCBjaG9vc2VzIGFuIGV2YWx1YXRpb24gb3JkZXIuCgkoZXhwYW5kX2V4cHIgPE1VTFRfRVhQUj4pOiBMaWtld2lzZS4KCShleHBhbmRfZXhwciA8TUlOX0VYUFI+IDxNQVhfRVhQUj4pOiBMaWtld2lzZS4gIElmIGV4cGFuZF9vcGVyYW5kcwoJcGxhY2VzIHRoZSBzZWNvbmQgb3BlcmFuZCBpbiAidGFyZ2V0Iiwgc3dhcCB0aGUgb3BlcmFuZHMuCgkoZG9fc3RvcmVfZmxhZyk6IExldCBleHBhbmRfb3BlcmFuZHMgY2FsbCBzYWZlX2Zyb21fcCBmb3IgdXMuCgoyMDAzLTEwLTExICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMjU0NAoJKiBmdW5jdGlvbi5jIChwdXRfdmFyX2ludG9fc3RhY2spOiBEb24ndCBnZW5lcmF0ZSBBRERSRVNTT0ZzCglmb3IgREVDTF9OT05MT0NBTCBkZWNscy4KCjIwMDMtMTAtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogZmluYWwuYzogTGlrZXdpc2UuCgkqIG9wdGFicy5jOiBMaWtld2lzZS4KCSogc2NoZWQtZGVwcy5jOiBMaWtld2lzZS4KCSogc2Rib3V0LmM6IExpa2V3aXNlLgoKU2F0IE9jdCAxMSAxMjoyNDoyMyBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHZhcmFzbS5jIChub3RpY2VfZ2xvYmFsX3N5bWJvbCk6ICBGaXggaGFuZGxpbmcgb2YgdmFyaWFibGVzOyBhdm9pZAoJcmUtY29tcHV0aW5nIG9mIHZhcmlhYmxlLgoKMjAwMy0xMC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9yZXR1cm5faW5fbWVtb3J5KTogUmVuYW1lIGZyb20KCXJldHVybl9pbl9tZW1vcnksIG1ha2Ugc3RhdGljLCBjaGFuZ2Ugc2lnbmF0dXJlIHRvIG1hdGNoIHRhcmdldCBob29rLgoJKGFscGhhX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBNYWtlIHN0YXRpYywgY2hhbmdlIHNpZ25hdHVyZSB0bwoJbWF0Y2ggdGFyZ2V0IGhvb2ssIGFkZCBjb2RlIGZvciB2bXMgYW5kIHVuaWNvcy4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTLCBUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sCglUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTLCBUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCwKCVRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZLCBUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUywKCVRBUkdFVF9TVFJJQ1RfQVJHVU1FTlRfTkFNSU5HLAoJVEFSR0VUX1BSRVRFTkRfT1VUR09JTkdfVkFSQVJHU19OQU1FRCk6IE5ldy4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUk9NT1RFX0ZVTkNUSU9OX0FSR1MsCglQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTiwgUkVUVVJOX0lOX01FTU9SWSwKCVNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9hbHBoYS91bmljb3Ntay5oIChTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvdm1zLmggKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBSZW1vdmUuCgoyMDAzLTEwLTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3JlZ25vX2NsYXNzKTogSGFuZGxlIElXTU1YVF9HUl9SRUdTLgoKMjAwMy0xMC0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tNjhrL2xiMXNmNjguYXNtOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGNvbmZpZy9tNjhrL202OGsuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IExpa2V3aXNlLgoKMjAwMy0xMC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1jcHkpOiBPcHRpbWl6ZSBjYXNlIHdoZW4gdGhlIHR3bwoJcG9pbnRlciBhcmd1bWVudHMgYXJlIHRoZSBlcXVhbCwgbm9uLXZvbGF0aWxlIGFuZCBzaWRlLWVmZmVjdCBmcmVlLgoJKGV4cGFuZF9idWlsdGluX21lbXBjcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1tb3ZlKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY3B5KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY21wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RybmNtcCk6IExpa2V3aXNlLgoKMjAwMy0xMC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb21iaW5lLmMgKGFwcGx5X2Rpc3RyaWJ1dGl2ZV9sYXcpOiBFbmFibGUgImRpc3RyaWJ1dGl2ZSIgZmxvYXRpbmcKCXBvaW50IG9wdGltaXphdGlvbnMgd2l0aCAtZnVuc2FmZS1tYXRoLW9wdGltaXphdGlvbnMuCgoyMDAzLTEwLTExICBBbmRyZXcgUGluc2tpIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZ2VubW9kZXMuYyAoZW1pdF9tb2RlX21hc2spIENoYW5nZSBNQVNLIHRvIE1PREVfTUFTSy4KCjIwMDMtMTAtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTY4ay9tNjhrLXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWZpbmFsaXplX3BpYy4KCjIwMDMtMTAtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwMy0xMC0xMSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCAodXNlX3JldHVybl9pbnNuKTogQ2hhbmdlIHJldHVybiB0eXBlIGZyb20KCWludCB0byBib29sLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKHN0cnVjdCBtNjhrX2ZyYW1lKTogQWRkIGZ1bmNkZWZfbm8gbWVtYmVyLgoJKGN1cnJlbnRfZnJhbWUpOiBOZXcgZ2xvYmFsIHZhci4KCShtNjhrX2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogQ2FjaGUgY29tcHV0YXRpb25zIGluIGN1cnJlbnRfZnJhbWUuCgkobTY4a19pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IFVzZSB2YWx1ZXMgZnJvbSBjdXJyZW50X2ZyYW1lCglpbnN0ZWFkIG9mIHJlY29tcHV0aW5nIHRoZW0uCgkodXNlX3JldHVybl9pbnNuKTogTGlrZXdpc2UuCgkobTY4a19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBMaWtld2lzZS4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF9DUFVfQ1BQX1BSRURFRklORVMpOiBGb2xkIF9fUElDX18gaGFuZGxpbmcKCWluc2lkZSB0aGUgYmxvY2sgZm9yIF9fcGljX18uCgoyMDAzLTEwLTExICBQZXRlciBCYXJhZGEgPHBldGVyQGJhcmFkYXMub3JnPgoJICAgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19mcmFtZSk6IE1vdmUgYmVmb3JlIHByb3RvcyByZWZlcmVuY2luZyBpdC4KCShtNjhrX3NhdmVfcmVnKTogQWRkIGJvb2xlYW4gcGFyYW1ldGVyIGBpbnRlcnJ1cHRfaGFuZGxlcicuCgkobTY4a19pbnRlcnJ1cHRfZnVuY3Rpb25fcCk6IE5ldyBmdW5jdGlvbi4KCShtNjhrX2hhbmRsZV9mbmRlY2xfYXR0cmlidXRlKTogRGl0dG8uCgkobTY4a19jb21wdXRlX2ZyYW1lX2xheW91dCk6IERpdHRvLgoJKG02OGtfYXR0cmlidXRlX3RhYmxlKTogRGVmaW5lIGJhY2stZW5kIHNwZWNpZmljIGF0dHJpYnV0ZXMuCgkobTY4a19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBFbWl0IFJURSBpbnN0cnVjdGlvbiBmb3IgaW50ZXJydXB0CglmdW5jdGlvbnMuCgoyMDAzLTEwLTExICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay90LXVjbGludXg6IE5ldyB0YXJnZXQgTWFrZWZpbGUgZnJhZ21lbnQuCgkqIGNvbmZpZy9tNjhrL3VjbGludXguaDogTmV3IHRhcmdldCBtYWNybyBmaWxlLgoJKiBjb25maWcuZ2NjIChtNjhrLSotdWNsaW51eCk6IE5ldyB0YXJnZXQgZGVmaW5pdGlvbi4KCjIwMDMtMTAtMTAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoYnVpbHRpbl9tYXRoZm5fY29kZSk6IEdlbmVyYWxpemUgdG8gY2hlY2sgd2hldGhlcgoJdGhlIGNhbGwgaXMgdG8gYW55IGJ1aWx0LWluIGZ1bmN0aW9uIGJ5IGNvbXBhcmluZyB0aGUgY2FsbCdzCglhcmd1bWVudCBsaXN0IGFnYWluc3QgdGhlIGJ1aWx0aW4gZGVjbCdzIGZ1bmN0aW9uIHR5cGUuCgoyMDAzLTEwLTEwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNzZS5jIChjb25zdGFudF9wb29sX2VudHJpZXNfcmVnY29zdCk6IE5ldyBnbG9iYWwgdmFyaWFibGUgdG8KCWhvbGQgdGhlIHJlZ2lzdGVyIGNvc3QgY29tcG9uZW50IG9mIGNvbnN0YW50X3Bvb2xfZW50cmllc19jb3N0LgoJKGZvbGRfcnR4KTogQ2FsY3VsYXRlIGNvbnN0YW50X3Bvb2xfZW50cmllc19yZWdjb3N0IGF0IHRoZSBzYW1lCgl0aW1lIGFzIGNvbnN0YW50X3Bvb2xfZW50cmllc19jb3N0LgoJKGNzZV9pbnNuKTogU2V0IGJvdGggc3JjX2ZvbGRlZF9jb3N0IGFuZCBzcmNfZm9sZGVkX3JlZ2Nvc3QgZnJvbQoJY29uc3RhbnRfcG9vbF9lbnRyaWVzX2Nvc3QgYW5kIGNvbnN0YW50X3Bvb2xfZW50cmllc19yZWdjb3N0LgoJKGNzZV9tYWluKTogSW5pdGlhbGl6ZSBjb25zdGFudF9wb29sX2VudHJpZXNfcmVnY29zdCB0byB6ZXJvLgoKCSogb3B0YWJzLmMgKGV4cGFuZF91bm9wKTogQXR0YWNoIGEgUkVHX0VRVUFMIG5vdGUgZGVzY3JpYmluZwoJdGhlIHNlbWFudGljcyBvZiB0aGUgc2VxdWVuY2Ugb2YgYml0IG9wZXJhdGlvbnMgdXNlZCB0byBuZWdhdGUKCWEgZmxvYXRpbmctcG9pbnQgdmFsdWUuCgkoZXhwYW5kX2Fic19ub2p1bXApOiBMaWtld2lzZSBhdHRhY2ggYSBSRUdfRVFVQUwgbm90ZSBkZXNjcmliaW5nCgl0aGUgc2VtYW50aWNzIG9mIHRoZSBiaXQgb3BlcmF0aW9ucyB1c2VkIHRvIGFicyBhIGZsb2F0aW5nIHBvaW50Cgl2YWx1ZS4KCjIwMDMtMTAtMTEgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCSAgICBQYXVsIERhbGUgIDxwYXVsaUBzbmFwZ2Vhci5jb20+CgoJKiBjb25maWcvbTY4ay9sYjFzZjY4LmFzbTogQWRkIF9fUElDX18gYW5kIF9fSURfU0hBUkVEX0xJQlJBUllfXwoJc3VwcG9ydC4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmggKEFTTV9TUEVDKTogUGFzcyAtLXBjcmVsIHRvIGFzc2VtYmxlciBvbgoJLWZwaWMsIC1mUElDLCAtbXNlcC1kYXRhIGFuZCAtbWlkLXNoYXJlZC1saWJyYXJ5LgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfbGlicmFyeV9pZF9zdHJpbmcpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBBZGQgLW1zZXAtZGF0YSBhbmQgLW1zaGFyZWQtbGlicmFyeS1pZCBzdXBwb3J0LgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogR2VuZXJhdGUgY29kZSB0byBsb2FkIEE1IGZvcgoJVEFSR0VUX0lEX1NIQVJFRF9MSUJSQVJZIGFuZCBUQVJHRVRfU0VQX0RBVEEuCgkobTY4a19vdXRwdXRfbWlfdGh1bmspOiBFbWl0IGluZGlyZWN0IGp1bXAgb24gVEFSR0VUX0lEX1NIQVJFRF9MSUJSQVJZLgoJKG02OGtfb3V0cHV0X3BpY19jYWxsKTogTmV3IGZ1bmN0aW9uLgoJKiBnY2MvY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfU0VQX0RBVEEpOiBOZXcgdGFyZ2V0IGZsYWcuCgkoVEFSR0VUX0lEX1NIQVJFRF9MSUJSQVJZKTogRGl0dG8uCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIHN3aXRjaGVzIGZvciAtbWlkLXNoYXJlZC1saWJyYXJ5IGFuZCAtbXNlcC1kYXRhLgoJKiBnY2MvY29uZmlnL202OGsvbTY4ay5tZCAoY2FsbCk6IENhbGwgbTY4a19vdXRwdXRfcGljX2NhbGwoKS4KCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDAzLTEwLTEwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VuZ2VucnRsLmMgKGZpbmRfZm9ybWF0cywgZ2VuaGVhZGVyKTogTWFrZSBpIGFuIHVuc2lnbmVkCglpbnQsIHJlbW92ZSBjYXN0IG9mIE5VTV9SVFhfQ09ERS4KCSogbWFjaG1vZGUuaDogTWFrZSB0aGUgSEFWRV9NQUNISU5FX01PREVTICNpZmRlZiBlbmNvbXBhc3MgdGhlCgllbnRpcmUgZmlsZS4gIFJlbW92ZSB0aGUgI2lmcyBvbiBHRVRfTU9ERV9NQVNLIGV0YyBhbmQKCUdFVF9NT0RFX1dJREVSX01PREUgZXRjLgoKMjAwMy0xMC0xMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBsY20uYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBDaGFuZ2UgTk9STUFMX01PREUKCXRvIE1PREVfRU5UUlkgYW5kIE1PREVfRVhJVC4gQWRkIE1PREVfQUZURVIgZm9yIGluc25zCgl0aGF0IHNldCBtb2RlLgoJKiBjb25maWcvc2gvc2guaCAoTU9ERV9FTlRSWSk6IE5ldyBtYWNyby4KCShNT0RFX0VYSVQpOiBEaXR0by4KCShNT0RFX0FGVEVSKTogRGl0dG8uCgkqIGNvbmZpZy9zaC9zaC5tZDogQ2hhbmdlIGZvciBNT0RFX0FGVEVSLiBBZGQKCWZwX3NldCBhdHRyaWJ1dGUuCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBNT0RFX0FGVEVSLCBNT0RFX0VOVFJZLCBhbmQgTU9ERV9FWElULgoKMjAwMy0xMC0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbm1vZGVzLmMsIG1vZGUtY2xhc3Nlcy5kZWY6IE5ldyBmaWxlcy4KCSogbWFjaG1vZGUuZGVmOiBSZXdyaXR0ZW4gdG8gZ2VubW9kZXMuYyBpbnRlcmZhY2UuCgkqIE1ha2VmaWxlLmluIChleHRyYV9tb2Rlc19maWxlKTogTmV3IHN1YnN0aXR1dGlvbiB2YXJpYWJsZS4KCShNQUNITU9ERV9IKTogTm8gbG9uZ2VyIGluY2x1ZGVzIG1hY2htb2RlLmRlZiBvcgoJQGV4dHJhX21vZGVzX2ZpbGVAOyBpbnN0ZWFkLCBtb2RlLWNsYXNzZXMuZGVmIGFuZCBpbnNuLW1vZGVzLmguCgkoQlVJTERfUlRMKTogQWRkICQoQlVJTERfUFJFRklYKWluc24tbW9kZXMuby4KCShPQkpTLWNvbW1vbik6IEFkZCBpbnNuLW1vZGVzLm8uCgkoU1RBR0VTVFVGRik6IEFkZCBpbnNuLW1vZGVzLmMsIGluc24tbW9kZXMuaCwgcy1tb2RlcywgYW5kCglnZW5tb2RlcyQoYnVpbGRfZXhlZXh0KS4KCShpbnNuLW1vZGVzLm8sIGluc24tbW9kZXMuYywgaW5zbi1tb2Rlcy5oLCBzLW1vZGVzLCBnZW5tb2Rlcy5vLAoJZ2VubW9kZXMkKGJ1aWxkX2V4ZWV4dCksICQoQlVJTERfUFJFRklYXzEpaW5zbi1tb2Rlcy5vKTogTmV3IHRhcmdldHMuCgkocy1nZW5ydGwpOiBEb24ndCBkZXBlbmQgb24gJChSVExfQkFTRV9IKS4KCShnZW5nZW5ydGwubyk6IERvbid0IGRlcGVuZCBvbiBjb3JldHlwZXMuaCwgJChHVE1fSCksIHJlYWwuaCwKCW9yICQoUlRMX0JBU0VfSCk7IGp1c3QgcnRsLmRlZi4KCSogZ2VuZ2VucnRsLmM6IERvbid0IGluY2x1ZGUgY29yZXR5cGVzLmgsIHRtLmgsIHJ0bC5oLCBvcgoJcmVhbC5oLiAgR2l2ZSBmYWtlIGRlZmluaXRpb24gb2YgQ09OU1RfRE9VQkxFX0ZPUk1BVCBhbmQKCXN1YnN0aXR1dGUgZGVmaW5pdGlvbiBvZiBOVU1fUlRYX0NPREUuICBBZGQgY2FzdHMgdG8gYXZvaWQKCXdhcm5pbmdzLgoJKiBtYWNobW9kZS5oOiBJbmNsdWRlIGluc24tbW9kZXMuaCwgbm90IG1hY2htb2RlLmRlZi4gIEluY2x1ZGUKCW1vZGUtY2xhc3Nlcy5kZWYgdG8gZGVmaW5lIGVudW0gbW9kZV9jbGFzcy4gIFR3ZWFrIGRlZmluaXRpb25zCglvZiBHRVRfTU9ERV9DTEFTUywgR0VUX01PREVfU0laRSwgR0VUX01PREVfQklUU0laRSwgR0VUX01PREVfTUFTSywKCUdFVF9NT0RFX0lOTkVSLCBHRVRfTU9ERV9XSURFUl9NT0RFLCBHRVRfQ0xBU1NfTkFSUk9XRVNUX01PREUuCgkoaW5uZXJfbW9kZV9hcnJheSk6IFJlbmFtZWQgbW9kZV9pbm5lci4KCShtb2RlX2Jhc2VfYWxpZ24pOiBOZXcuCgkqIHJ0bC5jIChtb2RlX25hbWUsIG1vZGVfY2xhc3MsIG1vZGVfYml0c2l6ZSwgbW9kZV9zaXplLAoJbW9kZV91bml0X3NpemUsIG1vZGVfd2lkZXJfbW9kZSwgbW9kZV9tYXNrX2FycmF5LAoJaW5uZXJfbW9kZV9hcnJheSwgY2xhc3NfbmFycm93ZXN0X21vZGUpOiBEZWxldGUgZGVmaW5pdGlvbnMuCgkqIHN0b3ItbGF5b3V0LmMgKGdldF9tb2RlX2FsaWdubWVudCk6IFVzZSBtb2RlX2Jhc2VfYWxpZ24uCgkqIHJlYWwuaDogVXNlIE1JTl9NT0RFX0ZMT0FUIGFuZCBNQVhfTU9ERV9GTE9BVCwgbm90IFFGbW9kZQoJYW5kIFRGbW9kZSwgaW4gcmVhbF9mb3JtYXRfZm9yX21vZGUgYW5kIFJFQUxfTU9ERV9GT1JNQVQuCgoJKiBjb25maWcvaXAyay9pcDJrLmgsIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmg6CglObyBuZWVkIHRvIGRlZmluZSBCSVRTX1BFUl9VTklULgoKMjAwMy0xMC0xMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF92bXNfaW5pdF9saWJmdW5jcyk6IE5ldyBmdW5jdGlvbi4KCShpYTY0X291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IE9ubHkgd3JpdGUgLnByb2xvZ3VlIGlmIC0td2l0aC1nbnUtYXMuCgkoaWE2NF9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBJZiBub3QgdXNpbmcgR0FTLCBkZWNsYXJlIHRyYW1wb2xpbmUKCWFzIGdsb2JhbC4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fQVBQX09OLCBBU01fQVBQX09GRik6IEFkZCB2ZXJzIGZvciBub3QgR0FTLgoJKEFTTV9PVVRQVVRfREVCVUdfTEFCRUwpOiBMaWtld2lzZS4KCgkqIHN0b3ItbGF5b3V0LmMgKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBEb24ndCBmb3JjZSBCTEttb2RlIGlmCglmaWVsZCBpcyB6ZXJvLWxlbmd0aCBCTEttb2RlLgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBIYW5kbGUgY2FzZSBvZiBCTEttb2RlCgl6ZXJvLXNpemUgcmVmZXJlbmNlcy4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9saW5rcyk6IFByb3Blcmx5IHRlc3QgZm9yIFJFRyBiZWluZyBzZXQuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZXhwYW5kX2Jsb2NrX21vZGUpOiBEb24ndCB1c2UKCWdlbl9sb3dwYXJ0IGFuZCBjb21wYW55IGV4Y2VwdCBmb3IgUkVHLgoKMjAwMy0xMC0xMCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhNjQtaHB1eC5oIChMSU5LX1NQRUMpOiBVc2UgYC16JyBvcHRpb24gd2l0aCBIUCBsZC4KCjIwMDMtMTAtMTAgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYyAobWlwcyotKi1uZXRic2QqKTogUmVtb3ZlIGNvbnRlbnQtZnJlZSBsaW5lLgoKMjAwMy0xMC0xMCAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8aGVybWFudGVuYnJ1Z2dlQGhvbWUubmw+CgoJKiBnY292LWlvLmg6IENoZWNrIEJJVFNfUEVSX1VOSVQgd2hlbiBkZWZpbmluZyBnY292X3Vuc2lnbmVkX3QsCglnY292X3Bvc2l0aW9uX3QgYW5kIGdjb3ZfdHlwZS4KCjIwMDMtMTAtMDkgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluIChIQVZFX0FTX1RMUyk6IEFkZCBzaC0qLSogYW5kIHNoWzM0XSotKi0qIGNhc2VzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTEwLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChkZWZpbmVfYXNtX2F0dHJpYnV0ZXMpOiBTcGVjaWZ5Cgl0aGUgbGVuZ3RoIG9mIGFuIGFzbSBpbnNuIG1vcmUgcHJlY2lzZWx5LgoKMjAwMy0xMC0wOSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChTVUJUQVJHRVRfQ1BQX1NQRUMpOiBEZWZpbmUuCgoyMDAzLTEwLTA5ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoeHRlbnNhX2RieF9yZWdpc3Rlcl9udW1iZXIpOiBDaGFuZ2UgZmlyc3QKCUZQIHJlZ2lzdGVyIG51bWJlciB0byA0OCBhbmQgTUFDMTYgYWNjdW11bGF0b3IgdG8gMHgyMTAuCgoyMDAzLTEwLTA5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSByZWR1bmRhbnQgdGhyZWFkX2ZpbGUgc2V0dGluZyBjbGF1c2VzIGZvcgoJdmFyaW91cyAqLSotbGludXgqIHRhcmdldHMuCgoyMDAzLTEwLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChkZWZpbmVfYXNtX2F0dHJpYnV0ZXMpOiBOZXcuCgoyMDAzLTEwLTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIG9wdGFicy5jIChwcmVwYXJlX2Zsb2F0X2xpYl9jbXApOiBBbHdheXMgYXR0YWNoIGEgUkVHX0VRVUFMIG5vdGUKCXRvIHRoZSBjb21wYXJpc29uLCBhcyBlbWl0X2xpYmNhbGxfYmxvY2sgY2FsbHMgY29weV9ydHggb24gZXF1aXYuCgoyMDAzLTEwLTA5ICBEb3JpdCBOYWlzaGxvcyAgPGRvcml0QGlsLmlibS5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChva19mb3JfZWFybHlfc2NoZWR1bGUpOiBOZXcgZnVuY3Rpb24uCgkoZWFybHlfcXVldWVfdG9fcmVhZHkpOiBOZXcgZnVuY3Rpb24uCgkoc2NoZWR1bGVfYmxvY2spOiBBbGxvdyBlYXJseSByZW1vdmFsIG9mIGluc25zIGZyb20gUS4KCShzY2hlZHVsZV9pbnNuKTogVXBkYXRlIElOU05fVElDSyBpbiBjYXNlIG9mIHByZW1hdHVyZQoJaXNzdWUuCgkqIGNvbW1vbi5vcHQgKHNjaGVkX3N0YWxsZWRfaW5zbnMpOiBOZXcgZmxhZy4KCShzY2hlZF9zdGFsbGVkX2luc25zX2RlcCk6IE5ldyBmbGFnLgoJKiBmbGFncy5oOiBTYW1lIGFib3ZlIGZsYWdzLgoJKiBvcHRzLmM6IFNhbWUgYXMgYWJvdmUuCgkqIHRvcGxldi5jOiBTYW1lIGFzIGFib3ZlLgoJKiB0YXJnZXQuaCAodGFyZ2V0bS5zY2hlZC5pc19jb3N0bHlfZGVwZW5kZW5jZSk6IE5ldwoJaG9vay4KCSogdGFyZ2V0LWRlZi5oOiBTYW1lIGFzIGFib3ZlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiAocnM2MDAwX3NjaGVkX2Nvc3RseV9kZXApOgoJU3VwcG9ydCBuZXcgZmxhZyAtbXNjaGVkLWNvc3RseS1kZXAuCgkoREVGQVVMVF9TQ0hFRF9DT1NUTFlfREVQKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOgoJKHJzNjAwMF9pc19jb3N0bHlfZGVwZW5kZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShpc19sb2FkX2luc24sIGlzX3N0b3JlX2luc24pOiBOZXcgZnVuY3Rpb25zLgoJKGlzX2xvYWRfaW5zbjEsIGlzX3N0b3JlX2luc24xLCBpc19tZW1fcmVmKTogTmV3CglmdW5jdGlvbnMuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZzY2hlZC1zdGFsbGVkLWluc25zLWRlcCkKCSgtZnNjaGVkLXN0YWxsZWQtaW5zbnMsIC1tc2NoZWQtY29zdGx5LWRlcCk6IERvY3VtZW50CglvcHRpb25zLgoJKiBkb2MvdG0udGV4aSAoaXNfY29zdGx5X2RlcGVuZGVuY2UpOiBEZWZpbmUgbmV3CglzY2hlZHVsZXIgdGFyZ2V0IGhvb2suCgoyMDAzLTEwLTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvNjM5MgoJKiBjLWNvbW1vbi5jIChjX2J1aWxkX3F1YWxpZmllZF90eXBlKTogTG9vayB0aHJvdWdoIGFycmF5cyBmaXJzdC4KCShjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IExvb2sgdGhyb3VnaCBhcnJheXMuCgoJKiBjLWNvbW1vbi5jIChjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IFVuc2V0IFRSRUVfUkVBRE9OTFkgZm9yCgl0eXBlcyB3aXRoIGNvbnN0cnVjdG9ycy4KCgkqIGNvdmVyYWdlLmMgKGJ1aWxkX2N0cl9pbmZvX3ZhbHVlKTogVXNlIGJ1aWxkX2RlY2wgdG8gbWFrZSBhCglWQVJfREVDTC4KCShjcmVhdGVfY292ZXJhZ2UpOiBMaWtld2lzZS4KCgkqIHN0bXQuYyAocmVzb2x2ZV9hc21fb3BlcmFuZF9uYW1lcyk6IENhbGwgY2hlY2tfdW5pcXVlX29wZXJhbmRfbmFtZXMKCWhlcmUuCgkoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IE5vdCBoZXJlLgoJKHBhcnNlX2lucHV0X2NvbnN0cmFpbnQpOiBObyBsb25nZXIgc3RhdGljLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDAzLTEwLTA4ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC90LWxpbnV4IChTSExJQl9MSU5LKTogT3ZlcnJpZGUgdG8gdXNlIGEgbGlua2VyIHNjcmlwdAoJbGliZ2NjX3Muc28uCgkoU0hMSUJfSU5TVEFMTCk6IExpa2V3aXNlLgoKMjAwMy0xMC0wOCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIHJlbW92ZWQgJ3B0aHJlYWRzJyB0aHJlYWQKCW9wdGlvbi4KCjIwMDMtMTAtMDggIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICgiYWJzc2kyX2lzZWwiKTogQWRkIGVhcmx5IGNsb2JiZXIgdG8KCW9wZXJhbmQgMi4KCjIwMDMtMTAtMDggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogRG9uJ3QgYWNjZXB0IC0tZW5hYmxlLXRocmVhZHM9cHRocmVhZHMuICBDbGVhbgoJdXAgcmVsYXRlZCBjYXNlIHN0YXRlbWVudHMuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgYWNjZXB0IC0tZW5hYmxlLXRocmVhZHM9cHRocmVhZHMsCglkZWNvc2YxLCBtYWNoLCBvciBvczIgKG5vbmUgb2Ygd2hpY2ggd29yayBhbnl3YXkpLiAgQWxwaGFiZXRpemUKCXN1cHBvcnRlZCB0aHJlYWQgZmlsZXMgaW4gY2FzZSBjbGF1c2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMTAtMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZnVuY3Rpb24uYyAocGFkX3RvX2FyZ19hbGlnbm1lbnQpOiBNb3ZlICdib3VuZGFyeV9pbl9ieXRlcycKCWRlZmluaXRpb24gdG8gYWJvdmUgU1BBUkNfU1RBQ0tfQk9VTkRBUllfSEFDSy4KCjIwMDMtMTAtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19wb3N0Zml4X2V4cHJlc3Npb24pCgk8Q09NUE9VTkRfTElURVJBTF9FWFBSPjogRml4IHRoaW5rby4KCjIwMDMtMTAtMDggIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogbWtsaWJnY2MuaW46IERvbid0IGhpZGUgdW5kZWZpbmVkIG9yIHR5cGVsZXNzIHN5bWJvbHMuCgoyMDAzLTEwLTA4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIG9wdGltaXphdGlvbi8xMjE0MgoJKiBjc2UuYyAoY291bnRfcmVnX3VzYWdlKTogSW4gYSBTRVQgd2l0aCBhIFJFRyBTRVRfREVTVCwgY291bnQgdGhlCgl1c2VzIG9mIHRoZSByZWdpc3RlciBpbiB0aGUgU0VUX1NSQy4gIFJlbW92ZSB1bm5lY2Vzc2FyeSBhcmd1bWVudC4KCSogcGEuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IEJlZm9yZSByZWxvYWQsIHVzZSBhIHNjcmF0Y2ggcmVnaXN0ZXIKCWZvciB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBpbiBsb2FkaW5nIHRoZSBhZGRyZXNzIG9mIGEgU1lNQk9MX1JFRi4KCVNldCB0aGUgTUVNX05PVFJBUF9QIGZsYWcgZm9yIHRoZSBNRU0uICBBZGQgYSBSRUdfRVFVQUwgdG8gdGhlIGluc24KCXdoaWNoIGxvYWRzIHRoZSBTWU1CT0xfUkVGIGFkZHJlc3MuCgoyMDAzLTEwLTA4ICBUaW1vIEtva2tvbmVuICA8dGprb0Bpa2kuZmk+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBib290c3RyYXAvMTI0OTAKCSogc2Nhbi1kZWNscy5jIChNQVhfRVhURVJOX0NfQlJBQ0VTKTogTmV3IHByZXByb2Nlc3NvciBjb25zdGFudAoJdG8gZGVmaW5lIHRoZSBzaXplIG9mIHRoZSBleHRlcm5fQ19icmFjZXMgYXJyYXkuICBTZXQgaXQgdG8gMjAwLgoJKHNjYW5fZGVjbHMpOiBBYm9ydCB3aGVuIGV4dGVybl9DX2JyYWNlc19sZW5ndGggaXMgb3V0LW9mLWJvdW5kcy4KCjIwMDMtMTAtMDggIENhcmxvIFdvb2QgIDxjYXJsb0BhbGlub2UuY29tPgoKCSogTWFrZWZpbGUuaW4gKGdlbmd0eXBlLWxleC5jKTogZmxleCAyLjUuNFthXSBkb2Vzbid0IHVuZGVyc3RhbmQKCWEgc3BhY2UgYWZ0ZXIgdGhlIC1vIG9wdGlvbi4gIGZsZXggMi41LjMxIHVuZGVyc3RhbmRzIGJvdGgsIHdpdGgKCWFuZCB3aXRob3V0IHRoZSBzcGFjZS4gUmVtb3ZlZCB0aGF0IHNwYWNlLgoKMjAwMy0xMC0wOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2ZyYW1lX2luZm8pOiBBZGQgY3ByZXN0b3JlX3NpemUgZmllbGQuCgkoY29tcHV0ZV9mcmFtZV9zaXplKTogSW5pdGlhbGl6ZSBpdC4gIFJlbW92ZSB0aGUgLmNwcmVzdG9yZSBzbG90Cglmcm9tIGFyZ3Nfc2l6ZS4KCShtaXBzX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFNpbXBsaWZ5IGFjY29yZGluZ2x5LgoJKG1pcHNfZGVidWdnZXJfb2Zmc2V0KTogQ2hhbmdlIHRoZSBtaXBzMTYgZnJhbWUgcG9pbnRlciBvZmZzZXQgZnJvbQoJY3VycmVudF9mdW5jdGlvbl9vdXRnb2luZ19hcmdzIHRvIGNmdW4tPm1hY2hpbmUtPmZyYW1lLmFyZ3Nfc2l6ZS4KCShtaXBzX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTGlrZXdpc2UuCgkobWlwc19leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4KCShtaXBzX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKMjAwMy0xMC0wOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChFWFRSQV9DT05TVFJBSU5UKTogQWRkICdXJyBjb25zdHJhaW50LgoJKEVYVFJBX01FTU9SWV9DT05TVFJBSU5UKTogRGVmaW5lLgoJKENBTl9FTElNSU5BVEUpOiBSZW1vdmUgbHd1IHdvcmthcm91bmQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCp6ZXJvX2V4dGVuZHNpZGkyX21lbSk6IEVuYWJsZSBmb3IgbWlwczE2IHRvby4KCVVzZSBhICdXJyBjb25zdHJhaW50IGZvciB0aGUgc291cmNlIG9wZXJhbmQuCgoyMDAzLTEwLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZ2Vub3Bpbml0LmMgKG1haW4pOiBPdXRwdXQgY29kZSB0byBkZWNsYXJlIHVuZGVmaW5lZAoJdmFyaWFibGVzLgoKMjAwMy0xMC0wNyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGdlbmd0eXBlLWxleC5sOiBSZW1vdmUgLVd0cmFkaXRpb25hbCBjcnVmdC4KCSogTWFrZWZpbGUuaW4gKGdlbmd0eXBlLWxleC5jKTogTGlrZXdpc2UuCgoyMDAzLTEwLTA3ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmdsb29wbWFuaXAuYyAoZml4X2lycmVkdWNpYmxlX2xvb3BzKTogSW5pdGlhbGl6ZSBlIGNvcnJlY3RseS4KCjIwMDMtMTAtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xMjUxOQoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfY2xlYW51cF9zdG10KTogSWdub3JlIHRoZSBDTEVBTlVQX0RFQ0wgaWYKCWl0IGlzbid0IGEgZGVjbC4KCjIwMDMtMTAtMDcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogT25seSBwYXNzIC1md29ya2luZy1kaXJlY3RvcnkgZm9yIC1nKiBpZgoJbm90IG92ZXJyaWRkZW4uCglGaXhlcyBQUiBib290c3RyYXAvMTIxNzMuCgoyMDAzLTEwLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3JzLmM6IERvbid0IGluY2x1ZGUgY29yZXR5cGVzLmggb3IgdG0uaC4KCSh0cmltX2ZpbGVuYW1lKTogVXNlIElTX0RJUl9TRVBBUkFUT1IuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzIG9mIGVycm9ycy5vIGFuZAoJJChCVUlMRF9QUkVGSVhfMSllcnJvcnMuby4KCjIwMDMtMTAtMDcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZnVuY3Rpb24uYyAocGFkX3RvX2FyZ19hbGlnbm1lbnQpOiBUYWtlIFNUQUNLX1BPSU5URVJfT0ZGU0VUIGludG8KCWFjY291bnQJd2hlbiBhbGlnbmluZyBhcmd1bWVudHMuCgkqIGNhbGxzLmMgKFNUQUNLX1BPSU5URVJfT0ZGU0VUKTogTW92ZSBkZWZhdWx0IGZyb20gaGVyZSAuLi4KCSogZGVmYXVsdHMuaCAoU1RBQ0tfUE9JTlRFUl9PRkZTRVQpOiAuLi4gdG8gaGVyZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFNUQUNLX0JPVU5EQVJZKTogQWRkIGNvbW1lbnQgYWJvdXQgaG93CglpdCdzIHdyb25nIHdoZW4gVEFSR0VUX0FSQ0g2NCAmJiBUQVJHRVRfU1RBQ0tfQklBUy4KCShTUEFSQ19TVEFDS19CT1VOREFSWV9IQUNLKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChmdW5jdGlvbl9hcmcpOiBPbiBub24tU1ZSNCBzeXN0ZW1zLAoJYXJyYW5nZSBmb3IgdmVjdG9yIHBhcmFtZXRlcnMgdG8gdmFyYXJncyBmdW5jdGlvbnMgdG8gYmUgcGFzc2VkCglpbiBib3RoIG1lbW9yeSBhbmQgR1BScyB3aGVuIGFwcHJvcHJpYXRlLgoJKHJzNjAwMF92YV9hcmcpOiBWZWN0b3IgYXJndW1lbnRzIHBhc3NlZCBpbiBtZW1vcnkgYXJlIDE2LWJ5dGUKCWFsaWduZWQuCgoJKiBob29rcy5jIChob29rX2Jvb2xfdHJlZV90cnVlKTogTmV3LgoJKGhvb2tfcnR4X3RyZWVfaW50X251bGwpOiBOZXcuCgkoaG9va19ydHhfcnR4X251bGwpOiBVc2UgTlVMTCwgbm90IDAuCgkqIGhvb2tzLmg6IEFkZCAnZXh0ZXJuJyB0byBldmVyeXRoaW5nLgoJKGhvb2tfYm9vbF90cmVlX3RydWUpOiBOZXcuCgkoaG9va19ydHhfdHJlZV9pbnRfbnVsbCk6IE5ldy4KCSogdGFyZ2hvb2tzLmMgKGhvb2tfYm9vbF9DVU1VTEFUSVZFX0FSR1NfdHJ1ZSk6IE5ldy4KCSogdGFyZ2hvb2tzLmggKGhvb2tfYm9vbF9DVU1VTEFUSVZFX0FSR1NfdHJ1ZSk6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBSZW1vdmUKCXByb3RvdHlwZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3JldHVybl9pbl9tZW1vcnkpOiBOZXcuCgkoc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IFByb3RvdHlwZS4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTKTogRGVmaW5lLgoJKFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTik6IERlZmluZS4KCShUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCk6IERlZmluZS4KCShUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IERlZmluZS4KCShUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IERlZmluZS4KCShUQVJHRVRfU1RSSUNUX0FSR1VNRU5UX05BTUlORyk6IERlZmluZS4KCShUQVJHRVRfUFJFVEVORF9PVVRHT0lOR19WQVJBUkdTX05BTUVEKTogRGVmaW5lLgoJKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogVXNlIHJzNjAwMF9yZXR1cm5faW5fbWVtb3J5LgoJKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBNYWtlICdzdGF0aWMnLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChQUk9NT1RFX0ZVTkNUSU9OX0FSR1MpOiBEZWxldGUuCgkoUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBEZWxldGUuCgkoU1RSVUNUX1ZBTFVFKTogRGVsZXRlLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBEZWxldGUuCgkoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IERlbGV0ZS4KCjIwMDMtMTAtMDcgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBTaW1wbGlmeSBhbmQgY2xhcmlmeSB0aGUKCWRlc2NyaXB0aW9ucyBvZiAtV25vbm51bGwgYW5kIC1XaW5pdC1zZWxmLgoKMjAwMy0xMC0wNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBvcHRhYnMuYyAoaW5pdF9pbnRyYWNsYXNzX2NvbnZfbGliZnVuY3MpOiBGaXggb3JkZXIgb2YgYXJyYXkKCWluZGljZWVzIGZvciBmbG9hdGluZy1wb2ludCBjb252ZXJzZXJzaW9uIGxpYmNhbGxzLgoKMjAwMy0xMC0wNyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogQWRkIG1vcmUgY29tbWVudHMgc2VwYXJhdGluZyBsYXJnZSBjb25jZXB0dWFsbHkKCXNlcGFyYXRlIHNlY3Rpb25zLgoKCSogY29uZmlndXJlLmluOiBDbGVhbiB1cCB0aHJlYWQgZmlsZSBsb2dpYy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0xMC0wNyAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCAoUkVBRE9OTFlfREFUQV9TRUNUSU9OX0FTTV9PUCk6IERlZmluZS4KCShzd2l0Y2hfdG9fc2VjdGlvbik6IEhhbmRsZSBpbl9yZWFkb25seV9kYXRhLgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX2FzbV9uYW1lZF9zZWN0aW9uKTogSGFuZGxlCglyZWFkb25seSBkYXRhLgoKMjAwMy0xMC0wNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKGNtcHNpMl9hZGRuZWcpOiBOZXcgQVJNIHBhdHRlcm4uIEFkZCBwZWVwaG9sZTIgdG8gZ2VuZXJhdGUKCWl0LgoJKGNicmFuY2huZV9kZWNyMSk6IE5ldyBUaHVtYiBwYXR0ZXJuLgoJKiBhcm0uYyAoYXJtX2FkZGltbV9vcGVyYW5kKTogTmV3IGluc24gcHJlZGljYXRlLgoJKiBhcm0tcHJvdG9zLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IgaXQuCgkqIGFybS5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgaXQuCgoyMDAzLTEwLTA3ICBEb3JpdCBOYWlzaGxvcyA8ZG9yaXRAaWwuaWJtLmNvbT4KCgkqIHNjaGVkLWludC5oIChzY2hlZF9pbmZvKTogTmV3IGZpZWxkCglzY2hlZF9tYXhfaW5zbnNfcHJpb3JpdHkuCgkqIHNjaGVkLXJnbi5jIChpbml0X3JlYWR5X2xpc3QpOiBBZGQgaW52b2NhdGlvbnMgdG8KCXRhcmdldG0uc2NoZWQuYWRqdXN0X3ByaW9yaXR5LgoJKHNjaGVkX21heF9pbnNuc19wcmlvcml0eSk6IEluaXQgbmV3IGZpZWxkLgoJKiBzY2hlZC1lYmIuYyAoc2NoZWRfbWF4X2luc25zX3ByaW9yaXR5KTogSW5pdCBuZXcgZmllbGQuCgkqIGhhaWZhLXNjaGVkLmMgKHNldF9wcmlvcml0aWVzKTogU2V0CglzY2hlZF9pbmZvLT5zY2hlZF9tYXhfaW5zbnNfcHJpb3JpdHkuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmg6CgkocnM2MDAwX3NjaGVkX3Jlc3RyaWN0ZWRfaW5zbnNfcHJpb3JpdHlfc3RyKTogU3VwcG9ydCBuZXcKCWZsYWcgLW1wcmlvcml0aXplLXJlc3RyaWN0ZWQtaW5zbnMuCgkoREVGQVVMVF9SRVNUUklDVEVEX0lOU05TX1BSSU9SSVRZKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChpc19kaXNwYXRjaF9zbG90X3Jlc3RyaWN0ZWQpOiBOZXcKCWZ1bmN0aW9uLgoJKHJzNjAwMF9hZGp1c3RfcHJpb3JpdHkpOiBDaGFuZ2UgcHJpb3JpdHkgb2YgcmVzdHJpY3RlZAoJaW5zbnMsIHVzaW5nIGFib3ZlIG5ldyBmdW5jdGlvbiBhbmQgbmV3IGZsYWcuCgkqIGRvYy9pbnZva2UudGV4aSAoLW1wcmlvcml0aXplLXJlc3RyaWN0ZWQtaW5zbnMpOiBEb2N1bWVudAoJbmV3IG9wdGlvbi4KCjIwMDMtMTAtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKGNtcHN0cl9vcHRhYiwgY21wbWVtX29wdGFiKTogTmV3LgoJKiBnZW5vcGluaXQuYzogSW5pdGlhbGl6ZSB0aGVtLgoJKiBvcHRhYnMuaDogRGVjbGFyZSB0aGVtLgoJKiBvcHRhYnMuYyAoaW5pdF9vcHRhYnMpOiBDbGVhciB0aGVtLgoJKHByZXBhcmVfY21wX2luc24pOiAgVXNlIGNtcHN0cl9vcHRhYiBhbmQgY21wbWVtX29wdGFiIHRvIGZpbmQKCWJsb2NrIG1lbW9yeSBjb21wYXJlIGluc25zLCBub3QgY29uZGl0aW9uYWwgY2hhaW5zLiAgUmVzdHJ1Y3R1cmUKCXRoZSBmYWxsYmFjayBnZW5lcmF0aW9uIG9mIGEgY2FsbCB0byBtZW1jbXAvYmNtcCBmb3IgYmV0dGVyCglyZWFkYWJpbGl0eS4KCjIwMDMtMTAtMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoTUlQU19NQVhfRklSU1RfU1RBQ0tfU1RFUCk6IE5ldyBtYWNyby4KCShtaXBzX3NhdmVfcmVzdG9yZV9mbik6IE5ldyB0eXBlZGVmLgoJKG1pcHNfYWRkX2xhcmdlX29mZnNldF90b19zcCwgbWlwc19lbWl0X2ZyYW1lX3JlbGF0ZWRfc3RvcmUpOiBSZW1vdmUuCgkobWlwc19zZXRfZnJhbWVfZXhwciwgbWlwc19mcmFtZV9zZXQpOiBNb3ZlIGFib3ZlIHByb2xvZ3VlIGNvZGUuCgkoc2F2ZV9yZXN0b3JlX2luc25zKTogUmVtb3ZlLCByZXBsYWNpbmcgd2l0aC4uLgoJKG1pcHNfc2F2ZV9yZXN0b3JlX3JlZywgbWlwc19mb3JfZWFjaF9zYXZlZF9yZWcpOiAuLi50aGVzZSBuZXcgZm5zLgoJKG1pcHNfc2F2ZV9yZWcsIG1pcHNfcmVzdG9yZV9yZWcpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19leHBhbmRfcHJvbG9ndWUsIG1pcHNfZXhwYW5kX2VwaWxvZ3VlKTogUmV3b3JrLgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1JUFNfVEVNUDFfUkVHTlVNLCBNSVBTX1RFTVAyX1JFR05VTSk6IFJlbW92ZS4KCShNSVBTX1BST0xPR1VFX1RFTVBfUkVHTlVNLCBNSVBTX0VQSUxPR1VFX1RFTVBfUkVHTlVNKTogTmV3IG1hY3Jvcy4KCShNSVBTX1BST0xPR1VFX1RFTVAsIE1JUFNfRVBJTE9HVUVfVEVNUCk6IE5ldyBtYWNyb3MuCgoyMDAzLTEwLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZXhwYW5kX3Byb2xvZ3VlKTogUmVtb3ZlIHVudXNlZAoJdHJhdmVyc2FsIG9mIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCjIwMDMtMTAtMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gb2YgLW1lbnRyeS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2VudHJ5X3N0cmluZywgbWlwc19lbnRyeSk6IFJlbW92ZS4KCShvdmVycmlkZV9vcHRpb25zLCBtaXBzX3NhdmVfcmVnX3ApOiBSZW1vdmUgaGFuZGxpbmcuCgkoY29tcHV0ZV9mcmFtZV9zaXplLCBtaXBzX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKG1pcHNfZXhwYW5kX3Byb2xvZ3VlLCBtaXBzX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKG1pcHNfZW50cnlfc3RyaW5nKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKFRBUkdFVF9PUFRJT05TKTogUmVtb3ZlIC1tZW50cnkuCgkqIGNvbmZpZy9taXBzL21pcHMxNi5TOiBSZW1vdmUgbWVudGlvbiBvZiAtbWVudHJ5LgoKMjAwMy0xMC0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxpYmZ1bmNzLmggKExUSV9leHRlbmRzZmRmMiwgTFRJX2V4dGVuZHNmeGYyLCBMVElfZXh0ZW5kc2Z0ZjIpCgkoTFRJX2V4dGVuZGRmeGYyLCBMVElfZXh0ZW5kZGZ0ZjIsIExUSV90cnVuY2Rmc2YyLCBMVElfdHJ1bmN4ZnNmMikKCShMVElfdHJ1bmN0ZnNmMiwgTFRJX3RydW5jeGZkZjIsIExUSV90cnVuY3RmZGYyLCBMVElfZmxvYXRzaXNmKQoJKExUSV9mbG9hdGRpc2YsIExUSV9mbG9hdHRpc2YsIExUSV9mbG9hdHNpZGYsIExUSV9mbG9hdGRpZGYpCgkoTFRJX2Zsb2F0dGlkZiwgTFRJX2Zsb2F0c2l4ZiwgTFRJX2Zsb2F0ZGl4ZiwgTFRJX2Zsb2F0dGl4ZikKCShMVElfZmxvYXRzaXRmLCBMVElfZmxvYXRkaXRmLCBMVElfZmxvYXR0aXRmLCBMVElfZml4c2ZzaSwgTFRJX2ZpeHNmZGkpCgkoTFRJX2ZpeHNmdGksIExUSV9maXhkZnNpLCBMVElfZml4ZGZkaSwgTFRJX2ZpeGRmdGksIExUSV9maXh4ZnNpKQoJKExUSV9maXh4ZmRpLCBMVElfZml4eGZ0aSwgTFRJX2ZpeHRmc2ksIExUSV9maXh0ZmRpLCBMVElfZml4dGZ0aSkKCShMVElfZml4dW5zc2ZzaSwgTFRJX2ZpeHVuc3NmZGksIExUSV9maXh1bnNzZnRpLCBMVElfZml4dW5zZGZzaSkKCShMVElfZml4dW5zZGZkaSwgTFRJX2ZpeHVuc2RmdGksIExUSV9maXh1bnN4ZnNpLCBMVElfZml4dW5zeGZkaSkKCShMVElfZml4dW5zeGZ0aSwgTFRJX2ZpeHVuc3Rmc2ksIExUSV9maXh1bnN0ZmRpLCBMVElfZml4dW5zdGZ0aSkKCShleHRlbmRzZmRmMl9saWJmdW5jLCBleHRlbmRzZnhmMl9saWJmdW5jLCBleHRlbmRzZnRmMl9saWJmdW5jKQoJKGV4dGVuZGRmeGYyX2xpYmZ1bmMsIGV4dGVuZGRmdGYyX2xpYmZ1bmMsIHRydW5jZGZzZjJfbGliZnVuYykKCSh0cnVuY3hmc2YyX2xpYmZ1bmMsIHRydW5jdGZzZjJfbGliZnVuYywgdHJ1bmN4ZmRmMl9saWJmdW5jKQoJKHRydW5jdGZkZjJfbGliZnVuYywgZmxvYXRzaXNmX2xpYmZ1bmMsIGZsb2F0ZGlzZl9saWJmdW5jKQoJKGZsb2F0dGlzZl9saWJmdW5jLCBmbG9hdHNpZGZfbGliZnVuYywgZmxvYXRkaWRmX2xpYmZ1bmMpCgkoZmxvYXR0aWRmX2xpYmZ1bmMsIGZsb2F0c2l4Zl9saWJmdW5jLCBmbG9hdGRpeGZfbGliZnVuYykKCShmbG9hdHRpeGZfbGliZnVuYywgZmxvYXRzaXRmX2xpYmZ1bmMsIGZsb2F0ZGl0Zl9saWJmdW5jKQoJKGZsb2F0dGl0Zl9saWJmdW5jLCBmaXhzZnNpX2xpYmZ1bmMsIGZpeHNmZGlfbGliZnVuYywgZml4c2Z0aV9saWJmdW5jKQoJKGZpeGRmc2lfbGliZnVuYywgZml4ZGZkaV9saWJmdW5jLCBmaXhkZnRpX2xpYmZ1bmMsIGZpeHhmc2lfbGliZnVuYykKCShmaXh4ZmRpX2xpYmZ1bmMsIGZpeHhmdGlfbGliZnVuYywgZml4dGZzaV9saWJmdW5jLCBmaXh0ZmRpX2xpYmZ1bmMpCgkoZml4dGZ0aV9saWJmdW5jLCBmaXh1bnNzZnNpX2xpYmZ1bmMsIGZpeHVuc3NmZGlfbGliZnVuYykKCShmaXh1bnNzZnRpX2xpYmZ1bmMsIGZpeHVuc2Rmc2lfbGliZnVuYywgZml4dW5zZGZkaV9saWJmdW5jKQoJKGZpeHVuc2RmdGlfbGliZnVuYywgZml4dW5zeGZzaV9saWJmdW5jLCBmaXh1bnN4ZmRpX2xpYmZ1bmMpCgkoZml4dW5zeGZ0aV9saWJmdW5jLCBmaXh1bnN0ZnNpX2xpYmZ1bmMsIGZpeHVuc3RmZGlfbGliZnVuYykKCShmaXh1bnN0ZnRpX2xpYmZ1bmMpOiBEZWxldGUuCgkqIG9wdGFicy5oIChzdHJ1Y3Qgb3B0YWJfaGFuZGxlcnMpOiBCcmVhayBvdXQgb2Ygc3RydWN0IG9wdGFiLgoJKHN0cnVjdCBjb252ZXJ0X29wdGFiLCBjb252ZXJ0X29wdGFiLCBlbnVtIGNvbnZlcnRfb3B0YWJfaW5kZXgsCgljb252ZXJ0X29wdGFiX3RhYmxlLCBzZXh0X29wdGFiLCB6ZXh0X29wdGFiLCB0cnVuY19vcHRhYiwKCXNmaXhfb3B0YWIsIHVmaXhfb3B0YWIsIHNmaXh0cnVuY19vcHRhYiwgdWZpeHRydW5jX29wdGFiLAoJc2Zsb2F0X29wdGFiLCB1ZmxvYXRfb3B0YWIpOiBOZXcuCgkoc2V0X2NvbnZfbGliZnVuYyk6IFByb3RvdHlwZS4KCShHRU5fRkNOKTogVXNlIEM5MCBpbmRpcmVjdCBjYWxsIHN5bnRheCwgcmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3QuCgkodHJ1bmNfb3B0YWIpOiBSZW5hbWVkIGJ0cnVuY19vcHRhYi4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWF0aGZuKTogVXBkYXRlIHRvIG1hdGNoLgoJKiBvcHRhYnMuYyAoZXh0ZW5kdGFiLCBmaXh0YWIsIGZpeHRydW5jdGFiLCBmbG9hdHRhYik6IERlbGV0ZS4KCShjb252ZXJ0X29wdGFiX3RhYmxlLCBuZXdfY29udmVydF9vcHRhYiwgaW5pdF9jb252ZXJ0X29wdGFiKQoJKGluaXRfaW50ZXJjbGFzc19jb252X2xpYmZ1bmNzLCBpbml0X2ludHJhY2xhc3NfY29udl9saWJmdW5jcykKCShzZXRfY29udl9saWJmdW5jKTogTmV3LgoJKGNhbl9leHRlbmRfcCwgZ2VuX2V4dGVuZF9pbnNuLCBjYW5fZml4X3AsIGNhbl9mbG9hdF9wKQoJKGV4cGFuZF9mbG9hdCwgZXhwYW5kX2ZpeCk6IFVzZSBuZXcgY29udmVyc2lvbiBvcHRhYnMsCglub3Qgb2xkIGluc24gY29kZSB0YWJsZXMgb3IgbG9uZyBjaGFpbnMgb2YgaWZzLgoJKGluaXRfb3B0YWJzKTogTm8gbmVlZCB0byBjbGVhciBvbGQgaW5zbiBjb2RlIHRhYmxlcy4KCUluaXRpYWxpemUgdGhlIG5ldyBvcHRhYnMsIG5vdCB0aGUgb2xkIGxpYmZ1bmMgYXJyYXkgZW50cmllcy4KCURvbid0IGhhbmRsZSBGSVhVTlNfVFJVTkNfTElLRV9GSVhfVFJVTkMgaGVyZS4KCSogZ2Vub3Bpbml0LmM6IEluaXRpYWxpemUgY29udmVyc2lvbiBvcHRhYnMsIG5vdCB0aGUKCWZvcm1lciBpbnNuIGNvZGUgdGFibGVzLiAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3RzLgoJSGFuZGxlIEZJWFVOU19UUlVOQ19MSUtFX0ZJWF9UUlVOQyBoZXJlLgoJKiBleHByLmMgKGNvbnZlcnRfbW92ZSk6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2sgdGhhdAoJdG9fcmVhbD09ZnJvbV9yZWFsLiAgVXNlIHRoZSBjb252ZXJzaW9uIG9wdGFicyBpbnN0ZWFkCglvZiBsb25nIGNoYWlucyBvZiB0ZXN0cyBvZiBtb2Rlcy4gIE1vdmUgcGFydGlhbC1pbnRlZ2VyLW1vZGUKCWludGVyY29udmVyc2lvbiBhYm92ZSBhbGwgaW50ZWdlciBjb252ZXJzaW9uLiAgRG8gbm90IHJlY3Vyc2UKCW9uIGEgdmFsdWUgZm9yY2VkIGludG8gYSByZWdpc3RlciBpbiB0aGUgb3JpZ2luYWwgbW9kZS4KCgkqIGNvbmZpZy9nb2Zhc3QuaCwgY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL2lhNjQvaWE2NC5jCgkqIGNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL3BhL3BhLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMKCSogY29uZmlnL3NwYXJjL3NwYXJjLmM6IFVzZSBzZXRfY29udl9saWJmdW5jIHRvIGFkanVzdCBlbnRyaWVzCglpbiBuZXcgY29udmVyc2lvbiBvcHRhYnM7IGRvIG5vdCByZWZlcmVuY2UgdGhlIG9sZCBsaWJmdW5jCglhcnJheSBlbnRyaWVzLiAgTm8gbmVlZCB0byBpbmNsdWRlIGxpYmZ1bmNzLmguCgoyMDAzLTEwLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfc2V0Y2MpOiBBbm5vdGF0ZSB0aGUgZmxvYXRpbmcKCXBvaW50IGNvbXBhcmlzb24gc2VxdWVuY2Ugd2l0aCBhIFJFR19FUVVBTCBub3RlIHRoYXQgZGVzY3JpYmVzCgl0aGUgY29tcGFyaXNvbidzIHNlbWFudGljcy4KCjIwMDMtMTAtMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwciA8Q09ORF9FWFBSPik6IEhhbmRsZSB0aGUgdm9pZCB0eXBlIHNlbWFudGljcwoJb2YgQ09ORF9FWFBSIHdoZW4gZXhwYW5kaW5nIHRoZSAiQSBvcCAwID8gRk9PIDogQSIgb3B0aW1pemF0aW9ucy4KCjIwMDMtMTAtMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvcHRhYnMuYyAocHJlcGFyZV9mbG9hdF9saWJfY21wKTogQXZvaWQgc2VhcmNoaW5nIGZvciBSRUdfUkVUVkFMCglpbnN0cnVjdGlvbiBieSB1c2luZyBMQ1RfQ09OU1QgYW5kIHRoZW4gY2FsbGluZyBlbWl0X2xpYmNhbGxfYmxvY2sKCW91cnNlbHZlcy4KCjIwMDMtMTAtMDYgIEZhbGsgSHVlZmZuZXIgIDxmYWxrLmh1ZWZmbmVyQHN0dWRlbnQudW5pLXR1ZWJpbmdlbi5kZT4KCglQUiBvcHRpbWl6YXRpb24vMTE5NzQKCSogb3B0YWJzLmMgKGV4cGFuZF91bm9wKTogUHJvbW90ZSBsaWJjYWxsIG91dG1vZGUgYWNjb3JkaW5nIHRvCgloYXJkX2xpYmNhbGxfdmFsdWUuCgoyMDAzLTEwLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcmVhbC5oIChSRUFMX01PREVfRk9STUFUKTogTmV3IG1hY3JvLgoJKiBjLWNwcGJ1aWx0aW4uYywgb3B0YWJzLmMsIHJlYWwuYywgY29uZmlnL2FscGhhL2FscGhhLmMKCSogY29uZmlnL2M0eC9jNHguYywgY29uZmlnL2kzNzAvaTM3MC5jLCBjb25maWcvaTM4Ni9mcmVlYnNkLmgKCSogY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaTk2MC9pOTYwLmMsIGNvbmZpZy9pYTY0L2lhNjQuYwoJKiBjb25maWcvbTY4ay9tNjhrLmMsIGNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL3JzNjAwMC9yczYwMDAuYwoJKiBjb25maWcvdmF4L3ZheC5jOiBVc2UgUkVBTF9NT0RFX0ZPUk1BVCBpbnN0ZWFkIG9mIHJlZmVycmluZwoJZGlyZWN0bHkgdG8gcmVhbF9mb3JtYXRfZm9yX21vZGUgYXJyYXksIHdoZXJldmVyIHBvc3NpYmxlLgoKMjAwMy0xMC0wNiAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChpc19tYWluX3NvdXJjZSk6IFJlbW92ZSB2YXJpYWJsZS4KCShkd2FyZjJvdXRfc3RhcnRfc291cmNlX2ZpbGUpOiBEbyBub3QgY2hlY2sgaXNfbWFpbl9zb3VyY2UuCglEbyBub3QgcmVzZXQgaXNfbWFpbl9zb3VyY2UuCgkoZHdhcmYyb3V0X2luaXQpOiBEbyBub3QgaW5pdGlhbGl6ZSBpc19tYWluX3NvdXJjZS4KCjIwMDMtMTAtMDYgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3RkaW9fdmFfbGlzdCk6IFJlbW92ZWQgX2FwIGZpeC4KCShpcml4X3N0ZGlvX3ZhX2xpc3QpOiBEb24ndCByZXF1aXJlIGxlYWRpbmcgcHJpbnRmLCBJUklYIDYuNS4yMQoJaW50cm9kdWNlZCBzb21lIG11bHRpLWxpbmUgcHJvdG90eXBlcy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDMtMTAtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIHN0YWNrX29wZXJhbmQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoc3RhY2tfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFVzZSBpdCBmb3IgdGhlIGRlc3RpbmF0aW9uIG9mIG1pcHMxNiBpbnNucwoJdGhhdCBzdG9yZSAkMzEuCgoyMDAzLTEwLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqbG93c2kpOiBSZW5hbWVkIGZyb20gbG93c2kuCgkoKmxvd2RpKTogTGlrZXdpc2UgbG93ZGkuCgkoKmxvd3NpX21pcHMxNiwgKmxvd2RpX21pcHMxNik6IE5ldyBwYXR0ZXJucy4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NvbnN0X2luc25zLCBtaXBzX291dHB1dF9tb3ZlKTogUmVtb3ZlCgltaXBzMTYgQ09OU1RBTlRfUkVMT0MgaGFuZGxpbmcuCgkobWlwc19kZWxlZ2l0aW1pemVfYWRkcmVzcyk6IEFkanVzdCBmb3IgbmV3IHNkYXRhIHJlcHJlc2VudGF0aW9uLgoKMjAwMy0xMC0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2FyZ19pbmZvKTogSWYgTVVTVF9QQVNTX0lOX1NUQUNLLAoJc2tpcCBhbnkgcmVtYWluaW5nIHJlZ2lzdGVyIGFyZ3VtZW50cy4KCjIwMDMtMTAtMDYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfc3VicmVnX2FkZHJlc3MpOiBVc2UgY29ycmVjdCBvZmZzZXQgZm9yCglwYXJhZG94aWNhbCBNRU0gc3VicmVncyBvbiBiaWctZW5kaWFuIHRhcmdldHMuCgoyMDAzLTEwLTA2ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoZ2V0X2NhbGxlZV9mbmRlY2wpOiBDYWxsCglsYW5nX2hvb2tzLmxhbmdfZ2V0X2NhbGxlZV9mbmRlY2wuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19HRVRfQ0FMTEVFX0ZOREVDTCk6IE5ldy4KCShsaGRfZ2V0X2NhbGxlZV9mbmRlY2wpOiBOZXcuCgoyMDAzLTEwLTA2ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX25vbl9sYXp5X3B0cl9uYW1lKTogRml4IG9mZiBieSBvbmUKCWVycm9yIGluIGNhbGN1bGF0aW5nIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KCShtYWNob3BpY19zdHViX25hbWUpOiBMaWtld2lzZS4KCjIwMDMtMTAtMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogb3B0YWJzLmMgKHByZXBhcmVfZmxvYXRfbGliX2NtcCk6ICBBdHRhY2ggYSBSRUdfRVFVQUwgbm90ZQoJZGVzY3JpYmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjb21wYXJpc29uIGxpYmNhbGwgdG8gdGhlCglSRUdfUkVUVkFMIGluc3RydWN0aW9uIG9mIHRoZSBlbWl0dGVkIHNlcXVlbmNlLgoKMjAwMy0xMC0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTIyMTUKCSogY3NlLmMgKGNzZV9zZXRfYXJvdW5kX2xvb3ApOiBFbWl0IHRoZSBtb3ZlIGF0IHRoZSBiZWdpbm5pbmcKCW9mIHRoZSBuZXh0IGJhc2ljIGJsb2NrIGZvciB0cmFwcGluZyBzZXRzLgoKMjAwMy0xMC0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTE2MzcKCSogY29tYmluZS5jIChhZGp1c3RfZm9yX25ld19kZXN0KTogTmV3IGZ1bmN0aW9uIHRvIGFkanVzdCB0aGUKCW5vdGVzIGFuZCBMT0dfTElOS1Mgd2hlbiB0aGUgZGVzdCBvZiBhbiBpbnNuIGhhcyBjaGFuZ2VkLgoJKHRyeV9jb21iaW5lKTogVXNlIGl0IHdoZW4gZGVsZXRpbmcgdGhlIGZpcnN0IGluc24gb2YgYSB0d28taW5zbgoJcGFyYWxsZWwgb3Igc3BsaXR0aW5nIGEgdHdvLWxvYWQgcGFyYWxsZWwuCgoyMDAzLTEwLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY2xhc3NpZnlfY29uc3RhbnQpOiBPbmx5IGFsbG93IFVOU1BFQ3MKCWlmIFRBUkdFVF9FWFBMSUNJVF9SRUxPQ1MuCgoyMDAzLTEwLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGJvb3RzdHJhcC8xMjUxMgoJKiBNYWtlZmlsZS5pbiAoaW5mbyk6IFVzZSBkb3VibGUtY29sb24gcnVsZXMuCgkoZHZpKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVkLW1hbnBhZ2VzKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5pbjogRG8gbm90IGNyZWF0ZSBsYW5nLmluZm8sIGxhbmcuZHZpLCBvcgoJbGFuZy5nZW5lcmF0ZWQtbWFucGFnZXMgaG9va3MuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIG9iamMvTWFrZS1sYW5nLmluIChvYmpjLmluZm8pOiBSZW1vdmUuCgkob2JqYy5kdmkpOiBSZW1vdmUuCgkob2JqYy5nZW5lcmF0ZWQtbWFucGFnZXMpOiBSZW1vdmUuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBVcGRhdGUgZGVzY3JpcHRpb24gb2YgaW5mbywgZHZpLCBhbmQKCWdlbmVyYXRlZC1tYW5wYWdlcyBob29rcy4KCjIwMDMtMTAtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IE1lcmdlIG1pcHMxNiBsdy9zcmwgcGF0dGVybiB3aXRoIGl0cyBzcGxpdHRlci4KCjIwMDMtMTAtMDUgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfbm9uX2xhenlfcHRyX25hbWUpOiBGaXggb2ZmIGJ5IG9uZQoJZXJyb3JzIGluIG1lbWNweSBkZXN0aW5hdGlvbnMuCgkobWFjaG9waWNfc3R1Yl9uYW1lKTogTGlrZXdpc2UuCgoyMDAzLTEwLTA1ICBBbmRyZXcgUGluc2tpIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfbm9uX2xhenlfcHRyX25hbWUpOgoJQ2hhbmdlIHN0cmNhdCB0byBtZW1jcHkgYW5kIGFkZCBsZW5ndGggdG9nZXRoZXIuCgkobWFjaG9waWNfc3R1Yl9uYW1lKTogTGlrZXdpc2UuCgoyMDAzLTEwLTA1ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9saW51eC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBIYW5kbGUgbmV3CglzaWduYWwgdHJhbXBvbGluZSBjb2Rlcy4KCjIwMDMtMTAtMDUgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqZGl2c2YzKTogTW92ZSBkZXNjcmlwdGlvbiBvZgoJU0ItMSBGMiBlcnJhdHVtIGZyb20gaGVyZSB0by4uLgoJKGRpdnNmMyk6IEhlcmUuICBEaXNhYmxlIGlmIFRBUkdFVF9GSVhfU0IxIGlzIHNldCBhbmQKCWZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBpcyBub3QuCgoyMDAzLTEwLTA1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL2xpbnV4c3BlLmg6IERlZmluZSBUQVJHRVRfU1BFX0FCSSwgVEFSR0VUX1NQRSwKCVRBUkdFVF9FNTAwLCBUQVJHRVRfSVNFTCwgYW5kIFRBUkdFVF9GUFJTLgoKMjAwMy0xMC0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtcHJldHR5LXByaW50LmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjLXByZXR0eS1wcmludC5oOiBMaWtld2lzZS4KCSogY2FsbHMuYzogTGlrZXdpc2UuCgkqIGNmZ2xvb3BtYW5pcC5jOiBMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jOiBMaWtld2lzZS4KCSogY3BwZmlsZXMuYzogTGlrZXdpc2UuCgkqIGZpbmFsLmM6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5oOiBMaWtld2lzZS4KCSogZ2NzZS5jOiBMaWtld2lzZS4KCSogZ2Vub3V0cHV0LmM6IExpa2V3aXNlLgoJKiBsb29wLmM6IExpa2V3aXNlLgoJKiBwb3N0cmVsb2FkLmM6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYzogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYzogTGlrZXdpc2UuCgkqIHNjaGVkLWludC5oOiBMaWtld2lzZS4KCSogc2NoZWQtcmduLmM6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYzogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbW1peC9tbWl4LmM6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmg6IExpa2V3aXNlLgoKMjAwMy0xMC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX3R5cGUpOiBOZXcuCgkocmVtYXBfZGVjbCk6IFVzZSBpdC4gIFJlbWFwIERFQ0xfU0laRSouCgkoY29weV9ib2R5X3IpOiBVc2UgaXQuCgkod2Fsa190cmVlKTogV2FsayBUUkVFX1RZUEUgdG9vLgoJKGNvcHlfdHJlZV9yKTogRG9uJ3Qgd2FsayBzdWJ0cmVlcyBvZiB0eXBlcy4KCSogdHJlZS5jICh2YXJpYWJseV9tb2RpZmllZF90eXBlX3ApOiBSZXN0cnVjdHVyZS4gIENvbnNpZGVyIGludGVnZXIKCXR5cGVzIHdpdGggbm9uLWNvbnN0IGJvdW5kcyB2YXJpYWJseSBtb2RpZmllZC4KCjIwMDMtMTAtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW52b2tlLnRleGk6IEZpeCB0eXBvcy4KCjIwMDMtMTAtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBmb2xkLWNvbnN0LmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogZnVuY3Rpb24uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2Lm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9haXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYzogTGlrZXdpc2UuCgoyMDAzLTEwLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1wcmV0dHktcHJpbnQuYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY2ZnbGF5b3V0LmM6IExpa2V3aXNlLgoJKiBjZmdsb29wYW5hbC5jOiBMaWtld2lzZS4KCSogY3BwY2hhcnNldC5jOiBMaWtld2lzZS4KCSogZGJ4b3V0LmM6IExpa2V3aXNlLgoJKiBnZ2MtcGFnZS5jOiBMaWtld2lzZS4KCSogZ2djLmg6IExpa2V3aXNlLgoJKiB0YXJnZXQuaDogTGlrZXdpc2UuCgoyMDAzLTEwLTA0ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGdlbmd0eXBlLWxleC5sOiBSZWNvZ25pemUgdHlwZWRlZiBvZiBmdW5jdGlvbnMgd2l0aG91dCBQQVJBTVMgbWFjcm8uCgoyMDAzLTEwLTA0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy92ODUwL3Y4NTAtYy5jLCBjb25maWcvdjg1MC92ODUwLXByb3Rvcy5oLCBjb25maWcvdjg1MC92ODUwLmM6CglDb252ZXJ0IHRvIElTTyBDOTAgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucy4KCjIwMDMtMTAtMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsaWJmdW5jcy5oCgkoTFRJX2VxaGYyLCBMVElfbmVoZjIsIExUSV9ndGhmMiwgTFRJX2dlaGYyLCBMVElfbHRoZjIpCgkoTFRJX2xlaGYyLCBMVElfdW5vcmRoZjIsIExUSV9lcXNmMiwgTFRJX25lc2YyLCBMVElfZ3RzZjIpCgkoTFRJX2dlc2YyLCBMVElfbHRzZjIsIExUSV9sZXNmMiwgTFRJX3Vub3Jkc2YyLCBMVElfZXFkZjIpCgkoTFRJX25lZGYyLCBMVElfZ3RkZjIsIExUSV9nZWRmMiwgTFRJX2x0ZGYyLCBMVElfbGVkZjIpCgkoTFRJX3Vub3JkZGYyLCBMVElfZXF4ZjIsIExUSV9uZXhmMiwgTFRJX2d0eGYyLCBMVElfZ2V4ZjIpCgkoTFRJX2x0eGYyLCBMVElfbGV4ZjIsIExUSV91bm9yZHhmMiwgTFRJX2VxdGYyLCBMVElfbmV0ZjIpCgkoTFRJX2d0dGYyLCBMVElfZ2V0ZjIsIExUSV9sdHRmMiwgTFRJX2xldGYyLCBMVElfdW5vcmR0ZjIpCgkoZXFoZjJfbGliZnVuYywgbmVoZjJfbGliZnVuYywgZ3RoZjJfbGliZnVuYywgZ2VoZjJfbGliZnVuYykKCShsdGhmMl9saWJmdW5jLCBsZWhmMl9saWJmdW5jLCB1bm9yZGhmMl9saWJmdW5jLCBlcXNmMl9saWJmdW5jKQoJKG5lc2YyX2xpYmZ1bmMsIGd0c2YyX2xpYmZ1bmMsIGdlc2YyX2xpYmZ1bmMsIGx0c2YyX2xpYmZ1bmMpCgkobGVzZjJfbGliZnVuYywgdW5vcmRzZjJfbGliZnVuYyBlcWRmMl9saWJmdW5jLCBuZWRmMl9saWJmdW5jKQoJKGd0ZGYyX2xpYmZ1bmMsIGdlZGYyX2xpYmZ1bmMsIGx0ZGYyX2xpYmZ1bmMsIGxlZGYyX2xpYmZ1bmMpCgkodW5vcmRkZjJfbGliZnVuYyBlcXhmMl9saWJmdW5jLCBuZXhmMl9saWJmdW5jLCBndHhmMl9saWJmdW5jKQoJKGdleGYyX2xpYmZ1bmMsIGx0eGYyX2xpYmZ1bmMsIGxleGYyX2xpYmZ1bmMsIHVub3JkeGYyX2xpYmZ1bmMKCShlcXRmMl9saWJmdW5jLCBuZXRmMl9saWJmdW5jLCBndHRmMl9saWJmdW5jLCBnZXRmMl9saWJmdW5jKQoJKGx0dGYyX2xpYmZ1bmMsIGxldGYyX2xpYmZ1bmMsIHVub3JkdGYyX2xpYmZ1bmMpOgoJRGVsZXRlLgoJKiBvcHRhYnMuaCAoT1RJX2VxLCBPVElfbmUsIE9USV9ndCwgT1RJX2dlLCBPVElfbHQsIE9USV9sZSkKCShPVElfdW5vcmQsIGVxX29wdGFiLCBuZV9vcHRhYiwgZ3Rfb3B0YWIsIGdlX29wdGFiLCBsdF9vcHRhYikKCShsZV9vcHRhYiwgdW5vcmRfb3B0YWIpOiBOZXcuCgoJKiBvcHRhYnMuYyAocHJlcGFyZV9mbG9hdF9saWJfY21wKTogUmV3cml0ZS4gIEdldCB0aGUgbGliZnVuY3MKCWZyb20gdGhlIGNvZGVfdG9fb3B0YWIgdGFibGUsIG5vdCBhIGdpYW50IHN3aXRjaDsgdXNlCglzd2FwX2NvbmRpdGlvbjsgZG8gd2lkZW5pbmcgb25seSBpZiBhIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdAoJd2UgY2FuIGNhbGwgZXhpc3RzIGluIGEgd2lkZXIgbW9kZSwgbm90IGlmIGEgY21wX29wdGFiIGluc24gb3IKCWxpYmZ1bmMgZXhpc3RzIGluIGEgd2lkZXIgbW9kZTsgY2FsbCBwcm90ZWN0X2Zyb21fcXVldWUKCWV4YWN0bHkgb25jZSBvbiBlYWNoIG9wZXJhbmQuCgkoaW5pdF9vcHRhYnMpOiBJbml0aWFsaXplIHRoZSBuZXcgb3B0YWJzLCBub3QgdGhlIGRlbGV0ZWQgbGliZnVuY3MuCgoJKiBjb25maWcvZ29mYXN0LmgsIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL21pcHMvbWlwcy5jCgkqIGNvbmZpZy9wYS9wYS5jLCBjb25maWcvcnM2MDAwL3JzNjAwMC5jLCBjb25maWcvc3BhcmMvc3BhcmMuYzoKCVNldCBmbG9hdGluZyBwb2ludCBjb21wYXJpc29uIGxpYmZ1bmNzIHVzaW5nIHNldF9vcHRhYl9saWJmdW5jCglvbiB0aGUgYXBwcm9wcmlhdGUgb3B0YWIuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfaHB1eF9pbml0X2xpYmZ1bmNzKTogRml4IHR5cG8uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9pbml0X2xpYmZ1bmNzKTogQ29ycmVjdCBBQkkKCXNlbGVjdG9yIGNvbmRpdGlvbmFscy4KCjIwMDMtMTAtMDQgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvdC1tNjhoYzExLWdhcyAoTVVMVElMSUJfTUFUQ0hFUyk6IG02OGhjczEyIGlzCglpZGVudGljYWwgdG8gbTY4aGMxMiBhcyBmYXIgYXMgbGlicmFyaWVzIGFyZSBjb25jZXJuZWQuCgoyMDAzLTEwLTA0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIGMvMTI0NDYKCSogYy10eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IElzc3VlIGFuIGVycm9yIGZvcgoJYXJyYXkgdG8gcG9pbnRlciBhc3NpZ25tZW50IGFmdGVyIGRlZmF1bHQgY29udmVyc2lvbi4KCShkaWdlc3RfaW5pdCk6IExpa2V3aXNlLgoKMjAwMy0xMC0wNCAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IHJldGFpbiBERUNMX0NPTU1PTiBvZiBvbGQgZGVjbGFyYXRpb24KCjIwMDMtMTAtMDMgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRml4IHRpdGxlIG9mIEdOVSBDCglQcmVwcm9jZXNzb3IgbWFudWFsLgoJKEMrKyBFeHRlbnNpb25zKTogRml4IHJlZmVyZW5jZSB0byAiUHJlZGVmaW5lZCBNYWNyb3MiIGluIHRoZQoJR05VIEMgUHJlcHJvY2Vzc29yIG1hbnVhbC4KCjIwMDMtMTAtMDQgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFucnNoYUBhcm0uY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBob3cgR0NDIGVzdGltYXRlcyBhbmQgcmVsaWVzIG9uIHRoZSBzaXplCglvZiBhbiBhc20uCgoyMDAzLTEwLTA0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcGFkX2FyZ191cHdhcmQpOiBQYWQgZmxvYXRpbmctcG9pbnQKCWFyZ3VtZW50cyBkb3dud2FyZCBmb3IgYmlnLWVuZGlhbiBvNjQuCgoyMDAzLTEwLTAzICBSb2JlcnQgQm93ZGlkZ2UgPGJvd2RpZGdlQGFwcGxlLmNvbT4KCgkqIGdnYy1wYWdlLmMgKGdnY19wY2hfd3JpdGVfb2JqZWN0KTogUmVwbGFjZSBmc2VlaygpIHdpdGggZndyaXRlKCkgaW4KCVBDSCBnZW5lcmF0aW9uLCBhdm9pZGluZyB0b28tZnJlcXVlbnQgZmx1c2hlcyB3aGVuIHdyaXRpbmcgdG8gTkZTCglmaWxlIHN5c3RlbS4KCjIwMDMtMTAtMDMgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMvb2JqYy1hY3QuYyAobG9va3VwX2NhdGVnb3J5KTogTWFyayBhcyAnaW5saW5lJy4KCjIwMDMtMTAtMDMgIEFsZXhhbmRlciBNYWxtYmVyZyAgPGFsZXhhbmRlckBtYWxtYmVyZy5vcmc+CgkgICAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jIChhZGRfbWV0aG9kX3RvX2hhc2hfbGlzdCwgbG9va3VwX2NhdGVnb3J5KToKCU5ldyBmdW5jdGlvbnMuCgkobG9va3VwX21ldGhvZF9pbl9oYXNoX2xpc3RzKTogTmV3IHBhcmFtZXRlciBpbmRpY2F0aW5nIHdoZXRoZXIKCXdlIGFyZSBtZXNzYWdpbmcgJ0NsYXNzJyBvciAnaWQnLgoJKGNoZWNrX2R1cGxpY2F0ZXMpOiBMaWtld2lzZTsgZG8gbm90IGFzc3VtZSBhbGwgbWV0aG9kcyB3aWxsCgliZSBlaXRoZXIgY2xhc3Mgb3IgaW5zdGFuY2UgbWV0aG9kcy4KCShnZW5lcmF0ZV9jYXRlZ29yeSwgZmluaXNoX2NsYXNzKTogVXNlIGxvb2t1cF9jYXRlZ29yeSgpLgoJKGFkZF9tZXRob2QpOiBVc2UgYWRkX21ldGhvZF90b19oYXNoX2xpc3QoKTsgaW5zZXJ0IGluc3RhbmNlCgltZXRob2RzIG9mIHJvb3QgY2xhc3NlcyBpbnRvIHRoZSBnbG9iYWwgY2xhc3MgbWV0aG9kIGhhc2ggdGFibGUuCgkoYWRkX2NhdGVnb3J5KTogVXNlIGxvb2t1cF9jYXRlZ29yeSgpOyBhdm9pZCBjb25zdHJ1Y3RpbmcKCWR1cGxpY2F0ZSBjYXRlZ29yaWVzLgoJKHJlYWxseV9zdGFydF9tZXRob2QpOiBBZGQgbWV0aG9kIHRvIGNvcnJlc3BvbmRpbmcgQGludGVyZmFjZSwKCWlmIG5vdCBhbHJlYWR5IHRoZXJlIChhbmQgaWYgdGhlIEBpbnRlcmZhY2UgZXhpc3RzKS4KCShmaW5pc2hfbWVzc2FnZV9leHByLCBmaW5pc2hfb2JqYyk6IEFkanVzdCBjYWxscyB0bwoJY2hlY2tfZHVwbGljYXRlcygpLgoKMjAwMy0xMC0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzkzMjUsIFBSIGphdmEvNjM5MQoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfY29udmVydCk6IEZvciBmbG9hdGluZyBwb2ludCB0byBpbnRlZ2VyCgljb252ZXJzaW9ucywgcmV0dXJuIHRoZSBtYXhpbXVtL21pbmltdW0gcmVwcmVzZW50YWJsZSBpbnRlZ2VyCgl2YWx1ZSBpZiB0aGUgcmVhbCBjb25zdGFudCBvdmVyZmxvd3MgdGhlIGRlc3RpbmF0aW9uIHR5cGUuCgkqIHRyZWUuYyAocmVhbF92YWx1ZV9mcm9tX2ludF9jc3QpOiBBbGxvdyB0aGUgdHlwZSB0byBiZSBOVUxMLAoJbWVhbmluZyBkb24ndCB0cnVuY2F0ZSB0aGUgcmVzdWx0IHRvIGEgZmxvYXRpbmcgcG9pbnQgbW9kZS4KCVNpbXBsaWZ5IHRoZSBsb2dpYyBieSBjYWxsaW5nIHJlYWxfZnJvbV9pbnRlZ2VyIGRpcmVjdGx5LgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogIEltcGxlbWVudCB0aGUKCXNhbWUgc2VtYW50aWNzIGZvciBmb2xkaW5nIGZsb2F0aW5nIHBvaW50IHRvIGludGVnZXIgY29udmVyc2lvbnMKCWluIFJUTC4KCjIwMDMtMTAtMDMgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZW1pdF9wcmVmZXRjaCk6IFJlc3RydWN0dXJlCgl0byBhdm9pZCB1c2Ugb2YgYXJyYXlzLCBoYW5kbGUgaW5kZXhlZCBwcmVmZXRjaC4KCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX0ZQNCwgSVNBX0hBU19QUkVGRVRDSCk6IFVwZGF0ZSBjb21tZW50cy4KCShJU0FfSEFTX1BSRUZFVENIWCk6IE5ldyBkZWZmaW5lLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgidHlwZSIgYXR0cik6IEFkZCBuZXcgInByZWZldGNoeCIgdmFsdWUsCgl1cGRhdGUgY29tbWVudHMuCgkocHJlZmV0Y2hfaW5kZXhlZF9kaSwgcHJlZmV0Y2hfaW5kZXhlZF9zaSk6IE5ldyBpbnNucy4KCjIwMDMtMTAtMDMgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCSAgICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTIyODkKCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpOiBQcmV0ZW5kIHRvIGhhdmUgcG9wcGVkIHRoZSBhcmd1bWVudHMKCXRvIG5vcmV0dXJuIGFuZCBsb25nam1wIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGlnbm9yaW5nIHRoZW0uCgkoZXhwYW5kX2NhbGwpOiBEb24ndCBhZGp1c3Qgc3RhY2tfcG9pbnRlcl9kZWxhIHdoaWxlCglpbmhpYml0X2RlZmVyX3BvcCBpcyBzZXQuCgoyMDAzLTEwLTAzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCVBSIGJvb3RzdHJhcC8xMjI3NgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBsaWJ1bndpbmQgb24gdGhlIGhvc3Qgb25seSBpZiBidWlsZGluZwoJYSBuYXRpdmUgY29tcGlsZXIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAzLTEwLTAzICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAdW5pdHVzLml0PgoKCSogdW53aW5kLXBlLmggKHJlYWRfZW5jb2RlZF92YWx1ZV93aXRoX2Jhc2UpOiBDb25zdGlmeSB1IGFuZAoJaXRzIGluaXppYWxpemF0aW9uIGNhc3QuCgoyMDAzLTEwLTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzEyNDg1CgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19sb2FkX2dvdCk6IEdPVCBhY2Nlc3NlcyBjYW4ndCB0cmFwLgoKMjAwMy0xMC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTIxODAKCSogdHJlZS1pbmxpbmUuYyAoaW5saW5lX2ZvcmJpZGRlbl9wXzEpOiBEbyBub3QgcGVybWl0IGlubGluaW5nIG9mCglmdW5jdGlvbnMgY29udGFpbmluZyBjYWxscyB0byBfX2J1aWx0aW5fbmV4dF9hcmcuCgoyMDAzLTEwLTAyICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2VtaXRfcHJlZmV0Y2gpOiBVc2Ugb3BlcmFuZCAzCglpbiBpbnN0cnVjdGlvbnMgYmVpbmcgb3V0cHV0LgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChwcmVmZXRjaF9zaV9hZGRyZXNzKTogQ2hhbmdlIHRoaXJkCglvcGVyYW5kJ3MgY29uc3RyYWludCBsZXR0ZXIgdG8gJ0knLgoJKHByZWZldGNoX2RpX2FkZHJlc3MpOiBMaWtld2lzZS4KCShwcmVmZXRjaF9zaSwgcHJlZmV0Y2hfZGkpOiBTZXQgdGhpcmQgb3BlcmFuZCB0byBjb25zdDBfcnR4LgoKMjAwMy0xMC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN5c3RlbS5oOiBQb2lzb24gbWFjcm9zIG9ic29sZXRlZCBieSBlYXJsaWVyIHBhdGNoLgoJKiBjb25maWcvY3Jpcy9jcmlzLmM6IEM5MC1pZnkgYSBmdW5jdGlvbiBkZWZpbml0aW9uLgoKMjAwMy0xMC0wMiAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCVBSLzEyMjkyCgkqIGNvbWJpbmUuYyAobWFrZV9maWVsZF9hc3NpZ25tZW50KTogQ2hlY2sgd2hldGhlciBydHgncyBjb2RlCglpcyBDT05TVF9JTlQgYmVmb3JlIHVzaW5nIElOVFZBTC4KCjIwMDMtMTAtMDIgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfbm9kZSk6IFVzZSBJTlNFUlQgaW5zdGVhZCBvZiAxIGluCglodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2guCgkoY2dyYXBoX25vZGVfZm9yX2lkZW50aWZpZXIpOiBVc2UgTk9fSU5TRVJULgoJKGNncmFwaF9yZW1vdmVfbm9kZSk6IFVzZSBOT19JTlNFUlQuCgkoY2dyYXBoX3ZhcnBvb2xfbm9kZSk6IFVzZSBJTlNFUlQuCgkoY2dyYXBoX3ZhcnBvb2xfbm9kZV9mb3JfaWRlbnRpZmllcik6IFVzZSBOT19JTlNFUlQuCgoyMDAzLTEwLTAyICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJV2FsZGVrIEhlYmlzY2ggPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCVBSLzEyMDcyCgkqIHZhcmFzbS5jIChjb21wYXJlX2NvbnN0YW50KTogRml4IHRoaW5rby4KCjIwMDMtMTAtMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9pc3N1ZV9yYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGZydl9wYWNrX2luc25zKTogVXNlIGl0LgoJKFRBUkdFVF9TQ0hFRF9JU1NVRV9SQVRFKTogRGVmaW5lLgoKMjAwMy0xMC0wMiAgU3RldmVuIEJvc3NjaGVyIDxzLmJvc3NjaGVyQHN0dWRlbnQudHVkZWxmdC5ubD4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jOiBDb252ZXJ0IHRvIElTTyBDOTAgZnVuY3Rpb24gZGVjbGFyYXRpb25zCglhbmQgZGVmaW5pdGlvbnMuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLXByb3Rvcy5oOiBMaWtld2lzZS4KCjIwMDMtMTAtMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UpOiBEZWZpbmUuCgoyMDAzLTEwLTAxICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIGMtbGV4LmMgKHNyY19saW5lKTogICBSZW1vdmUgdW5uZWVkZWQgc3RhdGljIHZhcmlhYmxlLgoJKGNiX2xpbmVfY2hhbmdlKTogIFNldCBpbnB1dF9saW5lIGRpcmVjdGx5LCBpbnN0ZWFkIG9mIHNyY19saW5lLgoJKGdldF9ub25fcGFkZGluZ190b2tlbik6ICBXZSBubyBsb25nZXIgbmVlZCB0byBjb21wZW5zYXRlIGZvciB0aGUKCSJob3JyaWJsZSB0aGluZ3MiIHRoZSBDKysgZnJvbnQtZW5kIGRvZXMgd2l0aCB0aGUgY3VycmVudCBsaW5lIG51bWJlciwKCgkqIGNwcGxpYi5jIChfY3BwX3BvcF9idWZmZXIpOiAgRG8gZ2VuZXJhdGUgYSBfY3BwX2RvX2ZpbGVfY2hhbmdlCgljYWxsYmFjayBldmVuIHdoZW4gcG9wcGluZyB0aGUgbWFpbiBmaWxlLgoJKiBjLWxleC5jIChmZV9maWxlX2NoYW5nZSk6ICBIYW5kbGUgYSBOVUxMIG5ld19tYXAuCgkqIGZpeC1oZWFkZXIuYyAoY2JfZmlsZV9jaGFuZ2UpOiAgTGlrZXdpc2UuCgkqIGMtcHBvdXRwdXQuYyAocHBfZmlsZV9jaGFuZ2UpOiAgTGlrZXdpc2UuCgoJKiBjcHBpbml0LmMgKGNwcF9yZWFkX21haW5fZmlsZSk6ICBTcGxpdCBpbnRvIHR3byBmdW5jdGlvbnM6CglEaXN0cmlidXRlIF9jcHBfc3RhY2tfZmlsZSBjYWxsIG92ZXIgdGhlIHR3byBmdW5jdGlvbnMuCgkoY3BwX2ZpbmRfbWFpbl9maWxlKTogIE5ldyBmdW5jdGlvbi4KCURvbid0IGNhbGwgX2NwcF9kb19maWxlX2NoYW5nZSBldmVuIGlmIHdvcmtpbmdfZGlyZWN0b3J5IGZsYWcgc2V0LgoJKGNwcF9wdXNoX21haW5fZmlsZSk6ICBOZXcgZnVuY3Rpb24uCgkqIGNwcGZpbGVzLmMgKF9jcHBfZmluZF9mYWlsZWQpOiAgTmV3IGhlbHBlciBmdW5jdGlvbi4KCShmaW5kX2ZpbGUpOiAgTWFkZSBub24tc3RhdGljIGFuZCByZW5hbWVkIHRvIF9jcHBfZmluZF9maWxlLgoJKF9jcHBfc3RhY2tfZmlsZSk6ICBObyBsb25nZXIgbmVlZGVkLiAgQnV0IG5vdGUgdGhlIGZvbGxvd2luZy4KCShzdGFja19maWxlKTogIE1hZGUgbm9uLXN0YXRpYyBhbmQgcmVuYW1lZCB0byBfY3BwX3N0YWNrX2ZpbGUuCgkqIGZpeC1oZWFkZXIuYyAoY3BwX3JlYWRfbWFpbl9maWxlKTogIFJlcGxhY2UgY3BwX3JlYWRfbWFpbl9maWxlCgljYWxsIHdpdGggY2FsbHMgdG8gY3BwX2ZpbmRfbWFpbl9maWxlIGFuZCBjcHBfcHVzaF9tYWluX2ZpbGUuCgkoc2VhcmNoX3BhdGhfaGVhZCk6ICBJZiB0aGVyZSBpcyBubyBjdXJyZW50IGJ1ZmZlciwgdXNlIG1haW5fZmlsZS4KCSogY3BwaGFzaC5oOiAgVXBkYXRlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCSogY3BwbGliLmg6ICBVcGRhdGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogYy1vcHRzLmMgKGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyk6ICBEb24ndCBjYWxsIGNwcF9maW5kX21haW5fZmlsZSB5ZXQuCgkoY19jb21tb25fcGFyc2VfZmlsZSk6ICBObyBsb25nZXIgbmVlZCB0byBjYWxsIGNwcF9yZWFkX21haW5fZmlsZQoJd2hlbiBmaWxlX2luZGV4ID4gMCAoYXMgaW4gbXVsdGktZmlsZSBvciBzZXJ2ZXIgY29tcGlhdGlvbikuCgkoZmluaXNoX29wdGlvbnMpOiAgQ2hhbmdlIHRvIDxidWlsdC1pbj4gaXMgYW4gTENfRU5URVIsIG5vdCBMQ19SRU5BTUUKCWFzIHRoaXMgbm93IGhhcHBlbnMgYmVmb3JlIGNwcF9wdXNoX21haW5fZmlsZS4KCShwdXNoX2NvbW1hbmRfbGluZV9pbmNsdWRlKTogIFdoZW4gZG9uZSB3aXRoIG9wdGlvbnMsIHBhc3MgTENfTEVBVkUKCWluc3RlYWQgb2YgTENfUkVOQU1FIHRvIGNwcF9jaGFuZ2VfZmlsZSBhbmQgZmluYWxseSBjcHBfcHVzaF9tYWluX2ZpbGUuCgkoZmVfZmlsZV9jaGFuZ2UpOiAgSGFuZGxlIE5VTEwgbmV3X21hcCwgYW5kIHNpbXBsaWZ5LgoJKiBjcHBsZXguYyAoX2NwcF9nZXRfZnJlc2hfbGluZSk6ICBSZXZlcnQgbXkgbm8tbG9uZ2VyLW5lZWRlZAoJMDgtMjggY2hhbmdlLCBzaW5jZSB3ZSdyZSBuZXZlciBjYWxsZWQgd2l0aCBhIE5VTEwgYnVmZmVyLgoJKF9jcHBfbGV4X2RpcmVjdCk6ICBMaWtld2lzZS4KCSogY3BwdHJhZC5jIChfY3BwX3JlYWRfbG9naWNhbF9saW5lX3RyYWQpOiAgTGlrZXdpc2UuCglSZXR1cm4gZmFsc2UgaWYgYnVmZmVyIGlzIE5VTEwgYXQgZW5kLgoKCSogY3BwbGV4LmMgKF9jcHBfZ2V0X2ZyZXNoX2xpbmUpOiAgUmV0dXJuIHZhbHVlIG5vdyBqdXN0IGRlcGVuZHMgb24KCXdoZXRoZXIgcGZpbGUtPmJ1ZmZlciBpcyBOVUxMIGFmdGVyIHBvcCwgaWdub3JpbmcgcmV0dXJuX2F0X2VvZi4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6ICBSZW1vdmUgdW51c2VkIHJldHVybl9hdF9lb2YgZmllbGQuCgkqIGNwcGxpYi5jIChjcHBfcHVzaF9idWZmZXIpOiAgU2luY2Ugd2Ugbm8gbG9uZ2VyIHNldCByZXR1cm5fYXRfZW9mLAoJcmVtb3ZlIHRoZSB1bnVzZWQgcmV0dXJuX2F0X2VvZiBwYXJhbWV0ZXIuCgkqIGNwcGZpbGVzLmMsIGNwcGxpYi5jLCBjcHBtYWNyby5jLCBjcHBwY2guYywgZml4LWhlYWRlci5jOgoJVXBkYXRlIGNhbGxlcnMgb2YgY3BwX3B1c2hfYnVmZmVyLgoKMjAwMy0xMC0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRhcmdldC5oIChpbml0X2xpYmZ1bmNzKTogTmV3IGhvb2suCgkqIHRhcmdldC1kZWYuaDogRGVmYXVsdCBUQVJHRVRfSU5JVF9CVUlMVElOUyBhbmQKCVRBUkdFVF9JTklUX0xJQkZVTkNTIHRvIGhvb2tfdm9pZF92b2lkLiAgQWRkCglUQVJHRVRfSU5JVF9MSUJGVU5DUyB0byBUQVJHRVRfSU5JVElBTElaRVIuCgkqIGJ1aWx0aW5zLmMgKGRlZmF1bHRfaW5pdF9idWlsdGlucyk6IERlbGV0ZS4KCSogZXhwci5oIChkZWZhdWx0X2luaXRfYnVpbHRpbnMpOiBEZWxldGUgcHJvdG90eXBlLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX0lOSVRfTElCRlVOQ1MgYW5kIFVTX1NPRlRXQVJFX0dPRkFTVC4KCVR3ZWFrIGRvY3VtZW50YXRpb24gb2YgVEFSR0VUX0ZMT0FUX0xJQl9DT01QQVJFX1JFVFVSTlNfQk9PTC4KCVJlbW92ZSBkb2N1bWVudGF0aW9uIG9mIElOSVRfVEFSR0VUX09QVEFCUywgTVVMU0kzX0xJQkNBTEwsCglESVZTSTNfTElCQ0FMTCwgVURJVlNJM19MSUJDQUxMLCBNT0RTSTNfTElCQ0FMTCwgVU1PRFNJM19MSUJDQUxMLAoJTVVMREkzX0xJQkNBTEwsIERJVkRJM19MSUJDQUxMLCBVRElWREkzX0xJQkNBTEwsIE1PRERJM19MSUJDQUxMLAoJYW5kIFVNT0RESTNfTElCQ0FMTCwKCgkqIE1ha2VmaWxlLmluIChvcHRhYnMubyk6IERlcGVuZHMgb24gdGFyZ2V0LmguCgkqIGRlZmF1bHRzLmg6IFByb3ZpZGUgZGVmYXVsdCBmb3IgRkxPQVRfTElCX0NPTVBBUkVfUkVUVVJOU19CT09MLgoJKiBvcHRhYnMuYzogSW5jbHVkZSB0YXJnZXQuaC4KCShwcmVwYXJlX2Zsb2F0X2xpYl9jbXApOiBObyBuZWVkIGZvciAjaWZkZWYgYXJvdW5kIHVzZSBvZgoJRkxPQVRfTElCX0NPTVBBUkVfUkVUVVJOU19CT09MLgoJKHNldF9vcHRhYl9saWJmdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfb3B0YWJzKTogRGVsZXRlIHVzZSBvZiBhbGwgKl9MSUJDQUxMIGRlZmluZXMuCglDYWxsIHRhcmdldG0uaW5pdF9saWJmdW5jcyBub3QgSU5JVF9UQVJHRVRfT1BUQUJTLgoJKiBvcHRhYnMuaDogUHJvdG90eXBlIHNldF9vcHRhYl9saWJmdW5jLgoKCSogY29uZmlnLmdjYzogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIHBhL2xvbmdfZG91YmxlLmgsCglpYTY0L2hwdXhfbG9uZ2RvdWJsZS5oLCBhbmQgZ29mYXN0LmguCgkobWlwcy0qLSopOiBXaGVuIC0tZW5hYmxlLWdvZmFzdCwganVzdCBhZGQgVVNfU09GVFdBUkVfR09GQVNUCgl0byB0bV9kZWZpbmVzOyBkb24ndCBzZXQgSU5JVF9TVUJUQVJHRVRfT1BUQUJTIG9yIGNoYW5nZSB0bV9maWxlLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMsIGNvbmZpZy9jNHgvYzR4LmMsIGNvbmZpZy9jcmlzL2NyaXMuYwoJKiBjb25maWcvZnJ2L2Zydi5jLCBjb25maWcvaDgzMDAvaDgzMDAuYywgY29uZmlnL2k4NjAvaTg2MC5jCgkqIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL2lwMmsvaXAyay5jLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMKCSogY29uZmlnL21pcHMvbWlwcy5jLCBjb25maWcvcGEvcGEuYywgY29uZmlnL3JzNjAwMC9yczYwMDAuYwoJKiBjb25maWcvc3BhcmMvc3BhcmMuYywgY29uZmlnL3ZheC92YXguYzoKCVByb3ZpZGUgYSBkZWZpbml0aW9uIGZvciBUQVJHRVRfSU5JVF9MSUJGVU5DUy4gIFdoZXJlCgluZWNlc3NhcnksIGluY2x1ZGUgb3B0YWJzLmgsIGxpYmZ1bmNzLmgsIGFuZC9vciBjb25maWcvZ29mYXN0LmguCgoJKiBjb25maWcvYWxwaGEvdW5pY29zbWsuaCwgY29uZmlnL2FscGhhL3Ztcy5oLCBjb25maWcvYzR4L2M0eC5oCgkqIGNvbmZpZy9hdnIvYXZyLmgsIGNvbmZpZy9jcmlzL2NyaXMuaCwgY29uZmlnL2Zydi9mcnYuaAoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCwgY29uZmlnL2k4NjAvaTg2MC5oLCBjb25maWcvaXAyay9pcDJrLmgKCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuaCwgY29uZmlnL202OGhjMTEvbTY4aGMxMS5oLCBjb25maWcvbWlwcy9taXBzLmgKCSogY29uZmlnL3JzNjAwMC9haXguaCwgY29uZmlnL3JzNjAwMC9zeXN2NC5oLCBjb25maWcvc3BhcmMvZWxmLmgKCSogY29uZmlnL3NwYXJjL2xpdGUuaCwgY29uZmlnL3NwYXJjL25ldGJzZC1lbGYuaCwgY29uZmlnL3NwYXJjL3NvbDIuaAoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCwgY29uZmlnL3Y4NTAvdjg1MC5oLCBjb25maWcvdmF4L3ZheC5oCgkqIGNvbmZpZy92YXgvZWxmLmg6IERvbid0IGRlZmluZSBvciB1c2UgSU5JVF9UQVJHRVRfT1BUQUJTLAoJSU5JVF9TVUJUQVJHRVRfT1BUQUJTLCBvciBhbnkgKl9MSUJDQUxMIG1hY3Jvcy4KCgkqIGNvbmZpZy9pYTY0L2hwdXguaDogUmVkZWZpbmUgSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQgdG8gMC4KCVNldCBUQVJHRVRfSU5JVF9MSUJGVU5DUyBhbmQgRkxPQVRfTElCX0NPTVBBUkVfUkVUVVJOU19CT09MIGhlcmUuCgkqIGNvbmZpZy9wYS9wYS1ocHV4Lmg6IERlZmluZSBMT05HX0RPVUJMRV9UWVBFX1NJWkUsCglIUFVYX0xPTkdfRE9VQkxFX0xJQlJBUlksIGFuZCBGTE9BVF9MSUJfQ09NUEFSRV9SRVRVUk5TX0JPT0wgaGVyZS4KCSogY29uZmlnL2lhNjQvaHB1eF9sb25nZG91YmxlLmgsIGNvbmZpZy9wYS9sb25nX2RvdWJsZS5oOiBEZWxldGUuCgoJKiBjb25maWcvcnM2MDAwL3hjb2ZmLmg6IERvbid0IGRlZmluZSBSUzYwMDBfSVRSVU5DIG5vciBSUzYwMDBfVUlUUlVOQy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IERlZmF1bHQgU1VOX0NPTlZFUlNJT05fTElCRlVOQ1MgYW5kCglTVU5fSU5URUdFUl9NVUxUSVBMWV82NCB0byAwLgoJKiBjb25maWcvc3BhcmMvc29sMi5oOiBSZWRlZmluZSBTVU5fQ09OVkVSU0lPTl9MSUJGVU5DUyBhbmQKCVNVTl9JTlRFR0VSX01VTFRJUExZXzY0IHRvIDEuCgkqIGNvbmZpZy9zcGFyYy9lbGYuaDogUmVkZWZpbmUgU1VOX0NPTlZFUlNJT05fTElCRlVOQ1MgYW5kCglTVU5fSU5URUdFUl9NVUxUSVBMWV82NCB0byAwLgoJKiBjb25maWcvc3BhcmMvbGl0ZS5oLCBjb25maWcvc3BhcmMvbGl0ZWVsZi5oLCBjb25maWcvc3BhcmMvc3A4NngtZWxmLmg6CglEZWZpbmUgVVNfU09GVFdBUkVfR09GQVNULgoJKiBjb25maWcvdmF4L3ZheC5oOiBEZWZhdWx0IFRBUkdFVF9FTEYgdG8gMC4KCSogY29uZmlnL3ZheC9lbGYuaDogUmVkZWZpbmUgVEFSR0VUX0VMRiB0byAxLgoKCSogY29uZmlnL2dvZmFzdC5oOiBEb24ndCBkZWZpbmUgYW55IG1hY3JvcyBoZXJlLiAgUHJvdmlkZSBvbmUKCXN0YXRpYyBmdW5jdGlvbiwgZ29mYXN0X21heWJlX2luaXRfbGliZnVuY3MsIHdoaWNoIGRvZXMgd2hhdAoJSU5JVF9HT0ZBU1RfTElCRlVOQ1MgdXNlZCB0byBkbyBidXQgb25seSBpZiBVU19TT0ZUV0FSRV9HT0ZBU1QKCWlzIGFscmVhZHkgZGVmaW5lZC4gIERvIG5vdCBjbGVhciBuZWdhdGlvbiBsaWJmdW5jcy4gIERvCglub3QgbWVzcyB3aXRoIEhGbW9kZSwgWEZtb2RlLCBvciBURm1vZGUgbGliZnVuY3MuCgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfaW5pdF9vbmNlKTogI2lmIDAgb3V0OyBtYXJrIEZJWE1FLgoKMjAwMy0xMC0wMSAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJUFIgQy8xMjQ2NgoJKiBjLXBhcnNlLmluIChwYXJtbGlzdF8yKTogTWFyayBkZWNsYXJhdGlvbiB3aXRoIGFuIGVsbGlwc2lzIGFzIElTTyBDLgoKMjAwMy0xMC0wMSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy94bS1pcmlzNS5oOiBSZW1vdmUsIHVubmVjZXNzYXJ5LgoJKiBjb25maWcuYnVpbGQgKG1pcHMtc2dpLWlyaXg1Kik6IFJlbW92ZS4KCShtaXBzLXNnaS1pcml4NipvMzIpOiBMaWtld2lzZS4KCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqbzMyKTogUmVtb3ZlIHhtX2ZpbGUuCgkobWlwcy1zZ2ktaXJpeDVjcm9zczY0KTogTGlrZXdpc2UuCgkobWlwcy1zZ2ktaXJpeDUqKTogTGlrZXdpc2UuCgkqIGNvbmZpZy5ob3N0IChtaXBzLXNnaS1pcml4NSopOiBSZW1vdmUuCgkobWlwcy1zZ2ktaXJpeDYqbzMyKTogTGlrZXdpc2UuCgoyMDAzLTEwLTAxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF9mcHR5cGVfdmFsdWUpOiBEZWxldGUuCgkoZGJ4b3V0X3R5cGUpOiBFbWl0IFIzIGZvciBhbGwgQ09NUExFWF9UWVBFcy4KCjIwMDMtMTAtMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogb3V0cHV0LmggKGNvbXB1dGVfcmVsb2NfZm9yX2NvbnN0YW50KTogRGVjbGFyZS4KCSogdmFyYXNtLmMgKGNvbXB1dGVfcmVsb2NfZm9yX2NvbnN0YW50KTogRXh0cmFjdCBmcm9tLi4uCgkob3V0cHV0X2FkZHJlc3NlZF9jb25zdGFudHMpOiAuLi4gaGVyZS4gIEFkanVzdCBhbGwgY2FsbGVycy4KCjIwMDMtMTAtMDEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBhY2xvY2FsLm00OiBBZGQgaHB1eDEwKiBhbmQgaHB1eDExLjAwIHRvIC9kZXYvemVybyBibGFja2xpc3QuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDMtMTAtMDEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKG1ha2VfcmFuZ2UpOiBXaGVuIGhhbmRsaW5nIHVuc2lnbmVkLCBkb24ndCByZXZlcnNlCglyYW5nZSBpZiBoaWdoIGJvdW5kIGlzIHplcm8uCgoyMDAzLTA5LTMwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZGVkCgljb25kZXhlY19zaV9tZWRpYV9vcGVyYXRvciwgY29uZGV4ZWNfc2ZfYWRkX29wZXJhdG9yIGFuZAoJY29uZGV4ZWNfc2ZfY29udl9vcGVyYXRvci4gIFJlbW92ZWQgY29uZGV4ZWNfc2ZfYmluYXJ5X29wZXJhdG9yCglhbmQgY29uZGV4ZWNfc2ZfdW5hcnlfb3BlcmF0b3IuCgoyMDAzLTEwLTAxICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogYWNsb2NhbC5tNDogQWRkIHVsdHJpeCogdG8gL2Rldi96ZXJvIGJsYWNrbGlzdC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMy0xMC0wMSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBleGNlcHQuaCAoTVVTVF9VU0VfU0pMSl9FWENFUFRJT05TKTogUmV2ZXJ0IDIwMDMtMDktMjMgY2hhbmdlLgoJQWxsb3cgb3ZlcnJpZGUuCgkqIGRvYy90bS50ZXhpIChNVVNUX1VTRV9TSkxKX0VYQ0VQVElPTlMpOiBEb2N1bWVudC4KCjIwMDMtMDktMjMgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogVW5kZWZpbmUKCWJlZm9yZSByZWRlZmluaW5nLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChMSU5LX0dDQ19DX1NFUVVFTkNFX1NQRUMpOiBMaWtld2lzZS4KCjIwMDMtMTAtMDEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9jcmlzL2NyaXMtcHJvdG9zLmgsIGNvbmZpZy9jcmlzL2NyaXMuYzogQ29udmVydCB0byBJU08KCUM5MCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zLgoKMjAwMy0xMC0wMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjIChjcmlzLSotbGludXgqKTogUmV2ZXJ0IG1pc3Rha2VuIGNvbW1pdC4KCjIwMDMtMTAtMDEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExNzUzCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobGVuZ3RoIGF0dHJpYnV0ZSkgW2ZjYyBicmFuY2hdOiBBZGQgMSB0bwoJdGhlIGxlbmd0aCBpbiB0aGUgbm9uLVY5IGNhc2UuCgoyMDAzLTA5LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzKTogSG9ub3IKCURXQVJGX0FMVF9GUkFNRV9SRVRVUk5fQ09MVU1OLgoJKiB1bndpbmQtZHcyLmMgKGR3YXJmX3JlZ19zaXplX3RhYmxlKTogRXhwYW5kIGJ5IG9uZS4KCShfVW53aW5kX0dldEdSLCBfVW53aW5kX1NldEdSKTogVmFsaWRhdGUgbG9va3VwIGNvbHVtbi4KCSh1d19mcmFtZV9zdGF0ZV9mb3IpOiBSZXR1cm4gZW5kLW9mLXN0YWNrIGZvciBudWxsIHJldHVybiBhZGRyZXNzLgoJKiBkb2MvdG0udGV4aSAoRFdBUkZfQUxUX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBBZGQuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc2FfbWFzayk6IEFkZCByMzEgZm9yIGVoX3JldHVybi4KCShhbHBoYV9leHBhbmRfcHJvbG9ndWUpOiBTdG9yZSBhIHplcm8gZm9yIGl0LgoJKGFscGhhX2V4cGFuZF9lcGlsb2d1ZSk6IERvbid0IHJlbG9hZCBpdC4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKERXQVJGX0FMVF9GUkFNRV9SRVRVUk5fQ09MVU1OKTogTmV3LgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogVXNlIGNvbHVtbiA2NAoJZm9yIHRoZSBzaWdmcmFtZSByZXR1cm4gYWRkcmVzcy4KCjIwMDMtMDktMzAgIEtlbGxleSBDb29rICA8a2VsbGV5Y29vb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIHNkYm91dC5jOiBDb252ZXJ0IHRvIElTTyBDOTAgcHJvdG90eXBlcy4KCSogb2JqYy9vYmpjLWFjdC5jOiBMaWtld2lzZS4KCjIwMDMtMDktMzAgIEtlbGxleSBDb29rICA8a2VsbGV5Y29vb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbjEuYzogQ29udmVydCB0byBJU08gQzkwIHByb3RvdHlwZXMuCgkqIGNvbmZpZy9pMzg2L3dpbm50LmM6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmg6IExpa2V3aXNlLgoKMjAwMy0wOS0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEZvbGQgKEEgJiB+QikgLSAoQSAmIEIpIGludG8KCShBIF4gQikgLSBCIGZvciBhbnkgQi4KCjIwMDMtMDktMzAgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYyAoYXJtKi0qLWthb3MqLCBpWzM0NTY3XTg2LSota2FvcyosIHBvd2VycGMtKi1rYW9zKiwKCXBvd2VycGNsZS0qLWthb3MqLCBzdHJvbmdhcm0tKi1rYW9zKik6IERpc2FibGUgZml4cHJvdG8uCgoyMDAzLTA5LTMwICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS9pZWVlNzU0LXNmLlM6IFRpZHkgZm9ybWF0dGluZy4KCjIwMDMtMDktMzAgIE5pY29sYXMgUGl0cmUgIDxuaWNvQGNhbS5vcmc+CgoJKiBhcm0vbGliMWZ1bmNzLmFzbSAoQVJNX0RJVl9NT0RfQk9EWSk6IFNwbGl0IGludG8gQVJNX0RJVl9CT0RZCglhbmQgQVJNX01PRF9CT0RZLgoJKEFSTV9NT0RfQk9EWSk6IFJld3JpdHRlbi4gYWRkZWQgY2x6IGluc25zIGZvciBfX0FSTV9BUkNIX18gPj0gNS4KCShBUk1fRElWX0JPRFkpOiBBZGRlZCBjbHogaW5zbnMgZm9yIF9fQVJNX0FSQ0hfXyA+PSA1LAoJYWRkZWQgYmV0dGVyIGRpdmlzb3IgYWxpZ25tZW50IGluIHRoZSBvdGhlciBjYXNlLgoJKEFSTV9ESVYyX09SREVSKTogQWRkZWQsIGZpbmRzIHRoZSBvcmRlciBvZiBhIHNpbmdsZSBiaXQgZGl2aXNvci4KCShfX2RpdnNpMywgX191ZGl2c2kzLCBfX21vZHNpMywgX191bW9kc2kzKTogcmV3cml0dGVuIHVzaW5nIHRoZQoJbWFjcm9zIGFib3ZlLCBhZGQgZmFzdCBleGl0cyBmb3IgZGl2aXNvciA+PSBkaXZpZGVuZCwgZXRjLgoKMjAwMy0wOS0zMCAgTmljb2xhcyBQaXRyZSAgPG5pY29AY2FtLm9yZz4KCgkqIGFybS9pZWVlNzU0LWRmLlM6IFNwbGl0IGNvbXBpbGF0aW9uIG9mIGZpeHVuc2Rmc2kgZnJvbQoJTF9maXhkZnNpIHRhcmdldC4KCSogYXJtL3QtYXJtLWVsZiAoTElCMUFTTUZVTkNTKTogQWRkIF9maXh1bnNkZnNpLgoKMjAwMy0wOS0zMCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBEZWZhdWx0IHVzZV9maXhwcm90byB0byAnbm8nLgoKMjAwMy0wOS0zMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMjM0NQoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX3Jlc3RvcmVfZ3ApOiBSZW1vdmUuCgkobWlwc19ncF9zYXZlX3Nsb3QpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmVzdG9yZV9ncCk6IFJlbW92ZSBpbiBmYXZvciBvZi4uLgoJKG1pcHNfZ3Bfc2F2ZV9zbG90KTogLi4udGhpcyBuZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGV4Y2VwdGlvbl9yZWNlaXZlcik6IFVzZSBtaXBzX2dwX3NhdmVfc2xvdAoJYW5kIG1pcHNfb3V0cHV0X21vdmUgdG8gZ2VuZXJhdGUgdGhlIG91dHB1dCB0ZW1wbGF0ZS4KCShjYWxsX2ludGVybmFsKTogRm9yY2Ugc3BsaXR0aW5nIGlmIFRBUkdFVF9TUExJVF9DQUxMUy4gIERvbid0IGVtaXQKCWEgZ3AgbG9hZCBhZnRlciBhIG5vcmV0dXJuIGNhbGwuICBMb2FkIHRoZSBncCB1c2luZyBhIG1vdmUgcmF0aGVyCgl0aGFuIGFuIGV4Y2VwdGlvbl9yZWNlaXZlciBwYXR0ZXJuLgoJKGNhbGxfdmFsdWVfaW50ZXJuYWwsIGNhbGxfdmFsdWVfbXVsdGlwbGVfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShjYWxsX3NwbGl0LCBjYWxsX3ZhbHVlX3NwbGl0LCBjYWxsX3ZhbHVlX211bHRpcGxlX3NwbGl0KTogQ2xvYmJlciAkMjguCgoyMDAzLTA5LTMwICBDYXJsbyBXb29kICA8Y2FybG9AYWxpbm9lLmNvbT4KCglQUiBkZWJ1Zy8xMjMxOQoJKiBjZmdsYXlvdXQuYyAoaW5zbl9zY29wZSk6ICBVc2UgcHJvbG9ndWVfbG9jYXRvciBhbmQKCWVwaWxvZ3VlX2xvY2F0b3I7IHJldHVybiB0aGUgb3V0ZXIgZnVuY3Rpb24gc2NvcGUgZm9yCglwcm8tIGFuZCBlcGlsb2d1ZSBpbnNucy4KCjIwMDMtMDktMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvYmpjL29iamMtYWN0LmMgKGVuY29kZV90eXBlKTogRW5jb2RlIElOVEVHRVJfVFlQRXMgYW5kCglSRUFMX1RZUEVzIGJhc2VkIG9uIHRoZSBiaXRzaXplIG9mIHRoZSB0eXBlJ3MgbW9kZSwgbm90IHRoZQoJbW9kZSBkaXJlY3RseS4KCjIwMDMtMDktMjkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZHdhcmYyb3V0LmMgKGRlZmF1bHRfZWhfZnJhbWVfc2VjdGlvbik6IFNwbGl0IGludG8gLi4uCgkobmFtZWRfc2VjdGlvbl9laF9mcmFtZV9zZWN0aW9uLCBjb2xsZWN0Ml9laF9mcmFtZV9zZWN0aW9uKTogLi4uIG5ldwoJZnVuY3Rpb25zLgoJKiBvdXRwdXQuaCAobmFtZWRfc2VjdGlvbl9laF9mcmFtZV9zZWN0aW9uKTogRGVjbGFyZS4KCShjb2xsZWN0Ml9laF9mcmFtZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAzLTA5LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcmVhbC5jIChyZWFsX3NxcnQpOiBVc2UgZ2V0X2Nhbm9uaWNhbF9xbmFuIGRpcmVjdGx5LgoKCSogZHdhcmYyb3V0LmMgKGFkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBVc2UgcmVhbF90b190YXJnZXQuCgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfcmVhbCk6IFVzZSByZWFsX3RvX3RhcmdldCBkaXJlY3RseSwKCWNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGVsZW1lbnRzIG9mIHRoZSByZXN1bHQKCWFycmF5IGFuZCB3cml0ZSB0aGVtIG91dCBpbiBhIGxvb3AsIGluc3RlYWQgb2YgdXNpbmcgYSBnaWFudAoJc3dpdGNoIHN0YXRlbWVudCB0byBwaWNrIHRoZSBjb3JyZWN0IFJFQUxfVkFMVUVfVE9fVEFSR0VUXyoKCW1hY3JvLgoKMjAwMy0wOS0yOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGMrKy8xMjE3NQoJKiB2YXJhc20uYyAobm90aWNlX2dsb2JhbF9zeW1ib2wpOiBEaXNjYXJkIGV4dGVybmFsIHN5bWJvbHMuCgoJUFIgb3B0aW1pemF0aW9uLzEyMjg2CgkqIGdjb3YtaW8uYyAoZ2Nvdl9yZWFkX3dvcmRzKTogRml4IG1lbW1vdmUgY2FsbC4KCSogcHJvZmlsZS5jIChjb21wdXRlX2JyYW5jaF9wcm9iYWJpbGl0aWVzKTogQWRkIGV4dHJhIHNhbml0eSBjaGVja3MuCgoyMDAzLTA5LTI5ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy5nY2MgKHNwYXJjLSotc29sYXJpczIqKTogSGFuZGxlIFNvbGFyaXMgMTAgYW5kIHVwIGxpa2UKCVNvbGFyaXMgNy05LgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc29sYXJpc193aWRlYyk6IFJlcGxhY2Ugc29sYXJpczIuWzAtNV0qIGJ5Cgl3aWxkY2FyZHMgd2hpY2ggZXhwbGljaXRseSBtYXRjaCBtaWNybyB2ZXJzaW9ucy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDMtMDktMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGb2xkIChBICYgfkIpIC0gKEEgJiBCKSBpbnRvCgkoQSBeIEIpIC0gQiwgd2hlcmUgQiBpcyBhbnkgcG93ZXIgb2YgMiBtaW51cyAxLgoKMjAwMy0wOS0yOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbGliZ2Nvdi5jIChnY292X2V4aXQpOiBGaXggdHdvIHBhc3Rvcy4KCjIwMDMtMDktMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCp0c3RfZXh0enZfMV9uKTogQ29tYmluZSB3aXRoIHRoZQoJZGVmaW5lX3NwbGl0IGltbWVkaWF0ZWx5IGJlbG93IHRvIGZvcm0gZGVmaW5lX2luc25fYW5kX3NwbGl0LgoKMjAwMy0wOS0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKnRzdHNpX3ZhcmlhYmxlX2JpdCk6IE5ldy4KCSgqdHN0c2lfdmFyaWFibGVfYml0X3FpKTogTGlrZXdpc2UuCgoyMDAzLTA5LTI4ICBQaGlsIEVkd2FyZHMgIDxwaGlsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvY3Bwb3B0cy50ZXhpOiAgVXNlICdkYXNoTVAnIGluc3RlYWQgb2YgJy1NUCcgYXMgYSBjcm9zcy0KCXJlZmVyZW5jZSBuYW1lLgoKMjAwMy0wOS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IERFQ0xfU09VUkNFX0xPQ0FUSU9OLCBub3QKCWZpbGUgYW5kIGxpbmUgc2VwYXJhdGVseS4KCjIwMDMtMDktMjggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqYWRkZGkzX2NhcnJ5MV9jYyIsICIqYWRkZGkzX2NhcnJ5MV9jY29ubHkiLAoJIiphZGRkaTNfY2FycnkyX2NjIiwgIiphZGRkaTNfY2FycnkyX2Njb25seSIsICIqc3ViZGkzX2JvcnJvd19jYyIsCgkiKnN1YmRpM19ib3Jyb3dfY2Nvbmx5Iik6IE5ldyBpbnNucy4KCSgiKmFkZHNpM19zdWIiLCAiKnN1YnNpM19zdWIiKTogUmVtb3ZlLgoJKCIqc3ViZGkzX2NjIiwgKnN1YmRpM19jY29ubHkiKTogVXNlIG9ubHkgaWYgVEFSR0VUXzY0QklULgoJKCIqc3Vic2kzX2NjIik6IEZpeCBvcF90eXBlIGF0dHJpYnV0ZS4KCjIwMDMtMDktMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBUYWtlIGEgbG9jYXRpb25fdCwgaW5zdGVhZCBvZgoJaW5kaXZpZHVhbCBmaWxlIGFuZCBsaW5lLgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCSogdHJlZS5oIChleHBhbmRfYXNtX29wZXJhbmRzKTogVXBkYXRlIGRlY2wuCgkqIGMtY29tbW9uLmggKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBjLXNlbWFudGljcyAoZ2VucnRsX2FzbV9zdG10KTogVXBkYXRlIGNhbGwuCgoyMDAzLTA5LTI4ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IENoZWNrCglTWU1CT0xfUkVGX0xPQ0FMX1AsIG5vdCBFTkNPREVEX1NIT1JUX0NBTExfQVRUUl9QLgoJKGFybV9hc3NlbWJsZV9pbnRlZ2VyKTogTGlrZXdpc2UuCgoyMDAzLTA5LTI4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvcGRwMTEvcGRwMTEtcHJvdG9zLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS5jLAoJY29uZmlnL2M0eC9jNHgtYy5jLCBjb25maWcvYzR4L2M0eC1wcm90b3MuaCwgY29uZmlnL2M0eC9jNHguYywKCWNvbmZpZy9jNHgvYzR4Lmg6CglDb252ZXJ0IHRvIElTTyBDOTAgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucy4KCjIwMDMtMDktMjggIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqICBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYywgY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LXByb3Rvcy5oOgoJQ29udmVydCB0byBJU08gQzkwIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMuCgoyMDAzLTA5LTI4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY29uc3RhbnRfaW5mbyk6IEFkZCByZWxvYyBmaWVsZC4KCShtaXBzX2NsYXNzaWZ5X2NvbnN0YW50KTogSW5pdGlhbGl6ZSBpdC4gIEFsd2F5cyBzZXQgU1lNQk9MIHRvIHRoZQoJdW5kZXJseWluZyBzeW1ib2wsIG5vdCB0byBhbiB1bnNwZWMuCgkobWlwc19kZWxlZ2l0aW1pemVfYWRkcmVzcywgcHJpbnRfb3BlcmFuZCk6IENsZWFuIHVwIGFjY29yZGluZ2x5LgoKMjAwMy0wOS0yOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwczE2X2dwX3BzZXVkb19yZWcpOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogUmVtb3ZlIG9ycGhhbmVkIGNvbW1lbnQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19yZWxvY19vZmZzZXRfb2tfcCk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2NsYXNzaWZ5X2NvbnN0YW50KTogVXNlIGl0LgoJKG1pcHNfc3BsaXR0YWJsZV9zeW1ib2xfcCk6IEFkZCBhbiBvZmZzZXQgYXJndW1lbnQuCgkobWlwc19jbGFzc2lmeV9hZGRyZXNzKTogQWRqdXN0IGNhbGwgYWNjb3JkaW5nbHkuCgkobWlwc19sZWdpdGltaXplX3N5bWJvbCk6IEhhbmRsZSBzZGF0YSByZWZlcmVuY2VzIHdpdGggTE9fU1VNIHJhdGhlcgoJdGhhbiBhIHJlbG9jYXRpb24gdW5zcGVjLiAgVXBkYXRlIGNhbGwgdG8gbWlwc19zcGxpdHRhYmxlX3N5bWJvbF9wLgoJR2VuZXJhbGl6ZSB0aGUgY29kZSB0aGF0IGNvcGVzIHdpdGggc3ltYm9scyArIGludmFsaWQgb2Zmc2V0cy4KCShwcmludF9vcGVyYW5kKTogQWxsb3cgJyVSJyB0byBiZSBhcHBsaWVkIHRvIHNtYWxsIGRhdGEgYWRkcmVzc2VzLgoJKG1pcHNfcmVsb2Nfc3RyaW5nKTogUmVtb3ZlIFJFTE9DX0dQUkVMMTYuCgkobWlwc19zZGF0YV9wb2ludGVyKTogUmVuYW1lZCBmcm9tIG1pcHMxNl9ncF9wc2V1ZG9fcmVnLiAgUmV0dXJuICRncAoJZm9yIFRBUkdFVF9FWFBMSUNJVF9SRUxPQ1MuICBSZXR1cm4gbnVsbCBpZiB3ZSBjYW4ndCB1c2UgZ3AtcmVsYXRpdmUKCXJlbG9jYXRpb24gb3BlcmF0b3JzLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChSRUxPQ19HUFJFTDE2KTogUmVtb3ZlLiAgU2h1ZmZsZSBvdGhlciByZWxvYwoJY29uc3RhbnRzIGFjY29yZGluZ2x5LgoKMjAwMy0wOS0yNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0b3BsZXYuYyAoZmxhZ19ldmFsdWF0aW9uX29yZGVyKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCSogZmxhZ3MuaCAoZmxhZ19ldmFsdWF0aW9uX29yZGVyKTogUHJvdG90eXBlIGhlcmUuCgkqIGV4cHIuYyAoZXhwYW5kX29wZXJhbmRzKTogSWYgd2UgbmVlZCB0byBwcmVzZXJ2ZSBvYnNlcnZhYmxlCglldmFsdWF0aW9uIG9yZGVyLCBwcm90ZWN0IGV4cDEgZnJvbSBjbG9iYmVyaW5nIGV4cDAncyByZXN1bHQuCgoyMDAzLTA5LTI4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogQ29udmVydCBkZWZpbml0aW9uIHRvIElTTyBDOTAuCgkqIGlmY3Z0LmMgKG1hcmtfbG9vcF9leGl0X2VkZ2VzKTogTGlrZXdpc2UuCgkqIHJhLXJld3JpdGUuYyAoZW1pdF9jb2xvcnMpOiBMaWtld2lzZS4KCjIwMDMtMDktMjcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYyAoYWxwaGEqLWRlYy1vc2ZbNDVdKik6IERpc2FibGUgZml4cHJvdG8uCgkqIGNvbmZpZy5nY2MgKGFybSotKi11Y2xpbnV4Kik6IERpc2FibGUgZml4cHJvdG8uCgkqIGNvbmZpZy5nY2MgKHBvd2VycGMtKi1lYWJpc3BlKiwgcG93ZXJwYy0qLWVhYmlzaW1hbHRpdmVjKiwKCXBvd2VycGMtKi1lYWJpYWx0aXZlYyopOiBEaXNhYmxlIGZpeHByb3RvLgoKMjAwMy0wOS0yNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTIzNDAKCSogbG9vcC5oIChzdHJ1Y3QgaW5kdWN0aW9uKTogRG9jdW1lbnQgdGhlIG5ldyBzZW1hbnRpY3MKCW9mIHRoZSAnc2FtZScgZmllbGQgZm9yIGJpdnMuCgkqIHVucm9sbC5jIChiaXZfdG90YWxfaW5jcmVtZW50KTogRG9uJ3QgY291bnQgdGhlIHNhbWUKCWJpdiBpbmNyZW1lbnQgc2V2ZXJhbCB0aW1lcy4KCShsb29wX2l0ZXJhdGlvbnMpIFtHRU5FUkFMX0lORFVDVF06IExpa2V3aXNlLgoKMjAwMy0wOS0yNyAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtLnN0b3R0QGJ0aW50ZXJuZXQuY29tPgoKCSogdW5yb2xsLmMgKGxvb3BfaW50ZXJhdGlvbnMpW0dUXTogQWRkIG1pc3NpbmcgYnJlYWsuCgoyMDAzLTA5LTI3ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL2Nob3J1cy5oLCBjb25maWcvZGFyd2luLWMuYywgY29uZmlnL2Rhcndpbi1wcm90b3MuaCwKCWNvbmZpZy9kYXJ3aW4uYywgY29uZmlnL2Rhcndpbi5oLCBjb25maWcvZGJ4LmgsIGNvbmZpZy9kYnhjb2ZmLmgsCgljb25maWcvZGJ4ZWxmLmgsIGNvbmZpZy9lbGZvcy5oLCBjb25maWcvZnAtYml0LmgsCgljb25maWcvZnJlZWJzZC1udGhyLmgsIGNvbmZpZy9mcmVlYnNkLXNwZWMuaCwgY29uZmlnL2ZyZWVic2QuaCwKCWNvbmZpZy9mcmVlYnNkMy5oLCBjb25maWcvZnJlZWJzZDQuaCwgY29uZmlnL2ZyZWVic2Q1LmgsCgljb25maWcvZnJlZWJzZDYuaCwgY29uZmlnL25ldGJzZC1hb3V0LmgsIGNvbmZpZy9uZXRic2QtZWxmLmgsCgljb25maWcvbmV0YnNkLmgsIGNvbmZpZy9uZXR3YXJlLmgsIGNvbmZpZy9vcGVuYnNkLW9sZGdhcy5oLAoJY29uZmlnL29wZW5ic2QuaCwgY29uZmlnL3B0eDQuaCwgY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oLAoJY29uZmlnL2FscGhhL2FscGhhLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5oLCBjb25maWcvYWxwaGEvYWxwaGEubWQsCgljb25maWcvYWxwaGEvZWxmLmgsIGNvbmZpZy9hbHBoYS9ldjQubWQsIGNvbmZpZy9hbHBoYS9ldjUubWQsCgljb25maWcvYWxwaGEvZXY2Lm1kLCBjb25maWcvYWxwaGEvZnJlZWJzZC5oLCBjb25maWcvYWxwaGEvbGludXgtZWxmLmgsCgljb25maWcvYWxwaGEvbGludXguaCwgY29uZmlnL2FscGhhL25ldGJzZC5oLCBjb25maWcvYWxwaGEvb3BlbmJzZC5oLAoJY29uZmlnL2FscGhhL29zZi5oLCBjb25maWcvYWxwaGEvb3NmNS5oLCBjb25maWcvYWxwaGEvdW5pY29zbWsuaCwKCWNvbmZpZy9hbHBoYS92bXMtY2MuYywgY29uZmlnL2FscGhhL3Ztcy1jcnQwLTY0LmMsCgljb25maWcvYWxwaGEvdm1zLWNydDAuYywgY29uZmlnL2FscGhhL3Ztcy1kd2FyZjIuYXNtLAoJY29uZmlnL2FscGhhL3Ztcy1kd2FyZjJlaC5hc20sIGNvbmZpZy9hbHBoYS92bXMtbGQuYywKCWNvbmZpZy9hbHBoYS92bXMtcHN4Y3J0MC02NC5jLCBjb25maWcvYWxwaGEvdm1zLXBzeGNydDAuYywKCWNvbmZpZy9hbHBoYS92bXMuaCwgY29uZmlnL2FscGhhL3ZtczY0LmgsIGNvbmZpZy9hbHBoYS92bXNfdHJhbXAuYXNtLAoJY29uZmlnL2FscGhhL3htLXZtcy5oLCBjb25maWcvYXJjL2FyYy1tb2Rlcy5kZWYsCgljb25maWcvYXJjL2FyYy1wcm90b3MuaCwgY29uZmlnL2FyYy9hcmMuYywgY29uZmlnL2FyYy9hcmMuaCwKCWNvbmZpZy9hcmMvYXJjLm1kLCBjb25maWcvYXJjL2luaXRmaW5pLmMsIGNvbmZpZy9hcmMvbGliMWZ1bmNzLmFzbSwKCWNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oLCBjb25maWcvYXZyL2F2ci5jLCBjb25maWcvYXZyL2F2ci5oLAoJY29uZmlnL2F2ci9hdnIubWQsIGNvbmZpZy9kMzB2L2QzMHYtcHJvdG9zLmgsIGNvbmZpZy9kMzB2L2QzMHYuaCwKCWNvbmZpZy9kMzB2L2QzMHYubWQsIGNvbmZpZy9mcjMwL2ZyMzAtcHJvdG9zLmgsIGNvbmZpZy9mcjMwL2ZyMzAuYywKCWNvbmZpZy9mcjMwL2ZyMzAuaCwgY29uZmlnL2ZyMzAvZnIzMC5tZCwgY29uZmlnL2ZyMzAvbGliMWZ1bmNzLmFzbSwKCWNvbmZpZy9mcnYvY21vdmQuYywgY29uZmlnL2Zydi9jbW92aC5jLCBjb25maWcvZnJ2L2Ntb3Z3LmMsCgljb25maWcvZnJ2L2Zydi1hYmkuaCwgY29uZmlnL2Zydi9mcnYtYXNtLmgsIGNvbmZpZy9mcnYvZnJ2LW1vZGVzLmRlZiwKCWNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oLCBjb25maWcvZnJ2L2Zydi5jLCBjb25maWcvZnJ2L2Zydi5oLAoJY29uZmlnL2Zydi9mcnYubWQsIGNvbmZpZy9mcnYvZnJ2YmVnaW4uYywgY29uZmlnL2Zydi9mcnZlbmQuYywKCWNvbmZpZy9mcnYvbGliMWZ1bmNzLmFzbSwgY29uZmlnL2g4MzAwL2NsemhpMi5jLCBjb25maWcvaDgzMDAvY3R6aGkyLmMsCgljb25maWcvaDgzMDAvcGFyaXR5aGkyLmMsIGNvbmZpZy9oODMwMC9wb3Bjb3VudGhpMi5jLAoJY29uZmlnL2kzNzAvaTM3MC1jLmMsIGNvbmZpZy9pMzcwL2kzNzAtcHJvdG9zLmgsIGNvbmZpZy9pMzcwL2kzNzAuYywKCWNvbmZpZy9pMzcwL2kzNzAuaCwgY29uZmlnL2kzNzAvaTM3MC5tZCwgY29uZmlnL2kzNzAvbGludXguaCwKCWNvbmZpZy9pMzcwL212cy5oLCBjb25maWcvaTM3MC9vZS5oLCBjb25maWcvaTM4Ni9kYXJ3aW4uaCwKCWNvbmZpZy9pOTYwL2k5NjAtYy5jLCBjb25maWcvaTk2MC9pOTYwLWNvZmYuaCwKCWNvbmZpZy9pOTYwL2k5NjAtbW9kZXMuZGVmLCBjb25maWcvaTk2MC9pOTYwLXByb3Rvcy5oLAoJY29uZmlnL2k5NjAvaTk2MC5jLCBjb25maWcvaTk2MC9pOTYwLmgsIGNvbmZpZy9pOTYwL2k5NjAubWQsCgljb25maWcvaTk2MC9ydGVtcy5oLCBjb25maWcvaWE2NC9lbGYuaCwgY29uZmlnL2lhNjQvaWE2NC5oLAoJY29uZmlnL20zMnIvaW5pdGZpbmkuYywgY29uZmlnL20zMnIvbTMyci1wcm90b3MuaCwgY29uZmlnL20zMnIvbTMyci5jLAoJY29uZmlnL20zMnIvbTMyci5oLCBjb25maWcvbTMyci9tMzJyLm1kLCBjb25maWcvbTY4aGMxMS9sYXJpdGguYXNtLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaCwgY29uZmlnL202OGhjMTEvbTY4aGMxMS5jLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMS5oLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kLAoJY29uZmlnL202OGhjMTEvbTY4aGMxMi5oLCBjb25maWcvbTY4ay9jb2ZmLmgsIGNvbmZpZy9tNjhrL2NydGkucywKCWNvbmZpZy9tNjhrL2NydG4ucywgY29uZmlnL202OGsvaHAzMjAuaCwgY29uZmlnL202OGsvaHAzMjBiYXNlLmgsCgljb25maWcvbTY4ay9sYjFzZjY4LmFzbSwgY29uZmlnL202OGsvbGludXguaCwgY29uZmlnL202OGsvbTY4MDIwLWVsZi5oLAoJY29uZmlnL202OGsvbTY4ay1hb3V0LmgsIGNvbmZpZy9tNjhrL202OGstbm9uZS5oLAoJY29uZmlnL202OGsvbTY4ay1wcm90b3MuaCwgY29uZmlnL202OGsvbTY4ay5jLCBjb25maWcvbTY4ay9tNjhrLmgsCgljb25maWcvbTY4ay9tNjhrLm1kLCBjb25maWcvbTY4ay9tNjhrZWxmLmgsIGNvbmZpZy9tNjhrL202OGt2NC5oLAoJY29uZmlnL202OGsvbmV0YnNkLWVsZi5oLCBjb25maWcvbTY4ay9vcGVuYnNkLmgsCgljb25maWcvbTY4ay9ydGVtc2VsZi5oLCBjb25maWcvbTY4ay9zZ3MuaCwgY29uZmlnL21jb3JlL2xpYjEuYXNtLAoJY29uZmlnL21jb3JlL21jb3JlLWVsZi5oLCBjb25maWcvbWNvcmUvbWNvcmUtcGUuaCwKCWNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaCwgY29uZmlnL21jb3JlL21jb3JlLmMsCgljb25maWcvbWNvcmUvbWNvcmUubWQsIGNvbmZpZy9taXBzL2VsZi5oLCBjb25maWcvbWlwcy9lbGY2NC5oLAoJY29uZmlnL21pcHMvZWxmb3Jpb24uaCwgY29uZmlnL21pcHMvaXJpczUuaCwgY29uZmlnL21pcHMvaXJpczYuaCwKCWNvbmZpZy9taXBzL2lyaXM2Z2xkLmgsIGNvbmZpZy9taXBzL2lyaXg2LWxpYmMtY29tcGF0LmMsCgljb25maWcvbWlwcy9saW51eC5oLCBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oLCBjb25maWcvbWlwcy9taXBzLmMsCgljb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9taXBzL21pcHMubWQsIGNvbmZpZy9taXBzL25ldGJzZC5oLAoJY29uZmlnL21pcHMvb3BlbmJzZC5oLCBjb25maWcvbWlwcy9yMzkwMC5oLCBjb25maWcvbWlwcy9ydGVtcy5oLAoJY29uZmlnL21pcHMvdnIuaCwgY29uZmlnL21uMTAzMDAvbGludXguaCwKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAtcHJvdG9zLmgsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYywKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCwgY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCwKCWNvbmZpZy9uczMyay9fX3Vub3JkZGYyLmMsIGNvbmZpZy9uczMyay9fX3Vub3Jkc2YyLmMsCgljb25maWcvbnMzMmsvbmV0YnNkLmgsIGNvbmZpZy9uczMyay9uczMyay1wcm90b3MuaCwKCWNvbmZpZy9uczMyay9uczMyay5jLCBjb25maWcvbnMzMmsvbnMzMmsuaCwgY29uZmlnL25zMzJrL25zMzJrLm1kLAoJY29uZmlnL3BkcDExLzJic2QuaCwgY29uZmlnL3BkcDExL3BkcDExLW1vZGVzLmRlZiwKCWNvbmZpZy9wZHAxMS9wZHAxMS1wcm90b3MuaCwgY29uZmlnL3BkcDExL3BkcDExLmMsCgljb25maWcvcGRwMTEvcGRwMTEuaCwgY29uZmlnL3BkcDExL3BkcDExLm1kLCBjb25maWcvcnM2MDAwL2JpYXJjaDY0LmgsCgljb25maWcvcnM2MDAwL2RlZmF1bHQ2NC5oLCBjb25maWcvc2gvY29mZi5oLCBjb25maWcvc2gvY3J0MS5hc20sCgljb25maWcvc2gvY3J0aS5hc20sIGNvbmZpZy9zaC9jcnRuLmFzbSwgY29uZmlnL3NoL2VsZi5oLAoJY29uZmlnL3NoL2VtYmVkLWVsZi5oLCBjb25maWcvc2gvbGludXguaCwgY29uZmlnL3NoL2xpdHRsZS5oLAoJY29uZmlnL3NoL25ldGJzZC1lbGYuaCwgY29uZmlnL3NoL3J0ZW1zLmgsIGNvbmZpZy9zaC9ydGVtc2VsZi5oLAoJY29uZmlnL3NoL3NoLXByb3Rvcy5oLCBjb25maWcvc2gvc2guYywgY29uZmlnL3NoL3NoLmgsCgljb25maWcvc2gvc2gubWQsIGNvbmZpZy9zaC9zaDY0LmgsIGNvbmZpZy9zaC9zaG1lZGlhLmgsCgljb25maWcvc2gvc3NobWVkaWEuaCwgY29uZmlnL3NoL3VzaG1lZGlhLmgsIGNvbmZpZy9zcGFyYy9wYmQuaCwKCWNvbmZpZy9zcGFyYy9zcGFyYy5oLCBkb2MvaW5zdGFsbC1vbGQudGV4aSwgZml4aW5jL2ZpeGluYy5wdHgsCglmaXhpbmMvZml4aW5jLnN2cjQ6IEdOVSBDQyAtPiBHQ0MuCgoyMDAzLTA5LTI2ICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogb2JqYy9vYmpjLWFjdC5jICh0bV9wLmgpOiBUd2VhayBvcmRlci4KCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMvb2JqYy1hY3Qubyk6IEFkZCAkKFRNX1BfSCkuCgoyMDAzLTA5LTI2ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKGhwcGEqNjQqLSotbGludXgqIHwgcGFyaXNjKjY0Ki0qLWxpbnV4Kik6CglJbmNsdWRlIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4IGluIHRtYWtlX2ZpbGUuCgkqIGNvbmZpZy5nY2MgKGhwcGEqNjQqLSotbGludXgqIHwgcGFyaXNjKjY0LSotbGludXgqKToKCURpc2FibGUgZml4cHJvdG8uCgkqIGNvbmZpZy5nY2MgKGk5NjAtKi1jb2ZmKiwgbTY4ay0qLWFvdXQqLCBzcGFyY2xpdGUtKi1jb2ZmKik6CglEaXNhYmxlIGZpeHByb3RvLgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotc29sYXJpczIqLCBzcGFyYzY0LSotc29sYXJpczIqLAoJc3BhcmN2OS0qLXNvbGFyaXMyKiwgc3BhcmMtKi1zb2xhcmlzMiopOiBEaXNhYmxlIGZpeHByb3RvLgoKCSogY29uZmlnL2kzODYvdW5peC5oOiBSZW1vdmUgKHVudXNlZCkgREVGQVVMVF9BU1NFTUJMRVJfRElBTEVDVC4KCjIwMDMtMDktMjYgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKGl4ODZfcmV0dXJuX2luX21lbW9yeSk6IFJldmVydCBteSBsYXN0IHBhdGNoLgoJKiBvYmpjL29iamMtYWN0LmMgKHRtX3AuaCk6IEluY2x1ZGUuCgoyMDAzLTA5LTI2ICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZWRlZnMpOiAgT3V0cHV0IHR5cGVkZWZzIGluIGZvcndhcmQgb3JkZXIuCglObyBsb25nZXIgYW55IG5lZWQgdG8gcmV2ZXJzZSBieSByZWN1cnNpb24uCgoyMDAzLTA5LTI2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMTc0MQoJKiBnY3NlLmMgKHByZV9pbnNlcnRfY29weV9pbnNuKTogVHdlYWsgdGhlIGxvZ2ljIGZvciBmaW5kaW5nIHRoZQoJYXBwcm9wcmlhdGUgc2V0IHRvIG1hdGNoIHRoYXQgaW4gaGFzaF9zY2FuX2luc24uICBGYWxsIGJhY2sgdG8KCXRoZSBvcmlnaW5hbCBjb3B5IG1ldGhvZCwgaWYgd2UgY2FuJ3QgdmFsaWRhdGUgY2hhbmdpbmcgaW5zbi4KCShwcmVfZGVsZXRlKTogT25seSBkZWxldGUgaW5zdHJ1Y3Rpb25zIHRoYXQgaGF2ZSBhIHNpbmdsZV9zZXQsCglpbnN0ZWFkIG9mIGFib3J0aW5nIHdoZW4gd2UgZW5jb3VudGVyIGFuIFBBUkFMTEVMIGluc24gd2l0aCBtb3JlCgl0aGVuIG9uZSBTRVQuCgoyMDAzLTA5LTI2ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImJ1aWx0aW5fc2V0am1wX3NldHVwIik6IEluc24gZGVsZXRlZC4KCSgiYnVpbHRpbl9sb25nam1wIik6IEluc24gZGVsZXRlZC4KCSgic2F2ZV9zdGFja19ub25sb2NhbCIpOiBTYXZlIGxpdGVyYWwgcG9vbCBiYXNlIHBvaW50ZXIgYmVoaW5kCgliYWNrY2hhaW4gYW5kIHN0YWNrIHBvaW50ZXIuCgkoInJlc3RvcmVfc3RhY2tfbm9ubG9jYWwiKTogUmVzdG9yZSBsaXRlcmFsIHBvb2wgYmFzZSBwb2ludGVyLgoJKiBjb25maWcvczM5MC9zMzkwLmggKFNUQUNLX1NBVkVBUkVBX01PREUpOiBEb3VibGUgc2l6ZSBvZgoJdGhlIHN0YWNrIHNhdmUgYXJlYSBmb3IgdGhlIG5vbmxvY2FsIGdvdG8gY2FzZS4KCjIwMDMtMDktMjYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgYm9vdHN0cmFwLzEyMzU4CgkqIHBhLmMgKG91dHB1dF9idmIpOiBGaXggdHlwby4KCjIwMDMtMDktMjYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBEb24ndCBzZWFyY2ggZm9yIGFuIGludGVnZXIgbW9kZQoJdW5sZXNzIHdlIG5lZWQgdGhlIHJlc3VsdC4KCjIwMDMtMDktMjYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZW1pdF9tb3ZlX2luc25fMSk6IElmIHRoZXJlIGlzIG5vIG1vdmUgcGF0dGVybiBmb3IgdGhlCglvcmlnaW5hbCBtb2RlLCB0cnkgdXNpbmcgYSBwYXR0ZXJuIGZvciB0aGUgY29ycmVzcG9uZGluZyBpbnRlZ2VyIG1vZGUuCgoyMDAzLTA5LTI2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC85MjAwCgkqIGNvbWJpbmUuYyAoaWZfdGhlbl9lbHNlX2NvbmQpOiBUaWdodGVuIG1vZGUgY2hlY2suCgoyMDAzLTA5LTI1ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNwcGNoYXJzZXQuYywgY3BwaGFzaC5oOiBSZW5hbWUgJ3N0cnVjdCBzdHJidWYnIHRvCgknc3RydWN0IF9jcHBfc3RyYnVmJy4KCgkqIGNvbmZpZy9pMzg2L25ldGJzZC1lbGYuaCwgY29uZmlnL2kzODYvbmV0YnNkNjQuaCwKCWNvbmZpZy9pMzg2L25ldHdhcmUuaCwgY29uZmlnL2kzODYvbnRvLmgsIGNvbmZpZy9pMzg2L29wZW5ic2QuaCwKCWNvbmZpZy9pMzg2L3BlbnRpdW0ubWQsIGNvbmZpZy9pMzg2L3BtbWludHJpbi5oLCBjb25maWcvaTM4Ni9wcHJvLm1kLAoJY29uZmlnL2kzODYvcHR4NC1pLmgsIGNvbmZpZy9pMzg2L3J0ZW1zZWxmLmgsIGNvbmZpZy9pMzg2L3NjbzUuaCwKCWNvbmZpZy9pMzg2L3NvbDIuaCwgY29uZmlnL2kzODYvc3ZyM2dhcy5oLCBjb25maWcvaTM4Ni9zeXN2My5oLAoJY29uZmlnL2kzODYvc3lzdjQtY3BwLmgsIGNvbmZpZy9pMzg2L3N5c3Y0LmgsIGNvbmZpZy9pMzg2L3N5c3Y1LmgsCgljb25maWcvaTM4Ni91bml4LmgsIGNvbmZpZy9pMzg2L3V3aW4uaCwgY29uZmlnL2kzODYvdnN0YS5oLAoJY29uZmlnL2kzODYveG0tY3lnd2luLmgsIGNvbmZpZy9pMzg2L3htLWRqZ3BwLmgsCgljb25maWcvaTM4Ni94bS1taW5ndzMyLmgsIGNvbmZpZy9pMzg2L3htbWludHJpbi5oOiBSZXBsYWNlCgkiR05VIENDIiwgIkdOVSBjb21waWxlciIsIGFuZCAiR05VIEMtY29tcGlsZXIiIHdpdGggIkdDQyIuCgkqIGNvbmZpZy9pMzg2L2kzODYtYW91dC5oLCBjb25maWcvaTM4Ni9pMzg2LWNvZmYuaCwKCWNvbmZpZy9pMzg2L2kzODYtaW50ZXJpeC5oLCBjb25maWcvaTM4Ni9pMzg2LWludGVyaXgzLmgsCgljb25maWcvaTM4Ni9pMzg2LW1vZGVzLmRlZiwgY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCwKCWNvbmZpZy9pMzg2L2kzODYuYywgY29uZmlnL2kzODYvaTM4Ni5oLCBjb25maWcvaTM4Ni9pMzg2Lm1kLAoJY29uZmlnL2kzODYvaTM4NmVsZi5oLCBjb25maWcvaTM4Ni9rNi5tZCwgY29uZmlnL2kzODYva2Fvcy1pMzg2LmgsCgljb25maWcvaTM4Ni9saW51eC1hb3V0LmgsIGNvbmZpZy9pMzg2L2xpbnV4LmgsIGNvbmZpZy9pMzg2L2xpbnV4NjQuaCwKCWNvbmZpZy9pMzg2L2x5bngtbmcuaCwgY29uZmlnL2kzODYvbHlueC5oLCBjb25maWcvaTM4Ni9taW5ndzMyLmgsCgljb25maWcvaTM4Ni9tbWludHJpbi5oLCBjb25maWcvaTM4Ni9tb3NzLmg6IEdOVSBDQyAtPiBHQ0MuCgkiR05VIGNvbXBpbGVyIiAtPiBHQ0MuCgkqIGNvbmZpZy9pMzg2L2F0dC5oLCBjb25maWcvaTM4Ni9iZW9zLWVsZi5oLCBjb25maWcvaTM4Ni9iaWFyY2g2NC5oLAoJY29uZmlnL2kzODYvYnNkLmgsIGNvbmZpZy9pMzg2L2NydGRsbC5oLCBjb25maWcvaTM4Ni9jeWdtaW5nLmgsCgljb25maWcvaTM4Ni9jeWd3aW4uaCwgY29uZmlnL2kzODYvY3lnd2luMS5jLCBjb25maWcvaTM4Ni9jeWd3aW4yLmMsCgljb25maWcvaTM4Ni9kYXJ3aW4uaCwgY29uZmlnL2kzODYvZGpncHAuaCwgY29uZmlnL2kzODYvZW1taW50cmluLmgsCgljb25maWcvaTM4Ni9mcmVlYnNkLWFvdXQuaCwgY29uZmlnL2kzODYvZnJlZWJzZC5oLAoJY29uZmlnL2kzODYvZnJlZWJzZDY0LmgsIGNvbmZpZy9pMzg2L2dhcy5oOiBHTlUgQ0MgLT4gR0NDLgoKMjAwMy0wOS0yNSAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBjZ3JhcGguYyAoZHVtcF9jZ3JhcGgpOiAgRG9uJ3Qgb3V0cHV0IG5ld2xpbmUgYmVmb3JlIGR1bXAuICBBZGQgaW4KCSJsb2NhbCIgdG8gdGhlIGNhbGxncmFwaCBkdW1wLiAgT3V0cHV0ICJhZnRlciBpbmxpbmluZyIgZWFybGllci4KCSogY2dyYXBodW5pdC5jOiBGaXggZHVtcGZpbGUgd2hpdGVzcGFjZSBhbmQgY29tbW9uaXplIGhlYWRlcnMgb2YgdGhlCgljYWxsZ3JhcGggZHVtcHMuICBDb3JyZWN0IG1pc3NwZWxsaW5ncy4KCShjZ3JhcGhfZGVjaWRlX2lubGluaW5nKTogIE91dHB1dCBudW1iZXIgb2YgaW5zbnMgYmVmb3JlIGlubGluaW5nLgoJT3V0cHV0IHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGludG8gd2hpY2ggYSBmdW5jdGlvbiBpcyBpbmxpbmVkLgoJKGNncmFwaF9kZWNpZGVfc21hbGxfZnVuY3Rpb25zKTogRm9ybWF0IGR1bXAgZmlsZSBsaWtlIGFsd2F5c19pbmxpbmUuCgoyMDAzLTA5LTI1ICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChpeDg2X3JldHVybl9pbl9tZW1vcnkpOiBBZGQgcHJvdG90eXBlLgoKMjAwMy0wOS0yNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2VtaXRfcHJvbG9ndWUpOiBTaW1wbGlmeSBhY2Nlc3NlcyB0bwoJRlBSIHNsb3RzIGluIHRoZSBzYXZlIGFyZWEuCgkoczM5MF9lbWl0X2VwaWxvZ3VlKTogTGlrZXdpc2UuCgoyMDAzLTA5LTI1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjZ3JhcGguaCAoY2dyYXBoX3JlbW92ZV9lZGdlKTogRGVjbGFyZS4KCSogY2dyYXBoLmMgKGNncmFwaF9yZW1vdmVfZWRnZSk6IE1ha2UgZXh0ZXJuLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IENhbGwgY2dyYXBoX3JlbW92ZV9lZGdlCglpbnN0ZWFkIG9mIGNncmFwaF9yZW1vdmVfY2FsbC4KCjIwMDMtMDktMjUgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIG9iamMvb2JqYy1hY3QuYyAoZ2VuX2RlY2xhcmF0aW9uXzEpOiBGaXggcHJpbnRmIGZvcm1hdC4KCjIwMDMtMDktMjUgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFsbF9jb3Jlcyk6IGFybTcxMHQsIGFybTcyMHQgYW5kIGFybTc0MHQgYXJlIGFsbCBiYXNlZCBvbiB0aGUKCWFybTd0ZG1pIGNvcmUuCgoyMDAzLTA5LTI1ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLXByb3Rvcy5oIChvYmpjX2ltYWdlX2luZm9fc2VjdGlvbik6CglOZXcgcHJvdG90eXBlLgoKMjAwMy0wOS0yNSAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKHN0dWItb2JqYy5vKTogRGVwZW5kIG9uICQoR0dDX0gpLgoKMjAwMy0wOS0yNSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBHZXQgcmlkIG9mIG1vcmUgZ3JhdHVpdGlvdXMgJ3gnZXMuICBBY3R1YWxseSBhbGxvdwoJdHNjNzAxIGFzIGEgLS13aXRoLWNwdSwgLS13aXRoLXR1bmUgc2V0dGluZyBmb3Igc3BhcmMuCgoyMDAzLTA5LTI1ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjLXBhcnNlLmluIChvYmpjX3RyeV9zdG10KTogRG8gbm90IHNwZWNpZnkgYSAldHlwZS4KCjIwMDMtMDktMjUgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogTmV3ICd3aWRlbHkgcG9ydGVkIHN5c3RlbScgY2xhdXNlIGZvciBydGVtcy4KCVNldCB0aHJlYWQgZmlsZSB0aGVyZSwgbm90IGluIGluZGl2aWR1YWwgY2xhdXNlcy4KCjIwMDMtMDktMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvNjIyMgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfYXJnKTogSGFuZGxlIGFyZ3VtZW50cyB0aGF0IG11c3QgYmUKCXBhc3NlZCBvbiB0aGUgc3RhY2suCgoyMDAzLTA5LTI1ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKHdpZGVseSBwb3J0ZWQgc3lzdGVtcyBzZWN0aW9uKTogTW9zdGx5IGFscGhhYmV0aXplCglieSBzeXN0ZW0uICBDb21tZW50IHRoZSBjYXNlIHdoZXJlIHdlIGNhbid0LgoJKiBjb25maWcuZ2NjICh3aWRlbHkgcG9ydGVkIHN5c3RlbXMgc2VjdGlvbik6IFJlaW5kZW50IGFuZCBjbGVhbiB1cC4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IHVzZXMgb2YgJ3gnIGluIGNhc2Ugc3RhdGVtZW50cy4KCUFjdHVhbGx5IGFsbG93IGVwOTMxMiBhcyBhbiBhcm0gLS13aXRoLWFyY2ggc2V0dGluZy4KCgkqIGNvbmZpZy5nY2MgKCotaHB1eDExKTogRGlzYWJsZSBmaXhwcm90by4KCjIwMDMtMDktMjQgIFBoaWwgRWR3YXJkcyAgPHBoaWxAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBwY2gvMTIxMTIKCSogZ2NjL2NwcGZpbGVzLmMgKHBjaF9vcGVuX2ZpbGUpOiBSZXR1cm4gYmFzZWQgb24gY29tYmluZWQKCXJlc3VsdCBvZiBhbGwgZmlsZXMuCgkodmFsaWRhdGVfcGNoKTogUmV0dXJuIHZhbGlkYXRlIGZsYWcgZm9yIGN1cnJlbnQgZmlsZS4KCjIwMDMtMDktMjQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGJvb3RzdHJhcC8xMjM1OAoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfc3dhcF9vcGVyYW5kc19wKTogT25seSByZW9yZGVyIG9wZXJhbmRzIHdoZW4KCW9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgY29uc3RhbnQuCgoyMDAzLTA5LTI0ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJTUVSR0UgT0Ygb2JqYy1pbXByb3ZlbWVudHMtYnJhbmNoIGludG8gTUFJTkxJTkU6CgkqIE1ha2VmaWxlLmluIChDX09CSlMpOiBBZGQgaW4gc3R1Yi1vYmpjLm8uCgkoYy1wYXJzZS55KTogQ2hhbmdlIHNlZCBkZW1hcmNhdGlvbnMgdG8gYmVnaW4gd2l0aCAnQEAnLgoJKHN0dWItb2JqYy5vKTogTmV3IHJ1bGUuCgkqIGMtY29tbW9uLmMgKGZsYWdfbmlsX3JlY2VpdmVycywgZmxhZ19vYmpjX2V4Y2VwdGlvbnMsIGZsYWdfemVyb19saW5rLAoJZmxhZ19yZXBsYWNlX29iamNfY2xhc3Nlcyk6IE5ldyBmbGFncy4KCSogYy1jb21tb24uaCAoUklEX0FUX1RIUk9XLCBSSURfQVRfVFJZLCBSSURfQVRfQ0FUQ0gsIFJJRF9BVF9GSU5BTExZLAoJUklEX0FUX1NZTkNIUk9OSVpFRCk6IE5ldyBrZXl3b3Jkcy4KCShmbGFnX25pbF9yZWNlaXZlcnMsIGZsYWdfb2JqY19leGNlcHRpb25zLCBmbGFnX3plcm9fbGluaywKCWZsYWdfcmVwbGFjZV9vYmpjX2NsYXNzZXMpOiBOZXcgZmxhZ3MuCgkobG9va3VwX2ludGVyZmFjZSwgaXNfY2xhc3NfbmFtZSwgb2JqY19pc19vYmplY3RfcHRyLCBvYmpjX2NoZWNrX2RlY2wsCglvYmpjX2NvbXB0eXBlcywgb2JqY19tZXNzYWdlX3NlbGVjdG9yLCBsb29rdXBfb2JqY19pdmFyLAoJZ2V0X2N1cnJlbnRfc2NvcGUsIG9iamNfbWFya19sb2NhbHNfdm9sYXRpbGUpOiBOZXcgcHJvdG90eXBlcywKCXNvbWUgbW92ZWQgZnJvbSBjLXRyZWUuaC4KCSogYy1kZWNsLmMgKGdldF9jdXJyZW50X3Njb3BlLCBvYmpjX21hcmtfbG9jYWxzX3ZvbGF0aWxlKTogTmV3IGZ1bmN0aW9ucy4KCShmaW5pc2hfZGVjbCk6IEFkanVzdCB3aGVyZSBvYmpjX2NoZWNrX2RlY2woKSBnZXRzIGNhbGxlZC4KCSogYy1sYW5nLmMgKGxvb2t1cF9pbnRlcmZhY2UsIGlzX2NsYXNzX25hbWUsIG9iamNfaXNfaWQsICBvYmpjX2NoZWNrX2RlY2wsCglvYmpjX2NvbXB0eXBlcywgb2JqY19tZXNzYWdlX3NlbGVjdG9yLCBsb29rdXBfb2JqY19pdmFyKTogUmVtb3ZlIHN0dWJzLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IEFkZCBoYW5kbGluZyBmb3IgIGZsYWdfbmlsX3JlY2VpdmVycywKCWZsYWdfb2JqY19leGNlcHRpb25zLCBmbGFnX3JlcGxhY2Vfb2JqY19jbGFzc2VzIGFuZCBmbGFnX3plcm9fbGluay4KCSogYy1wYXJzZS5pbjogUmVwbGFjZSAnaWZjJyBhbmQgJ2VuZCBpZmMnIHNlZCBtYXJrZXJzIHdpdGggJ0BAaWZjJyBhbmQKCSdAQGVuZF9pZmMnLCByZXNwZWN0aXZlbHkuCgkoQVRfVEhST1csIEFUX1RSWSwgQVRfQ0FUQ0gsIEFUX0ZJTkFMTFksIEFUX1NZTkNIUk9OSVpFRCk6IE5ldyAldG9rZW5zLgoJKG9iamNfdHJ5X3N0bXQsIHN1cGVyY2xhc3MsIGNsYXNzX2l2YXJzLCBvYmpjX3RyeV9jYXRjaC1zdG10LAoJb2JqY19maW5hbGx5X2Jsb2NrKTogTmV3IHJ1bGVzLgoJKGNvbXBvbmVudF9kZWNsX2xpc3QyKTogQ2xlYW4gdXAgc2VtYW50aWMgYWN0aW9uIGZvciBAZGVmcyBjb25zdHJ1Y3QuCgkoY29tcG9uZW50X2RlY2wsIGM5OV9ibG9ja19zdGFydCk6IFJlbW92ZSBjYWxsIHRvIGFkZF9vYmpjX2RlY2xzKCkuCgkocG9wbGV2ZWwpOiBBZGQgY2FsbCB0byBvYmpjX2NsZWFyX3N1cGVyX3JlY2VpdmVyKCkuCgkoc3RtdCk6IEFkZCBydWxlcyBmb3IgQHRocm93LCBAdHJ5Li5AY2F0Y2guLkBmaW5hbGx5IGFuZCBAc3luY2hyb25pemVkCgljb25zdHJ1Y3RzLgoJKGNsYXNzZGVmLCBtZXRob2Rwcm90b2xpc3QpOiBDbGVhbiB1cC9zaW1wbGlmeS4KCShtZXRob2Rwcm90b2xpc3QyKTogRWxpbWluYXRlLgoJKG1ldGhvZHByb3RvKTogQ2FsbCBhZGRfbWV0aG9kKCkgaW5zdGVhZCBvZiBhZGRfY2xhc3NfbWV0aG9kKCkgYW5kCglhZGRfaW5zdGFuY2VfbWV0aG9kKCkuCgkocmVjZWl2ZXIpOiBBZGQgVFlQRU5BTUUgcHJvZHVjdGlvbi4KCShyZXN3b3Jkcyk6IEFkZCAidGhyb3ciLCAidHJ5IiwgImNhdGNoIiwgImZpbmFsbHkiIGFuZCAic3luY2hyb25pemVkIi4KCShyaWRfdG9feXkpOiBBZGQgQVRfVEhST1csIEFUX1RSWSwgQVRfQ0FUQ0gsIEFUX0ZJTkFMTFkgYW5kCglBVF9TWU5DSFJPTklaRUQuCgkqIGMtdHJlZS5oIChsb29rdXBfaW50ZXJmYWNlLCBpc19jbGFzc19uYW1lLCBvYmpjX2lzX2lkLCBvYmpjX2NoZWNrX2RlY2wsCglvYmpjX2NvbXB0eXBlcywgb2JqY19tZXNzYWdlX3NlbGVjdG9yKQoJKiBjLXR5cGVjay5jIChjb21wdHlwZXMpOiBJbiBPYmpDIG1vZGUsIGNhbGwgb2JqY19jb21wdHlwZXMoKSBmb3IKCXN0cnVjdCBhbmQgcG9pbnRlciB0eXBlcy4KCShidWlsZF9jX2Nhc3QpOiBEbyBub3QgZGlzY2FyZCBPYmpDIHByb3RvY29sIHF1YWxpZmllcnMuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IENhY2hlIHJlc3VsdCBvZiBjb21wX3RhcmdldF90eXBlcygpIGluc3RlYWQKCW9mIGNhbGxpbmcgaXQgbW9yZSB0aGFuIG9uY2UuCgkqIGMub3B0IChmbmV4dC1ydW50aW1lKTogVXBkYXRlIGRlc2NyaXB0aW9uIHN0cmluZy4KCShmbmlsLXJlY2VpdmVycywgZm9iamMtZXhjZXB0aW9ucywgZnJlcGxhY2Utb2JqYy1jbGFzc2VzLCBmemVyby1saW5rKToKCU5ldyBPYmpDL09iakMrKy1zcGVjaWZpYyBmbGFncy4KCSogZnVuY3Rpb24uaCAoR0NDX0ZVTkNUSU9OX0gpOiBIZWFkZXIgZ3VhcmQuCgkqIGdlbmd0eXBlLWxleC5sOiBUZWFjaCBsZXhlciBhYm91dCBuZXcgQEAuLi4gc2VkIGRlbWFyY2F0aW9ucy4KCSogc3R1Yi1vYmpjLmM6IE5ldyBmaWxlLCB0byBiZSB1c2VkIHRvIHNhdGlzZnkgcmVmZXJlbmNlcyB0byBPYmpDCglmdW5jdGlvbnMgYnkgdGhlIEMgYW5kIEMrKyBmcm9udC1lbmRzLgoJKiBjb25maWcvZGFyd2luLmMgKF9PQkpDX0lNQUdFX0lORk8pOiBOZXcgZ2xvYmFsIG1ldGFkYXRhLgoJKiBjb25maWcvZGFyd2luLmggKEZVTkNUSU9OKTogQWRkIGluX29iamNfaW1hZ2VfaW5mby4KCShTRUNUSU9OX0ZVTkNUSU9OKTogQWRkIG9iamNfaW1hZ2VfaW5mb19zZWN0aW9uLgoJKiBkb2MvaW52b2tlLnRleGk6IExpbmsgdG8gR0NDIHdlYiBzaXRlIGZvciBPYmplY3RpdmUtQyBpbmZvcm1hdGlvbi4KCSgtZmNvbnN0YW50LXN0cmluZy1jbGFzcyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKC1mbm8tbmlsLXJlY2VpdmVycywgLWZvYmpjLWV4Y2VwdGlvbnMsIC1mcmVwbGFjZS1vYmpjLWNsYXNzZXMsCgktZnplcm8tbGluayk6IE5ldyBkb2N1bWVudGF0aW9uLgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy1wYXJzZS55KTogQ2hhbmdlIHNlZCBkZW1hcmNhdGlvbnMgdG8gYmVnaW4KCXdpdGggJ0BAJy4KCSogb2JqYy9sYW5nLXNwZWNzLmggKEBvYmplY3RpdmUtYy1oZWFkZXIpOiBGaXggLUUgc3BlYy4KCSogb2JqYy9vYmpjL29iamMtYWN0LmM6IFJlcGxhY2UgVFlQRV9OQU1FIHdpdGggT0JKQ19UWVBFX05BTUUKCXRocm91Z2hvdXQ7IHByb3ZpZGUgY2FzdHMgZm9yIHJldHVybiB2YWx1ZXMgZnJvbSBtZW1vcnkgYWxsb2NhdGlvbgoJZnVuY3Rpb25zICh4bWFsbG9jLCBhbGxvY2EsIGdnY19hbGxvYywgZXRjLikuCgkoT0JKQ19WT0lEX0FUX0VORCk6IE5ldyBtYWNyby4KCShydGwuaCk6IERvIG5vdCAjaW5jbHVkZSBhbnkgbW9yZS4KCShTVFJJTkdfT0JKRUNUX0dMT0JBTF9OQU1FKTogUmVwbGFjZWQgd2l0aCBTVFJJTkdfT0JKRUNUX0dMT0JBTF9GT1JNQVQuCgkoVEFHX01TR1NFTkRfU1RSRVQsIFRBR19NU0dTRU5EU1VQRVJfU1RSRVQsIFRBR19NU0dTRU5EX05PTk5JTCwKCVRBR19NU0dTRU5EX05PTk5JTF9TVFJFVCwgVEFHX0VYQ0VQVElPTkVYVFJBQ1QsIFRBR19FWENFUFRJT05UUllFTlRFUiwKCVRBR19FWENFUFRJT05UUllFWElULCBUQUdfRVhDRVBUSU9OTUFUQ0gsIFRBR19FWENFUFRJT05USFJPVywKCVRBR19TWU5DRU5URVIsIFRBR19TWU5DRVhJVCk6IE5ldyBOZVhUIHJ1bnRpbWUgZW50cnkgcG9pbnRzLgoJKHN0cnVjdCB2YWxfc3RhY2ssIGNhdGNoX2NvdW50X3N0YWNrLCBleGNfYmluZGluZ19zdGFjaywgIHZhbF9zdGFja19wdXNoLAoJdmFsX3N0YWNrX3BvcCk6IE5ldy4KCShvYmpjX2NoZWNrX2RlY2wpOiBGaXggcHJlY29uZGl0aW9uIGZvciBlcnJvciBtZXNzYWdlLCBhbG9uZyB3aXRoCgl0aGUgbWVzc2FnZSBpdHNlbGYuCgkobG9va3VwX2FuZF9pbnN0YWxsX3Byb3RvY29scyk6IFJlbW92ZSBub25leGlzdGVudCBwcm90b2NvbHMgZnJvbQoJcHJvdG9jb2wgbGlzdCBpbnN0ZWFkIG9mIHJldHVybmluZyBlcnJvcl9tYXJrX25vZGUuCgkoY3JlYXRlX2J1aWx0aW5fZGVjbCk6IFVzZSBERUNMX0FSVElGSUNJQUwgb25seSBmb3IgVkFSX0RFQ0xzLgoJKHNldHVwX3N0cmluZ19kZWNsKTogR2VuZXJhbGl6ZSB0byB1c2UgU1RSSU5HX09CSkVDVF9HTE9CQUxfRk9STUFULgoJKHN5bnRoX21vZHVsZV9wcm9sb2d1ZSk6IEdlbmVyYWwgY2xlYW4tdXA7IGNvbnN0cnVjdCBOZVhULXNwZWNpZmljCglydW50aW1lIEFQSSBwcm90b3R5cGVzIGlmIG5lZWRlZC4KCShidWlsZF9zdHJpbmdfY2xhc3NfdGVtcGxhdGUpOiBSZW1vdmUuCgkoY2hlY2tfc3RyaW5nX2NsYXNzX3RlbXBsYXRlLCBzdHJpbmdfbGF5b3V0X2NoZWNrZWQpOiBOZXcuCgkoYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0KTogR2VuZXJhbGl6ZSB0byB3b3JrIHdpdGgKCS1mY29uc3RhbnQtc3RyaW5nLWNsYXNzLgoJKGJ1aWxkX29iamNfc3ltdGFiX3RlbXBsYXRlKTogRml4IGxheW91dCBmb3IgdGhlIE5lWFQgcnVudGltZS4KCShidWlsZF9tZXRhZGF0YV9kZWNsKTogTmV3LgoJKGZvcndhcmRfZGVjbGFyZV9jYXRlZ29yaWVzKTogQ2FsbCBidWlsZF9tZXRhZGF0YV9kZWNsKCkgaW5zdGVhZCBvZgoJY3JlYXRlX2J1aWx0aW5fZGVjbCgpIGV0IGFsLgoJKGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yKTogVXNlIE9CSkNfVk9JRF9BVF9FTkQgaW5zdGVhZCBvZgoJdm9pZF9saXN0X25vZGVfMS4KCShidWlsZF9zZWxlY3Rvcl9yZWZlcmVuY2VfZGVjbCwgYnVpbGRfY2xhc3NfcmVmZXJlbmNlX2RlY2wsCglidWlsZF9vYmpjX3N0cmluZ19kZWNsKTogRG8gbm90IHNldCBUUkVFX1JFQURPTkxZLgoJKGdldF9wcm90b19lbmNvZGluZyk6IERvIG5vdCBjYWxsIGhhY2tfbWV0aG9kX3Byb3RvdHlwZSgpLgoJKGdldF9jbGFzc19yZWZlcmVuY2UpOiBBZGQgZmFpbHVyZSBtb2RlIGZvciBpbnZhbGlkIGNsYXNzIG5hbWVzOwoJc3VwcG9ydCAtZnplcm8tbGluazsgZGVmZXIgaWYgaW4gYW4gT2JqQysrIHRlbXBsYXRlIGRlY2xhcmF0aW9uLgoJKG9iamNfZGVjbGFyZV9hbGlhcywgb2JqY19kZWNsYXJlX2NsYXNzKTogRml4IHVwIGR1cGxpY2F0ZSBuYW1lCglsb29rdXA7IGNoZWNrIGZvciBnbG9iYWwgc2NvcGUgaWYgaW4gT2JqQysrLgoJKGlzX2NsYXNzX25hbWUpOiBHZW5lcmFsaXplIHRvIHdvcmsgd2l0aCB2YXJpb3VzIHRyZWUgbm9kZXMgKFRZUEVfREVDTCwKCVJFQ09SRF9UWVBFLCBJREVOVElGSUVSX05PREUsIGV0Yy4pCgkob2JqY19pc19pZCk6IFJlbW92ZWQuCgkob2JqY19pc19vYmplY3RfcHRyKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9jbGFzc19pdmFyc19mcm9tX25hbWUpOiBOZXcgZnVuY3Rpb24sIHVzZWQgZm9yIEBkZWZzIGNvbnN0cnVjdC4KCShnZXRfY2xhc3NfaXZhcnMpOiBBZGQgb3B0aW9uIHRvIHJldHVybiByYXcgaXZhcnM7IGNyZWF0ZSBhCglDbEFTU19PV05fSVZBUlMgbGlzdCBmb3IgZWFjaCBjbGFzcyBhcyBuZWVkZWQuCgkob2JqY19lbnRlcl9ibG9jaywgb2JqY19leGl0X2Jsb2NrLCBvYmpjX2RlY2xhcmVfdmFyaWFibGUsCglvYmpjX2J1aWxkX3Rocm93X3N0bXQsIHZhbF9zdGFja19wdXNoLCB2YWxfc3RhY2tfcG9wLAoJb2JqY19idWlsZF90cnlfZW50ZXJfZnJhZ21lbnQsIG9iamNfYnVpbGRfZXh0cmFjdF9leHByLAoJb2JqY19idWlsZF90cnlfZXhpdF9mcmFnbWVudCwgb2JqY19idWlsZF9leHRyYWN0X2ZyYWdtZW50LAoJb2JqY19idWlsZF90cnlfcHJvbG9ndWUsIG9iamNfYnVpbGRfdHJ5X2VwaWxvZ3VlLAoJb2JqY19idWlsZF9jYXRjaF9zdG10LCBvYmpjX2J1aWxkX2NhdGNoX2VwaWxvZ3VlLAoJb2JqY19idWlsZF9maW5hbGx5X3Byb2xvZ3VlLCBvYmpjX2J1aWxkX2ZpbmFsbHlfZXBpbG9ndWUsCglvYmpjX2J1aWxkX3RyeV9jYXRjaF9maW5hbGx5X3N0bXQsIG9iamNfYnVpbGRfc3luY2hyb25pemVkX3Byb2xvZ3VlLAoJb2JqY19idWlsZF9zeW5jaHJvbml6ZWRfZXBpbG9ndWUsIGJ1aWxkX29iamNfZXhjZXB0aW9uX3N0dWZmKToKCU5ldyBmdW5jdGlvbnMuCgkoX0pCTEVOKTogX3NldGptcCBqbXBidWYgc2l6ZSAobmVlZHMgdG8gYmUgbWFkZSBhIHRhcmdldCBob29rIGluCgl0aGUgZnV0dXJlKS4KCShidWlsZF9wcml2YXRlX3RlbXBsYXRlKTogRml4IHVwIGNhbGxzIHRvIGdldF9jbGFzc19pdmFycygpLgoJKG9mZnNldF9pc19yZWdpc3RlciwgZm9yd2FyZGluZ19vZmZzZXQpOiBSZW1vdmUuCgkob2JqY19tZXRob2RfcGFybV90eXBlLCBvYmpjX2VuY29kZWRfdHlwZV9zaXplKTogTmV3IGZ1bmN0aW9ucy4KCShlbmNvZGVfbWV0aG9kX3Byb3RvdHlwZSk6IFNpbXBsaWZ5IHRvIG5vIGxvbmdlciBkZXBlbmQgb24KCWJhY2stZW5kIGluZm9ybWF0aW9uLgoJKGJ1aWxkX3RtcF9mdW5jdGlvbl9kZWNsX3h4eCwgYnVpbGRfdG1wX2Z1bmN0aW9uX2RlY2wsCgloYWNrX21ldGhvZF9wcm90b3R5cGUpOiBSZW1vdmVkLgoJKGdlbmVyYXRlX3Byb3RvY29sX3JlZmVyZW5jZXMpOiBSZW1vdmUgY2FsbHMgdG8KCWJ1aWxkX3RtcF9mdW5jdGlvbl9kZWNsKCkuCgkoZ2VuZXJhdGVfcHJvdG9jb2xzKTogQWRqdXN0IGNhbGxzIHRvIGVuY29kZV9tZXRob2RfcHJvdG90eXBlKCkuCgkoYnVpbGRfY2xhc3NfdGVtcGxhdGUpOiBHZW5lcmF0ZSBzZWxfaWQnIGFuZCAnZ2Nfb2JqZWN0X3R5cGUnIGZpZWxkcwoJZm9yIHRoZSBOZVhUIHJ1bnRpbWUuCgkoc3ludGhfZm9yd2FyZF9kZWNsYXJhdGlvbnMpOiBDYWxsIGJ1aWxkX21ldGFkYXRhX2RlY2woKS4KCShjaGVja19pdmFycyk6IENoZWNrIHRoYXQgdGhlIG51bWJlciBvZiBpdmFycyBtYXRjaGVzIGFsc28uCgkoYnVpbGRfc3VwZXJfdGVtcGxhdGUpOiBNb2RpZnkgc3VwZXJfdHlwZSBkaXJlY3RseTsgZGlzYWJsZSBkZWJ1Z2dpbmcKCW91dHB1dCB3aGlsZSBnZW5lcmF0aW5nIGRlY2wuCgkoYnVpbGRfaXZhcl9saXN0X2luaXRpYWxpemVyKTogU2tpcCBsaXN0IGVsZW1lbnRzIHRoYXQgYXJlIG5vdAoJRklFTERfREVDTHMuCgkoaXZhcl9saXN0X2xlbmd0aCk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9pdmFyX2xpc3RzKTogQ2FsbCBpdmFyX2xpc3RfbGVuZ3RoKCkgaW5zdGVhZCBvZiBsaXN0X2xlbmd0aCgpCglhbmQgZW5jb2RlX21ldGhvZF9wcm90b3R5cGUoKSBpbnN0ZWFkIG9mIGVuY29kZV9tZXRob2RfZGVmKCkuCgkoYnVpbGRfc2hhcmVkX3N0cnVjdHVyZV9pbml0aWFsaXplcik6IEdlbmVyYXRlICdzZWxfaWQnIGZpZWxkIGZvcgoJdGhlIE5lWFQgcnVudGltZS4KCShnZW5lcmF0ZV9jYXRlZ29yeSk6IERvIG5vdCBzZXQgVFJFRV9VU0VELgoJKGJ1aWxkX2tleXdvcmRfc2VsZWN0b3IpOiBEaXR0bzsgdHJhbnNmb3JtIGludG8gYSBmdW5jdGlvbiBhcmd1bWVudAoJY2hhaW4uCgkoZ2V0X2FyZ190eXBlX2xpc3QpOiBJZiB0aGVyZSBhcmUgbm8gdXNlci1zcGVjaWZpZWQgYXJndW1lbnRzLCB1c2UKCScuLi4nOyB1c2UgT0JKQ19WT0lEX0FUX0VORC4KCShjaGVja19kdXBsaWNhdGVzKTogQWRkIGEgcGFyYW1ldGVyIGluZGljYXRpbmcgd2hldGhlciBtZXRob2RzIG9yCglzZWxlY3RvcnMgYXJlIGJlaW5nIGNoZWNrZWQuCgkocmVjZWl2ZXJfaXNfY2xhc3Nfb2JqZWN0KTogQWRkIHBhcmFtZXRlcnMgaW5kaWNhdGluZyB3aGV0aGVyCglyZWNlaXZlciBpcyAnc2VsZicgb3IgJ3N1cGVyJzsgcm9idXN0aWZ5LgoJKGJ1aWxkX21lc3NhZ2VfZXhwcik6IERlZmVyIGNhbGwgdG8gZmluaXNoX21lc3NhZ2VfZXhwcigpIGlmCglpbnNpZGUgYW4gT2JqQysrIHRlbXBsYXRlLgoJKGxvb2t1cF9tZXRob2RfaW5faGFzaF9saXN0cyk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfbWVzc2FnZV9leHByKTogQ29tcGxldGUgcmV3cml0ZS9maXguCgkoYnVpbGRfb2JqY19tZXRob2RfY2FsbCk6IERpdHRvOyBmYWN0b3Igb3V0IGNvbW1vbmFsaXRpZXMgYmV0d2VlbgoJdGhlIEdOVSBhbmQgTmVYVCBydW50aW1lczsgYWNjY29tbW9kYXRlIC4uLl9zdHJldCBhbmQgLi4uTm9uTmlsCgltZXNzZW5nZXIgdmFyaWFudHMgb24gdGhlIE5lWFQuCgkobG9va3VwX2luc3RhbmNlX21ldGhvZF9zdGF0aWMsIGxvb2t1cF9jbGFzc19tZXRob2Rfc3RhdGljKToKCUZvbGQgaW50byBhIHNpbmdsZSBsb29rdXBfbWV0aG9kX3N0YXRpYygpIGZ1bmN0aW9uIHdpdGggYW4KCWFkZGl0aW9uYWwgcGFyYW1ldGVyLgoJKGFkZF9jbGFzc19tZXRob2QsIGFkZF9pbnN0YW5jZV9tZXRob2QpOiBGb2xkIGludG8gYSBzaW5nbGUKCWFkZF9tZXRob2QoKSBmdW5jdGlvbiB3aXRoIGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyLgoJKGFkZF9jYXRlZ29yeSk6IE1ha2UgZHVwbGljYXRlIGNhdGVnb3JpZXMgYSBoYXJkIGVycm9yIGluIE9iakMrKy4KCShhZGRfaW5zdGFuY2VfdmFyaWFibGUpOiBQcm9wZXJseSBoYW5kbGUgdW5uYW1lZCBpdmFycywgYXJyYXlzIG9mCgl6ZXJvIG9yIG5vIHNpemUgYW5kIGJpdGZpZWxkcy4gIEluIE9iakMrKywgY2hlY2sgZm9yIG5vbnRyaXZpYWwKCUMrKyBjbGFzcyBpbnN0YW5jZXMuCgkoaXNfcHVibGljKTogQWxsb3cgQyBmdW5jdGlvbnMgdG8gYWNjZXNzIG5vbi1AcHVibGljIGl2YXJzLCB3aXRoCglhIHdhcm5pbmcuCgkoc3RhcnRfY2xhc3MpOiBNb3ZlIGNvbW1vbiBpbml0aWFsaXphdGlvbnMgdG8KCXN5bnRoX21vZHVsZV9wcm9sb2d1ZSgpOyBjaGVjayBmb3IgZ2xvYmFsIHNjb3BlIGlmIGluIE9iakMrKy4KCShjb250aW51ZV9jbGFzcyk6IEZpeCBjYWxscyB0byBmaW5pc2hfc3RydWN0KCkuCgkob2JqY19kZWNsYXJlX3Byb3RvY29scywgc3RhcnRfcHJvdG9jb2wpOiBDaGVjayBmb3IgZ2xvYmFsIHNjb3BlCglpZiBpbiBPYmpDKysuCgkoZW5jb2RlX3BvaW50ZXIpOiBFbmNvZGUgJ0JPT0wgKicgc3BlY2lhbGx5IG9uIHRoZSBOZVhULgoJKGVuY29kZV9hZ2dyZWdhdGVfd2l0aGluKTogUmV3cml0ZSB0byBwcm9wZXJseSBkaXN0aW5ndWlzaAoJc3RydWN0IHRhZ3MgZnJvbSB0eXBlZGVmcyBpbiBib3RoIE9iakMgYW5kIE9iakMrKy4KCShlbmNvZGVfYml0ZmllbGQsIGVuY29kZV9jb21wbGV0ZV9iaXRmaWVsZCk6IFJlbW92ZS4KCShlbmNvZGVfbmV4dF9iaXRmaWVsZCwgZW5jb2RlX2dudV9iaXRmaWVsZCk6IE5ldyBmdW5jdGlvbnMuCgkoZW5jb2RlX2ZpZWxkX2RlY2wpOiBDYWxsIGVuY29kZV9uZXh0X2JpdGZpZWxkKCkgb3IKCWVuY29kZV9nbnVfYml0ZmllbGQoKSBhcyBuZWVkZWQuCgkoc3ludGhfc2VsZl9hbmRfdWNtZF9hcmdzKTogTmV3IGZ1bmN0aW9uLgoJKHN0YXJ0X21ldGhvZF9kZWYpOiBVc2UgaXQuCgkob2JqY190eXBlc19hcmVfZXF1aXZhbGVudCk6IE5ldyBmdW5jdGlvbi4KCShjb21wX3Byb3RvX3dpdGhfcHJvdG8pOiBVc2UgaXQgaW5zdGVhZCBvZiBjb21wdHlwZXMoKSwgc2luY2UKCXdlIG5lZWQgc3ltbWV0cnkuCgkocmVhbGx5X3N0YXJ0X21ldGhvZCk6IFVzZSBsb29rdXBfbWV0aG9kX3N0YXRpYygpIGluc3RlYWQgb2YKCWxvb2t1cF9jbGFzc19tZXRob2Rfc3RhdGljKCkgYW5kIGxvb2t1cF9pbnN0YW5jZV9tZXRob2Rfc3RhdGljKCk7CglFbWl0ICdleHRlcm4gIkMiJyBpZiBpbiBPYmpDKysgbW9kZS4KCShhZGRfb2JqY19kZWNscyk6IFJlbW92ZWQuCgkoVU9CSkNfU1VQRVJfc2NvcGUpOiBOZXcgdmFyaWFibGUuCgkoZ2V0X3N1cGVyX3JlY2VpdmVyKTogTW92ZSBjb25zdHJ1Y3Rpb24gb2YgJ3N1cGVyJyBmcm9tCglhZGRfb2JqY19kZWNscygpOyByZW1vdmUgZGVwZW5kZW5jeSBvbiBzdHJ1Y3Qgb2JqY19jbGFzcy4KCShlbmNvZGVfbWV0aG9kX2RlZik6IFJlbW92ZWQ7IGVuY29kZV9tZXRob2RfcHJvdG90eXBlKCkgaXMKCXVzZWQgaW5zdGVhZC4KCShvYmpjX2NsZWFyX3N1cGVyX3JlY2VpdmVyKTogTmV3IGZ1bmN0aW9uLgoJKG9iamNfZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IERvIG5vdCBkbyBhbnl0aGluZyBmb3Igb3JkaW5hcnkKCUMgZnVuY3Rpb25zLgoJKGZpbmlzaF9tZXRob2RfZGVmKTogTWFyayBPYmpDIG1ldGhvZHMgYXMgdW4taW5saW5hYmxlLgoJKGdlbl9kZWNsYXJhdGlvbl8xKTogRW1pdCB3aWR0aHMgb2YgYml0ZmllbGRzLgoJKGZpbmlzaF9vYmpjKTogQ2FsbCBnZW5lcmF0ZV9vYmpjX2ltYWdlX2luZm8oKSBpZiBuZWVkZWQ7Cgl1c2UgY2hlY2tfZHVwbGljYXRlcygpIHdoZW4gY2hlY2tpbmcgZm9yIHNlbGVjdG9yIGR1cGxpY2F0ZXMuCgkoZ2VuZXJhdGVfb2JqY19pbWFnZV9pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKiBvYmpjL29iamMtYWN0LmggKGFkZF9pbnN0YW5jZV9tZXRob2QsIGFkZF9jbGFzc19tZXRob2QsCglnZXRfY2xhc3NfaXZhcnMpOiBSZW1vdmUgcHJvdG90eXBlcy4KCShvYmpjX2J1aWxkX3Rocm93X3N0bXQsIG9iamNfYnVpbGRfdHJ5X2NhdGNoX2ZpbmFsbHlfc3RtdCwKCW9iamNfYnVpbGRfc3luY2hyb25pemVkX3Byb2xvZ3VlLCBvYmpjX2J1aWxkX3N5bmNocm9uaXplZF9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfY2F0Y2hfc3RtdCwgb2JqY19idWlsZF9jYXRjaF9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfZmluYWxseV9wcm9sb2d1ZSwgb2JqY19idWlsZF9maW5hbGx5X2VwaWxvZ3VlLAoJYWRkX21ldGhvZCwgZ2V0X2NsYXNzX2l2YXJzX2Zyb21fbmFtZSk6IE5ldyBwcm90b3R5cGVzLgoJKENMQVNTX0JJTkZPX0VMVFMsIFBST1RPQ09MX0JJTkZPX0VMVFMpOiBOZXcuCgkoVFlQRV9QUk9UT0NPTF9MSVNUKTogUm9idXN0aWZ5IHRvIGRpc3Rpbmd1aXNoIGZyb20KCVRSQU5TTEFUSU9OX1VOSVRfREVDTHMuCgkoT0JKQ19UWVBFX05BTUUpOiBOZXcuCgkob2JqY190cmVlX2NvZGUpOiBFbnN1cmUgdGhhdCBlaXRoZXIgPGMtdHJlZS5oPiBvciA8Y3AvY3AtdHJlZS5oPgoJZ290IGluY2x1ZGVkLgoJKElTX1NVUEVSKTogUm9idXN0aWZ5LgoJKHVtc2dfc3RyZXRfZGVjbCwgdW1zZ19zdXBlcl9zdHJldF9kZWNsLCB1bXNnX25vbm5pbF9kZWNsLAoJdW1zZ19ub25uaWxfc3RyZXRfZGVjbCwgb2JqY19zdG9yYWdlX2NsYXNzLCBvYmpjX2V4Y2VwdGlvbl9leHRyYWN0X2RlY2wsCglvYmpjX2V4Y2VwdGlvbl90cnlfZW50ZXJfZGVjbCwgb2JqY19leGNlcHRpb25fdHJ5X2V4aXRfZGVjbCwKCW9iamNfZXhjZXB0aW9uX21hdGNoX2RlY2wsIG9iamNfZXhjZXB0aW9uX3Rocm93X2RlY2wsCglvYmpjX3N5bmNfZW50ZXJfZGVjbCwgb2JqY19zeW5jX2V4aXRfZGVjbCwgb2JqY19leGNlcHRpb25fZGF0YV90ZW1wbGF0ZSwKCW9iamNfc2V0am1wX2RlY2wsIG9iamNfc3RhY2tfZXhjZXB0aW9uX2RhdGEsIG9iamNfY2F1Z2h0X2V4Y2VwdGlvbiwKCW9iamNfcmV0aHJvd19leGNlcHRpb24sIG9iamNfZXZhbF9vbmNlLCBvYmpjX2V4Y2VwdGlvbl9ibG9ja19zdGFjaywKCW9iamNfY2F0Y2hfdHlwZSk6IE5ldyBPYmpDL09iakMrKyByb290cy4KCSogb2JqYy9vYmpjLXRyZWUuZGVmIChNRVNTQUdFX1NFTkRfRVhQUiwgQ0xBU1NfUkVGRVJFTkNFX0VYUFIpOiBOZXcKCU9iakMvT2JqQysrIHRyZWUgbm9kZSBjb2Rlcy4KCjIwMDMtMDktMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY3BwbGliLmMgKGRvX3ByYWdtYSk6IFJlaW50cm9kdWNlIGNiX2xpbmVfY2hhbmdlIGNhbGwgaW4gdGhlCgljb2RlIHBhdGggdGhhdCBjYWxscyBhIGhhbmRsZXIuCgoyMDAzLTA5LTI0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKGM0eC0qLCB0aWM0eC0qLCBkMzB2LSosIG1taXgta251dGgtbW1peHdhcmUpOgoJRGlzYWJsZSBmaXhwcm90by4KCgkqIGNvbmZpZy5nY2M6IENsZWFuIHVwIGFuZCByZWluZGVudCAkd2l0aF9jcHU9eWVzfG5vIGNsYXVzZSBhbmQKCXRoZSBzZWN0aW9uIGdpdmluZyAkd2l0aF9jcHUgZGVmYXVsdHMgYnkgdGFyZ2V0LgoKCSogY29uZmlnLmdjYyAoYXJtLSotY29mZiosIGFybWVsLSotY29mZiosIGFybSotKi1lY29zLWVsZiwKCWFybSotKi1lbGYsIGVwOTMxMi0qLWVsZiwgYXJtKi13aW5jZS1wZSosIGFybSotKi1wZSosIGFybSotKi1wZSosCglyczYwMDAtaWJtLWFpeDQuWzM0NTY3ODldKiwgcG93ZXJwYy1pYm0tYWl4NC5bMzQ1Njc4OV0qLAoJcnM2MDAwLWlibS1haXg1LjEuKiwgcG93ZXJwYy1pYm0tYWl4NS4xLiosCglyczYwMDAtaWJtLWFpeFs1Njc4OV0uKiwgcG93ZXJwYy1pYm0tYWl4WzU2Nzg5XS4qLAoJaVszNDU2N104Ni1wYy1tc2Rvc2RqZ3BwKik6IERpc2FibGUgZml4cHJvdG8uCgoyMDAzLTA5LTI0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92dGlfcG93ZXIpOiBDb2xsYXBzZSBjYXNlIDEgYW5kIDIKCXRvZ2V0aGVyLiAgUHJvdGVjdCBsb2FkIHN0cmluZyBpbnN0cnVjdGlvbiB3aXRoIFRBUkdFVF9TVFJJTkcuCgkobW92dGlfc3RyaW5nKTogQ29sbGFwc2UgY2FzZSAxIGFuZCAyIHRvZ2V0aGVyLgoKMjAwMy0wOS0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3R5cGVfZm9yX21vZGUpOiBDaGVjayBmb3IgVk9JRG1vZGUuCgoyMDAzLTA5LTI0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5oIChBU01fT1VUUFVUX1JFR19QVVNILCBBU01fT1VUUFVUX1JFR19QT1ApOiBXcmFwIGluCglkby4uLndoaWxlKDApCgoyMDAzLTA5LTIzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IE1vdmUgdXNlX2ZpeHByb3RvPW5vIGZyb20gZ2VuZXJpYyB2eHdvcmtzIGNsYXVzZSB0bwoJc3BlY2lmaWMgb25lLgoKCSogY29uZmlnLmdjYyAocG93ZXJwYy0qLWdudS1nbnVhbHRpdmVjKik6IERpc2FibGUgZml4cHJvdG8KCShhY2NpZGVudGFsbHkgbWlzc2VkIGluIGxhc3QgcGFzcykuCgoyMDAzLTA5LTIzICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJUFIgYm9vdHN0cmFwLzEyMzgzCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDktMjMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYyAoeDg2XzY0LSotZnJlZWJzZCopOiBEaXNhYmxlIGZpeHByb3RvIChhY2NpZGVudGFsbHkKCW1pc3NlZCBpbiBsYXN0IHBhc3MpLgoKMjAwMy0wOS0yMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChhbmRzaTMpOiBGaXggY3V0JnBhc3RvIGluIDB4ZmZmZmZmZmUKCWNvbnN0YW50LgoKMjAwMy0wOS0yMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBNb3ZlIHZheC0qLXZtcyogdW5zdXBwb3J0ZWQgbm90aWNlIHVwIHdpdGggdGhlIHJlc3QuCgoJKiBjb25maWcuZ2NjIChhbHBoYTY0Ki1kZWMtKnZtcyosIGFscGhhKi1kZWMtKnZtcyosCglwb3dlcnBjLSotZWFiaXNpbSosIHBvd2VycGMtKi1lYWJpKiwgcG93ZXJwY2xlLSotZWFiaXNpbSosCglwb3dlcnBjbGUtKi1lYWJpKik6IERpc2FibGUgZml4cHJvdG8uCgoJKiBjb25maWcuZ2NjOiBNb3ZlIHVzZV9maXhwcm90bz1ubyBmcm9tIGdlbmVyaWMgRnJlZUJTRCBjbGF1c2UgdG8KCXNwZWNpZmljIEZyZWVCU0QgY2xhdXNlcy4KCSogY29uZmlnLmdjYzogTW92ZSB1c2VfZml4cHJvdG89bm8gZnJvbSBnZW5lcmljIE5ldEJTRCBjbGF1c2UgdG8KCXNwZWNpZmljIE5ldEJTRCBjbGF1c2VzLgoJKiBjb25maWcuZ2NjOiBNb3ZlIHVzZV9maXhwcm90bz1ubyBmcm9tIGdlbmVyaWMgT3BlbkJTRCBjbGF1c2UKCXRvIHNwZWNpZmljIE9wZW5CU0QgY2xhdXNlcy4KCjIwMDMtMDktMjMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChocHBhX2V4cGFuZF9wcm9sb2d1ZSk6IERvIHBpYyByZWdpc3RlciBzYXZlIGluIGZyYW1lIG1hcmtlcgoJd2l0aG91dCBhZGRpbmcgYSBmcmFtZSBub3RlLgoJKiBwYS5tZCAoYWxsb2NhdGVfc3RhY2spOiBTYXZlIHBpYyByZWdpc3RlciBpbiBuZXcgZnJhbWUgbWFya2VyIHdoZW4KCWdlbmVyYXRpbmcgcGljIGNvZGUuCgoyMDAzLTA5LTIzICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2V4cGFuZF9hbGxfZnVuY3Rpb25zKTogUmVuYW1lZCBmcm9tCgljZ3JhcGhfZXhwYW5kX2Z1bmN0aW9ucy4KCjIwMDMtMDktMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChnbnVjb21wYXJlKik6IE1lcmdlIGludG8gLi4uCgkoc2xvd2NvbXBhcmUqKTogLi4uIGhlcmUuCgkoZmFzdGNvbXBhcmUqKTogTmV3IHRhcmdldHMuCgkqIGFjbG9jYWwubTQgKGdjY19BQ19QUk9HX0NNUF9JR05PUkVfSU5JVElBTCk6IEFkZCBjaGVja3MgZm9yCglvdGhlciAiZmFzdCIgY21wIHByb2dyYW1zLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA5LTIzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIHRhcmdob29rcy5jOiBJbmNsdWRlIG91dHB1dC5oLgoJKiBNYWtlZmlsZS5pbiAodGFyZ2hvb2tzLm8pOiBBZGQgb3V0cHV0LmggdG8gZGVwZW5kZW5jeSBsaXN0LgoKMjAwMy0wOS0yMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcuaG9zdDogUmVtb3ZlZCBzdXBlcmZsdW91cyBuZXdsaW5lLgoKMjAwMy0wOS0yMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBVc2UgJHt0YXJnZXR9LCBub3QgJG1hY2hpbmUuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3Qgc2V0ICRtYWNoaW5lLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA5LTIzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy90LWRhcndpbiAoY3J0Mi5vKTogQWRkIHN0bXAtaW50LWhkcnMgdG8gZGVwZW5kZW5jaWVzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogRG9uJ3QKCXBhc3MgemVyby1zaXplIGFycmF5cyBieSByZWZlcmVuY2UuCgkocnM2MDAwX3ZhX2FyZyk6IExpa2V3aXNlLgoKMjAwMy0wOS0yMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBTZXQgdXNlX2ZpeHByb3RvPW5vIGluIGVhY2ggc3BlY2lmaWMgKi1nbnUqCgljb25maWd1cmF0aW9uLCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBvbmUuCgoyMDAzLTA5LTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfc2F2ZV9leHByKTogTWFwIG5ldyBzYXZlX2V4cHIgdG8gaWRlbnRpdHkKCXJhdGhlciB0aGFuIHRvIGVycm9yX21hcmtfbm9kZS4KCjIwMDMtMDktMjMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluIChIQVZFX0dBU19TSEZfTUVSR0UpOiBBbHdheXMgZGVmaW5lIHRvIHRlc3QgcmVzdWx0LgoJVXBkYXRlIGRlc2NyaXB0aW9uLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChERUJVR19TVFJfU0VDVElPTl9GTEFHUyk6IFRlc3QgZm9yCglIQVZFX0dBU19TSEZfTUVSR0UgdmFsdWUuCgkqIHZhcmFzbS5jIChtZXJnZWFibGVfc3RyaW5nX3NlY3Rpb24pOiBMaWtld2lzZS4KCShtZXJnZWFibGVfY29uc3RhbnRfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMy0wOS0yMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBleGNlcHQuaCAoTVVTVF9VU0VfU0pMSl9FWENFUFRJT05TKTogVGVzdCBmb3IgRFdBUkYyX1VOV0lORF9JTkZPCgl2YWx1ZS4KCjIwMDMtMDktMjMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogTmV3IG1lbWJlciBleHRlcm5hbF9saWJjYWxsLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTCk6IFByb3ZpZGUgZGVmYXVsdC4KCShUQVJHRVRfQVNNX09VVCk6IFVzZSBpdC4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTCk6IERvY3VtZW50LgoJKiB0YXJnaG9va3MuYzogQ29udmVydCB0byBJU08gQyA5MC4KCShkZWZhdWx0X2V4dGVybmFsX2xpYmNhbGwpOiBOZXcgZnVuY3Rpb24uCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X2V4dGVybmFsX2xpYmNhbGwpOiBEZWNsYXJlLgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfZXh0ZXJuYWxfbGliY2FsbCk6IFVzZQoJdGFyZ2V0bS5hc21fb3V0LmV4dGVybmFsX2xpYmNhbGwgaW5zdGVhZCBvZgoJQVNNX09VVFBVVF9FWFRFUk5BTF9MSUJDQUxMLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIFtUQVJHRVRfSVJJWDUgfHwgVEFSR0VUX0lSSVggNl0KCShtaXBzX291dHB1dF9leHRlcm5hbF9saWJjYWxsKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9leHRlcm5hbF9saWJjYWxsKTogQ2hhbmdlCglkZWZpbml0aW9uIGd1YXJkLgoJQ2hhbmdlIHRvIG1hdGNoIFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTC4KCU9ubHkgb3BlcmF0ZSBmb3IgTzMyIEFCSS4KCSogY29uZmlnL21pcHMvaXJpczUuaCAoVEFSR0VUX0FTTV9FWFRFUk5BTF9MSUJDQUxMKTogRGVmaW5lCglpbnN0ZWFkIG9mIEFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTC4KCSogY29uZmlnL21pcHMvaXJpczYuaCAoQVNNX09VVFBVVF9FWFRFUk5BTF9MSUJDQUxMKTogRG9uJ3QgdW5kZWYsCglzdXBlcmNlZGVkIGJ5IFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTC4KCjIwMDMtMDktMjIgIE5hdGhuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBEbyBwZXItdGFyZ2V0IGRpc2FibGluZyBvZiBmaXhwcm90byBoZXJlIGluIGNsYXVzZXMsCglub3QgaW4gdC0gZnJhZ21lbnRzLgoJKiBjb25maWd1cmUuaW46IEFkanVzdCB0byBzZXQgU1RNUF9GSVhQUk9UTyBjb3JyZWN0bHkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL2FybS90LXNlbWksIGNvbmZpZy9jcmlzL3QtY3JpcywgY29uZmlnL2kzODYvdC1iZW9zLAoJY29uZmlnL2kzODYvdC1jeWdtaW5nLCBjb25maWcvaTM4Ni90LW50bywgY29uZmlnL2lhNjQvdC1ocHV4LAoJdC1mcmVlYnNkLCB0LWxpbnV4LCB0LW5ldGJzZCwgdC1vcGVuYnNkLCB0LXJ0ZW1zLCB0LXZ4d29ya3MsCgl4dGVuc2EvdC14dGVuc2E6IFJlbW92ZSBzZXR0aW5nIG9mIFNUTVBfRklYUFJPVE8uCgkqIGNvbmZpZy9pMzcwL3Qtb2UsIGNvbmZpZy9pMzg2L3QtbmV0d2FyZSwgY29uZmlnL3BhL3QtYnNkLAoJdC1pbnRlcml4LCB0LWxpbnV4LWFvdXQ6ICBEZWxldGUgZmlsZXMgY29uc2lzdGluZyBvbmx5IG9mCglzZXR0aW5nIG9mIFNUTVBfRklYUFJPVE8uCgoJKiBjb25maWcuaG9zdDogQWxsb3cgdW5rbm93biBob3N0cyAobm90IHRhcmdldHMpLiAgQWxsb3cKCW5zMzJrLSotbmV0YnNkZWxmKiBhcyBhIGhvc3QgKG5vdCBhIHRhcmdldCkuICBSZW1vdmUgcmVkdW5kYW50CgllbXB0eSBjbGF1c2VzLiAgUmVtb3ZlIHVzZWxlc3Mgb2Jzb2xldGUtY29uZmlndXJhdGlvbiBjbGF1c2UuCglQcnVuZSB1bnN1cHBvcnRlZCBjb25maWd1cmF0aW9uIGxpc3QuICBDb2xsYXBzZSBpZGVudGljYWwKCWNsYXVzZXMgZm9yIGNsb3NlbHkgcmVsYXRlZCBzeXN0ZW1zLiAgUmV3cml0ZSBjb21tZW50IGZvcgoJdW5zdXBwb3J0ZWQgaG9zdHMgbGlzdC4gIFJlb3JnYW5pemUgYSBsaXR0bGUuCgoyMDAzLTA5LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoY19jb21tb25fc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBFeGFtaW5lIG1vZGUsCglub3QgcHJlY2lzaW9uLgoKMjAwMy0wOS0yMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoJICAgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPGJvZXNzZW5AZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGFsdGl2ZWNfaW5fZ3Byc19wKTogUmVuYW1lIHRvIC4uLgoJKGdwcl9vcl9ncHJfcCk6IFRlc3QgSU5UX1JFR05PX1AgYW5kIGNvbnZlcnQgdG8gYm9vbGVhbi4KCShyczYwMDBfc3BsaXRfYWx0aXZlY19pbl9ncHJzKTogUmVuYW1lIHRvIC4uLgoJKHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlKTogQWRkIHN1cHBvcnQgZm9yIHVwZGF0ZSBhZGRyZXNzaW5nLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogU2FtZS4KCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kOiBTYW1lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGlfaW50ZXJuYWwzMik6IFVzZSBuZXcgc3BsaXR0ZXIgZm9yCgltdWx0aXBsZSBHUFJzLgoJKG1vdnRpKTogUmVtb3ZlIFRBUkdFVF9TVFJJTkcgfHwgVEFSR0VUX1BPV0VSUEM2NCBmaW5hbCBjb25kaXRpb24uCgkobW92dGlfcG93ZXIpOiBVc2UgbmV3IHNwbGl0dGVyIGZvciBtdWx0aXBsZSBHUFJzLgoJKG1vdnRpX3N0cmluZyk6IFNhbWUuCgkobW92dGlfcHBjNjQpOiBTYW1lLgoKMjAwMy0wOS0yMiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oOiBDb252ZXJ0IHRvIElTTyBDOTAuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmM6IENvbnZlcnQgdG8gSVNPIEM5MC4gIE1pbm9yIGZvcm1hdHRpbmcgZml4ZXMuCgoyMDAzLTA5LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQ6IFJldmVydCAyMDAzLTA5LTE3J3MgcGF0Y2guCgkoYW5kc2kzKTogU2V0IGF0dHIgY2MgdG8gc2V0X3puIHdoZW4gdXNpbmcgc2hpZnRzIG9yIGFkZHMuCgoyMDAzLTA5LTIyICBCZXJuYXJkbyBJbm5vY2VudGkgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGRvYy9jb250cmliLnRleGk6IEFkZCBQZXRlciBCYXJhZGEsIFBhdWwgRGFsZSBhbmQgbXlzZWxmLgoKMjAwMy0wOS0yMiAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChNQVNLX1JURCwgVEFSR0VUX1JURCwgUkVUVVJOX1BPUFNfQVJHUyk6CglSZXN1cnJlY3QgLW1ydGQgb3B0aW9uLgoKMjAwMy0wOS0yMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzEyMjgxCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfdmFsaWRhdGVfc3R1Yl9vcl9ub25fbGF6eV9wdHIpOiBDYWxsCgltYXJrX3JlZmVyZW5jZWQgaW5zdGVhZCBvZiBzZXR0aW5nIFRSRUVfU1lNQk9MX1JFRkVSRU5DRUQuCgoyMDAzLTA5LTIyICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJUFIgdGFyZ2V0Lzk3ODYKCSogcmVnLXN0YWNrLmMgKGNvbnZlcnRfcmVnc18xKTogUHVyZ2UgcG9zc2libGUgZGVhZCBlaCBlZGdlcwoJYWZ0ZXIgcG90ZW50aWFsIGRlbGV0aW9uIG9mIHRyYXBwaW5nIGluc24uIEF2b2lkcyBsYXRlciBJQ0UKCWZyb20gY2FsbCB0byBmaXh1cF9hYm5vcm1hbF9lZGdlcy4KCShjb252ZXJ0X3JlZ3NfMik6IFN0YWNrIHRoZSBjdXJyZW50IGJsb2NrIHN1Y2Nlc3NvcnMgYmVmb3JlCglwcm9jZXNzaW5nIHRoaXMgYmxvY2ssIHRoYXQgaXMsIGJlZm9yZSB0aGUgcG90ZW50aWFsIGRlbGV0aW9uIG9mCglkZWFkIGVkZ2VzIGJ5IGNvbnZlcnRfcmVnc18xLCBiZWNhdXNlIHRoZXNlIGVkZ2VzIGhhdmUgYmVlbiB1c2VkCgl0byBpbml0aWFsaXplIHRoZSBwcmVkZWNlc3NvcnMgY291bnQuCgoyMDAzLTA5LTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogcmVhbC5jOiBGaXggc2V2ZXJhbCBuaXRzIGluIHRoZSBoZWFkIGNvbW1lbnQuCgoyMDAzLTA5LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS5oIGMtYXV4LWluZm8uYywgYy1kZWNsLmMsIGMtcGFyc2UuaW4sIGNvdmVyYWdlLmMsIGRieG91dC5jLAoJZGlhZ25vc3RpYy5jLCBkd2FyZjJvdXQuYywgZHdhcmZvdXQuYywgZnVuY3Rpb24uYywgaW50ZWdyYXRlLmMsCglwcmludC10cmVlLmMsIHN0bXQuYywgdG9wbGV2LmMsIHRyZWUtZHVtcC5jLCB0cmVlLWlubGluZS5jLAoJdHJlZS1vcHRpbWl6ZS5jLCB0cmVlLmMsIHRyZWUuZGVmLCB4Y29mZm91dC5jLCBjb25maWcvYWxwaGEvYWxwaGEuYywKCWNvbmZpZy9taXBzL21pcHMuYywgZG9jL2MtdHJlZS50ZXhpLCBvYmpjL29iamMtYWN0LmM6IFJldmVydC4KCjIwMDMtMDktMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKFRSRUVfTE9DVVMpOiBSZW5hbWUgZnJvbSBERUNMX1NPVVJDRV9MT0NBVElPTjsgbWFrZSBjb25zdC4KCShUUkVFX0ZJTEVOQU1FLCBUUkVFX0xJTkVOTyk6IExpa2V3aXNlLgoJKHNldF90cmVlX2xvY3VzLCBjb3B5X3RyZWVfbG9jdXMsIHNldF90cmVlX2ZpbGVfbGluZSk6IE5ldy4KCShUUkVFX0xPQ1VTX1NFVF9QKTogTmV3LgoJKiBjLWF1eC1pbmZvLmMsIGMtZGVjbC5jLCBjLXBhcnNlLmluLCBjb3ZlcmFnZS5jLCBkYnhvdXQuYywKCWRpYWdub3N0aWMuYywgZHdhcmYyb3V0LmMsIGR3YXJmb3V0LmMsIGZ1bmN0aW9uLmMsIGludGVncmF0ZS5jLAoJcHJpbnQtdHJlZS5jLCBzdG10LmMsIHRvcGxldi5jLCB0cmVlLWR1bXAuYywgdHJlZS1pbmxpbmUuYywKCXRyZWUtb3B0aW1pemUuYywgdHJlZS5jLCB0cmVlLmRlZiwgeGNvZmZvdXQuYywgY29uZmlnL2FscGhhL2FscGhhLmMsCgljb25maWcvbWlwcy9taXBzLmMsIGRvYy9jLXRyZWUudGV4aSwgb2JqYy9vYmpjLWFjdC5jOiBVcGRhdGUgdG8gbWF0Y2guCgoyMDAzLTA5LTIxICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy92YXgvdmF4LXByb3Rvcy5oOiBDb252ZXJ0IHRvIElTTyBDOTAuCgkqIGNvbmZpZy92YXgvdmF4LmM6IENvbnZlcnQgdG8gSVNPIEM5MC4KCjIwMDMtMDktMjEgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAYnRpbnRlcm5ldC5jb20+CgogICAgICAgUFIgdGFyZ2V0LzEyMzUzCiAgICAgICAqIGNvbmZpZy9pMzg2L2kzODYubWQoZmZzX25vX2Ntb3ZlKTogRml4IG9wZXJhbmQgMiBjb25zdHJhaW50LgoKMjAwMy0wOS0yMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTIzMDEKCSogcmVvcmcuYyAoc3RvcF9zZWFyY2hfcCk6IFJldHVybiAxIGZvciBpbnNucyB0aGF0IGNhbgoJdGhyb3cgaW50ZXJuYWxseS4KCjIwMDMtMDktMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWZvcm1hdC5jIChnY2NfZGlhZ19jaGFyX3RhYmxlKTogQWRkICVKLgoJKGdjY19jZGlhZ19jaGFyX3RhYmxlLCBnY2NfY3h4ZGlhZ19jaGFyX3RhYmxlKTogTGlrZXdpc2UuCgkoY2hlY2tfZm9ybWF0X3R5cGVzKTogRml4IHdhbnRlZF90eXBlIG5hbWUgbG9va3VwLgoJKGluaXRfZHluYW1pY19kaWFnX2luZm8pOiBTZXR1cCAlSi4KCSogZGlhZ25vc3RpYy5jICh0ZXh0X3NwZWNpZmllc19sb2NhdGlvbik6IEltcGxlbWVudCAlSi4KCSogYy1jb21tb24uYywgYy1kZWNsLmMsIGMtb2JqYy1jb21tb24uYywgYy1wcmFnbWEuYywgY2FsbHMuYywKCWR3YXJmb3V0LmMsIGV4cHIuYywgZnVuY3Rpb24uYywgc3RtdC5jLCBzdG9yLWxheW91dC5jLCB0b3BsZXYuYywKCXRyZWUtaW5saW5lLmMsIHRyZWUtb3B0aW1pemUuYywgdmFyYXNtLmMsIGNvbmZpZy9hcm0vcGUuYywKCWNvbmZpZy9pMzg2L3dpbm50LmMsIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL21jb3JlL21jb3JlLmMsCgljb25maWcvdjg1MC92ODUwLmMsIG9iamMvb2JqYy1hY3QuYzogVXNlICVKIGluIGRpYWdub3N0aWNzLgoKCSogdHJlZS1pbmxpbmUuYzogSW5jbHVkZSBpbnRsLmgKCShpbmxpbmVfZm9yYmlkZGVuX3BfMSk6IEZpeCBpMThuIG9mIGlubGluZV9mb3JiaWRkZW5fcmVhc29uLgoJKiBNYWtlZmlsZS5pbiAodHJlZS1pbmxpbmUubyk6IFVwZGF0ZS4KCjIwMDMtMDktMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9jYXJyeV9mbGFnX2NvbXBhcmUpOiBGaXgKCXRyYW5zZm9ybWF0aW9uIG9mIGE+PTAgaW50byAodW5zaWduZWQpYTwweDgwMDAwMDAwLgoKMjAwMy0wOS0yMCAgQW5kcmV3IFBpbnNraSA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX3NlbGVjdF9ydHhfc2VjdGlvbik6IEZpeCBjaGVjayBmb3IgUElDIGNvZGUuCgoyMDAzLTA5LTIwICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluOiBEb24ndCBzZXQgKHVudXNlZCkgRExMVE9PTC4KCgkqIGNvbmZpZy9hcm0vdC1saW51eCwgY29uZmlnL2FybS90LW5ldGJzZCwgY29uZmlnL2FybS10LXNlbWk6CglSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBFTlFVSVJFLgoKMjAwMy0wOS0xOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSAtLXdpdGgtZWxmLCB3aGljaCBkb2Vzbid0IHdvcmsuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmdjYzogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gJGVsZiwgd2hpY2ggZG9lcyBub3RoaW5nLgoKCSogY29uZmlnL2kzODYveG0tdnN0YS5oOiBSZW1vdmUgeG0tZmlsZSBiZWxpZXZlZCB1c2VsZXNzLgoJKiBjb25maWcuYnVpbGQgKGkzODYtdnN0YSk6IFJlbW92ZSByZWZlcmVuY2UgdG8gaXQuCgkqIGNvbmZpZy5ob3N0IChpMzg2LXZzdGEpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIGl0LgoKMjAwMy0wOS0xOSAgUGhpbCBFZHdhcmRzICA8cGhpbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aTogIERvY3VtZW50IHRoZSBtdWx0aXBsZSB0ZXN0c3VpdGUgb3B0aW9ucy4KCjIwMDMtMDktMTkgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMpOiBBZGQgdGhlIHNwZWNpZmljIHZlcnNpb25zIG9mIEdDQwoJd2hlcmUgc3VwcG9ydCBmb3IgRnJlZUJTRCAxLCBIUC1VWCB2ZXJzaW9uIDkgYW5kIG9sZGVyLCBhbmQgQUlYCgl2ZXJzaW9uIDMgYW5kIG9sZGVyIHdhcyBkaXNjb250aW51ZWQuCgoyMDAzLTA5LTE5CUpvZWwgU2hlcnJpbGwgPGpvZWxAb2FyY29ycC5jb20+CgoJKiBjb25maWcvbTY4ay90LW02OGtiYXJlLCBjb25maWcvbTY4ay90LXJ0ZW1zOiBDaGFuZ2UgNjg2ODEgdG8KCTY4ODgxLgoKMjAwMy0wOS0xOSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9QUkVERUZJTkVTKTogQWRkIHByZWRlZmluZXMKCWZvciAtbTY4MDMwLCAtbTY4MDIwLTYwIGFuZCAtbTY4MDIwLTQwLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF82ODAzMCk6IE5ldyB0YXJnZXQgZmxhZy4KCSogY29uZmlnL202OGsvbTY4ay5oIChNQVNLX1JURCwgVEFSR0VUX1JURCwgTUFTS19SRUdQQVJNLAoJVEFSR0VUX1JFR1BBUk0pOiBSZW1vdmUuCgkqIGNvbmZpZy9tNjhrL202OGsuaDogUmVncm91cCBhbmQgcmVudW1iZXIgdGFyZ2V0IGZsYWdzLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEZpeCBzb21lIHRhYnVsYXRpb25zLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFJFVFVSTl9QT1BTX0FSR1MpOiBBbHdheXMgZXZhbHVhdGUgdG8gMC4KCSogY29uZmlnL202OGsvbTY4ay5oIChGVU5DVElPTl9BUkcpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChGVU5DVElPTl9BUkdfUEFSVElBTF9OUkVHUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLW5vbmUuaDogVXNlIE1BU0tfeHh4IHZhbHVlcyBpbiBNNjhLX0NQVV94eHggbWFjcm9zLgoKMjAwMy0wOS0xOSAgUmFsZiBDb3JzZXBpdXMgPGNvcnNlcGl1QGZhdy51bmktdWxtLmRlPgoKCSogY29uZmlnL202OGsvdC1ydGVtcyAobTY4ay0qLXJ0ZW1zKik6IE5ldy4KCSogY29uZmlnLmdjYzogVXNlIGNvbmZpZy9tNjhrL3QtcnRlbXMuCgoyMDAzLTA5LTE5ICBSYWxmIENvcnNlcGl1cyA8Y29yc2VwaXVAZmF3LnVuaS11bG0uZGU+CgoJKiBjb25maWcvbWlwcy90LXJ0ZW1zOiBOZXcuCgkqIGNvbmZpZy5nY2MgKG1pcHMqLSotcnRlbXMqKTogVXNlIGNvbmZpZy9taXBzL3QtcnRlbXMuCgoyMDAzLTA5LTE5ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNncmFwaC5jOiBGaXggdHlwbyBpbiBkZWJ1Z2dpbmcgb3V0cHV0LgoKMjAwMy0wOS0xOSAgVC4gUGFwYWRvcG91bG8gPFRoZW9kb3JlLlBhcGFkb3BvdWxvQHNvcGhpYS5pbnJpYS5mcj4KCSAgICBFcmljIEJvdGNhem91IDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzEyMTY2CgkqIGNvbmZpZy9zcGFyYy9zb2wyLWMxLmFzbSAoc3RhcnQpOiBTZXQgX19Bcmd2IGlmIEdDUlQxLgoKMjAwMy0wOS0xOCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjLXBwb3V0cHV0LmMgKHByaW50KTogIFVzZSBmaWxlbGluZSB0eXBlZGVmIGZvciBmaWVsZCAnbGluZScuCgkocHJpbnRfbGluZSwgbWF5YmVfcHJpbnRfbGluZSwgY2JfZGVmaW5lLCBjYl91bmRlZiwgY2JfaW5jbHVkZSwKCWNiX2lkZW50LCBjYl9kZWZfcHJhZ21hKTogIFVzZSBmaWxlbGluZSB0eXBlZGVmLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogIExpa2V3aXNlIGZvciBmaWVsZCBvdXQuZmlyc3RfbGluZS4KCjIwMDMtMDktMTggIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChnZW5fc3RkY2FsbF9zdWZmaXgpOiBRdWl0IHN1bW1hdGlvbiBvZgoJdG90YWwgcGFybSBzaXplIGlmIGEgcGFybSBoYXMgaW5jb21wbGV0ZSB0eXBlLgoJKGdlbl9mYXN0Y2FsbF9zdWZmaXgpOiBMaWtld2lzZS4KCjIwMDMtMDktMTggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleGNlcHQuYyAob3V0cHV0X2Z1bmN0aW9uX2V4Y2VwdGlvbl90YWJsZSk6IEFkanVzdCBsYXN0IGNoYW5nZQoJdG8gaGFuZGxlIFRZUEUgb2YgSU5URUdFUl9DU1QuCgoyMDAzLTA5LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8xMTE4NAoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9hcHBseSk6IFVzZSBjb252ZXJ0X21lbW9yeV9hZGRyZXNzCgliZWZvcmUgcmV0dXJuaW5nIHRoZSB2YWx1ZS4KCgkqIGFsaWFzLmMgKGZpbmRfYmFzZV92YWx1ZSk6IFNpbXBsaWZ5IHVzZSBvZgoJY29udmVydF9tZW1vcnlfYWRkcmVzcy4KCShmaW5kX2Jhc2VfdGVybSk6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdGVqbXBfc2V0dXApOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9sb25nam1wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fcHJlZmV0Y2gpOiBMaWtld2lzZS4KCShnZXRfbWVtb3J5X3J0eCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3JldHVybik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX21lbWNweSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1zZXQpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl92YV9hcmcpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl92YV9jb3B5KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fYWxsb2NhKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChleHBhbmRfYnVpbHRpbl9leHRyYWN0X3JldHVybl9hZGRyKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fZWhfcmV0dXJuKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jIChjb252ZXJ0X21lbW9yeV9hZGRyZXNzKTogRGVmaW5lIGV2ZW4gd2hlbgoJUE9JTlRFUl9FWFRFTkRfVU5TSUdORUQgaXMgbm90IGRlZmluZWQuICBEbyBub3RoaW5nIGlmIHRoZSBhZGRyZXNzCglpcyBhbHJlYWR5IGluIHRoZSByaWdodCBtb2RlLgoJKiBleHBsb3cuYyAobWVtb3J5X2FkZHJlc3MpOiBTaW1wbGlmeSB1c2Ugb2YgY29udmVydF9tZW1vcnlfYWRkcmVzcy4KCShwcm9iZV9zdGFja19yYW5nZSk6IExpa2V3aXNlLgoJKiBleHBtZWQuYyAobWFrZV90cmVlKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZW1pdF9ibG9ja19tb3ZlX2luX2xpYmNhbGwpOiBMaWtld2lzZS4KCShleHBhbmRfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IExpa2V3aXNlLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2NvbXB1dGVkX2dvdG8pOiBMaWtld2lzZS4KCjIwMDMtMDktMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IE9ubHkgdHJhbnNmb3JtCgkobm90IChlcSBYIFkpKSBpbnRvIChuZSBYIFkpIHdoZW4gbW9kZSBpcyBCSW1vZGUgb3IgU1RPUkVfRkxBR19WQUxVRQoJaXMgLTEuICBSVEwgIm5vdCIgaXMgYSBiaXQtd2lzZSBub3QsICJ+Iiwgbm90IGEgbG9naWNhbCBub3QgIiEiLgoKMjAwMy0wOS0xOCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIHRhcmdldC8xMTY3NAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl9lbWl0X2Zsb2F0dW5zKTogQWxzbyBoYW5kbGUgU0ltb2RlIG9wZXJhbmQuCgoyMDAzLTA5LTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUuZGVmIChGRlNfRVhQUiwgQ0xaX0VYUFIsIENUWl9FWFBSLCBQT1BDT1VOVF9FWFBSLAoJUEFSSVRZX0VYUFIpOiBEZWxldGUgdW51c2VkIHRyZWUgY29kZXMuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3RydXRodmFsdWVfY29udmVyc2lvbik6IERlbGV0ZSByZWZlcmVuY2VzCgl0byBGRlNfRVhQUiBhbmQgUE9QQ09VTlRfRVhQUi4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19wb3N0Zml4X2V4cHJlc3Npb24pOiBSZW1vdmUgRkZTX0VYUFIuCgkocHBfY19leHByZXNzaW9uKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBEZWxldGUgUlRMIGV4cGFuc2lvbiBvZiBGRlNfRVhQUiwgQ0xaX0VYUFIsCglDVFpfRVhQUiwgUE9QQ09VTlRfRVhQUiBhbmQgUEFSSVRZX0VYUFIuCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBSZW1vdmUgRkZTX0VYUFIsIENMWl9FWFBSLAoJQ1RaX0VYUFIsIFBPUENPVU5UX0VYUFIgYW5kIFBBUklUWV9FWFBSLiAgQWRkIHN1cHBvcnQgZm9yIGNhbGxzIHRvCglCVUlMVF9JTl9GRlMsIEJVSUxUX0lOX1BBUklUWSBhbmQgQlVJTFRfSU5fUE9QQ09VTlQgYW5kIHRoZWlyIGxvbmcKCWFuZCBsb25nIGxvbmcgdmFyaWFudHMuCgoyMDAzLTA5LTE4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtcHJldHR5LXByaW50LmggKHBwX3R5cGVfc3BlY2lmaWVyX3NlcSk6IEZpeCB0aGlua28uCgkqIGMtcHJldHR5LXByaW50LmM6IEZpeCBmb3JtYXR0aW5nLgoJKHBwX2NfaW50ZWdlcl9jb25zdGFudCk6IEFwcGVuZCB0eXBlIGFubm90YXRpb24gdG8gbGl0ZXJhbHMuICBUaWR5LgoJKHBwX2NfdHlwZV9zcGVjaWZpZXIpOiBUaWR5LgoJKHBwX2NfY29tcG91bmRfbGl0ZXJhbCk6IE5ldyBmdW5jdGlvbi4KCShwcF9jX2luaXRpYWxpemVyKTogU2ltcGxpZnkuLgoJKHBwX2NfaW5pdGlhbGl6ZXJfbGlzdCk6IExpa2V3aXNlLgoJKHBwX2NfYnJhY2VfZW5jbG9zZWRfaW5pdGlhbGl6ZXJfbGlzdCk6IE5ldyBmdW5jdGlvbi4KCShwcF9jX3Bvc3RmaXhfZXhwcmVzc2lvbik6IFNpbXBsaWZ5LgoKMjAwMy0wOS0xNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChhbmRzaTMsIGlvcnNpMywgeG9yc2kzLAoJb25lX2NvbXBsc2kyLCBiaXQtY2xlYXIsIGJpdC1zZXQsIGlvcnFpMyk6IE1ha2UgdGhlbSBzZXRfem4uCgoyMDAzLTA5LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBTYXZlIGFuZCByZXN0b3JlCglpbnB1dF9sb2NhdGlvbi4KCjIwMDMtMDktMTcgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChMSUJfTElOVVhfU1BFQyk6IEdpdmUgLWxwdGhyZWFkIGJlZm9yZSAtbGMuCgoyMDAzLTA5LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2ZnLmMgKGR1bXBfZmxvd19pbmZvKTogU2tpcCByZWdpc3RlciBkdW1wIGlmIHJlZ19uX2luZm8gbnVsbC4KCjIwMDMtMDktMTcgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfbGRfaGlkZGVuKTogRG9uJ3QgdGVzdCBnbnVfbGRfZmxhZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8xMjA2NgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2luaXQpOiBVc2UgYSBsYW5naG9vayB0byBmaW5kIGJ1aWx0aW4gdHlwZXMuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX3JldHVybl9udWxsX3RyZWVfdik6IE5ldyBmdW5jdGlvbi4KCShMQU5HX0hPT0tTX0JVSUxUSU5fVFlQRV9ERUNMUyk6IE5ldyBtYWNyby4KCShMQU5HX0hPT0tTX0RFQ0xTKTogQWRkIGl0IHRvIHRoZSBpbnRpYWxpemVyLgoJKiBsYW5naG9va3MuYyAobGhkX3JldHVybl9udWxsX3RyZWVfdik6IE5ldyBmdW5jdGlvbi4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX2RlY2xzKTogQWRkIGJ1aWx0aW5fdHlwZV9kZWNscy4KCjIwMDMtMDktMTcgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlndXJlLmluOiBRdW90ZSBnY2NfY29uZmlnX2FyZ3VtZW50cyBmb3IgY29uZmlnYXJncy5oLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBnY2NidWcuaW46IERvbid0IHNoZWxsLWV4cGFuZCBnY2NfY29uZmlnX2FyZ3VtZW50cy4KCjIwMDMtMDktMTcgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCVBSIGMrKy8xMTM1NwoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX2Zsb2F0aW5nX2NvbnN0YW50KTogQXBwZW5kCgl0eXBlLWFubm90YXRpb24gdG8gZmxvYXRpbmcgY29uc3RhbnRzLgoKMjAwMy0wOS0xNyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy9pcmlzNS5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9MT05HTE9ORy4KCURlZmluZSBfQUJJTzMyLgoJVXNlIGl0IGZvciBfTUlQU19TSU0uCgkqIGNvbmZpZy9taXBzL2lyaXM2LW8zMi5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogUmVtb3ZlZC4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LW8zMi1hcy5oIChTVUJUQVJHRVRfQVNNX09QVElNSVpJTkdfU1BFQyk6CglNb3ZlZCAuLi4KCSogY29uZmlnL21pcHMvaXJpczUuaCAoU1VCVEFSR0VUX0FTTV9PUFRJTUlaSU5HX1NQRUMpOiAuLi4gaGVyZSwKCXVwZGF0aW5nIGNvbW1lbnQuCglGaXhlcyBQUiB0YXJnZXQvMTAxOTAuCgoyMDAzLTA5LTE3ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoTElCX0xJTlVYX1NQRUMpOiBNYWtlIC1wdGhyZWFkIGFwcGx5Cgl0byBzaGFyZWQgbGlicmFyaWVzLgoKMjAwMy0wOS0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTE2NDYKCSogY2ZncnRsLmMgKHB1cmdlX2RlYWRfZWRnZXMpIFtKVU1QX0lOU05dOiBSZW1hdGVyaWFsaXplIHRoZQoJRURHRV9BQk5PUk1BTCBmbGFnIGZvciBFSCBlZGdlcy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2NzZSk6IERlbGV0ZSB1bnJlYWNoYWJsZSBibG9ja3MKCWlmIGRlYWQgZWRnZXMgd2VyZSBwdXJnZWQuCgoyMDAzLTA5LTE2ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWRkIHRhcmdldCBwcmVkZWZpbmVzLgoJKiBjb25maWcvbTY4ay9tNjhrLW5vbmUuaCAoQ1BQX0NQVV9ERUZBVUxUX1NQRUMpOiBLaWxsIGFsbCBkZWZpbml0aW9ucy4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmggKENQUF9GUFVfU1BFQyk6IFJlbW92ZS4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmggKENQUF9TUEVDKTogTGlrZXdpc2UuCgoyMDAzLTA5LTE2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY2ZnY2xlYW51cC5jIChsYWJlbF9pc19qdW1wX3RhcmdldF9wKTogQ29ycmVjdCB1c2Ugb2YgdGFibGUKCXJldHVybmVkIGJ5IHRhYmxlanVtcF9wLgoKMjAwMy0wOS0xNiAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBkd2FyZjJhc20uYyAoZHcyX2FzbV9vdXRwdXRfbnN0cmluZyk6IEFkZCBjb21tZW50LgoKMjAwMy0wOS0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgYm9vdHN0cmFwLzEyMjY5CgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9nZW5fcmVsYXRpb25hbCk6IEFsbG93IHRoZSBjbXBfbW9kZQoJYXJndW1lbnQgdG8gYmUgVk9JRG1vZGUsIHRha2luZyB0aGUgbW9kZSBvZiB0aGUgY29tcGFyaXNvbiBmcm9tCgl0aGUgb3BlcmFuZHMuICBPbmx5IGNhbGwgc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24gaWYgd2UKCWtub3cgdGhlIG1vZGUgb2YgdGhlIGNvbXBhcmlzb24uICBIb25vciBGTE9BVF9TVE9SRV9GTEFHX1ZBTFVFCglpZiBjb21wYXJpc29uIGhhcyBhIGZsb2F0aW5nIHBvaW50IHJlc3VsdC4gIEVuc3VyZSB0aGF0IHRoZQoJcmVzdWx0IGlzIGFsd2F5cyBvZiB0aGUgc3BlY2lmaWVkIG1vZGUuCgkoc2ltcGxpZnlfcmVwbGFjZV9ydHgpOiBTaW1wbGlmeSBjYWxsIHRvIHNpbXBsaWZ5X2dlbl9yZWxhdGlvbmFsLgoJKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IEVuc3VyZSB0aGUgY29ycmVjdCBtb2RlIGFuZCBjbXBfbW9kZQoJYXJlIGFsd2F5cyBwYXNzZWQgdG8gc2ltcGxpZnlfZ2VuX3JlbGF0aW9uYWwuICBTaW1wbGlmeSBOT1Qgb2YKCWNvbXBhcmlzb24gb3BlcmF0b3IgaW4gYW55IG1vZGUsIG5vdCBqdXN0IEJJbW9kZS4KCShzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IENvcnJlY3QgdGVzdHMgb24gdGhlIHJldHVybiB2YWx1ZQoJb2Ygc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24gdG8gdXNlIGNvbnN0X3RydWVfcnR4LCBub3QKCWNvbnN0MV9ydHguICBBYm9ydCBpZiBpdCBldmVyIHJldHVybnMgYSBub24tY29uc3RhbnQgcmVzdWx0LgoKCSogY2ZnbG9vcGFuYWwuYyAoY291bnRfc3RyYW5nZV9sb29wX2l0ZXJhdGlvbnMpOiBVc2UgdGhlIGZ1bmN0aW9uCglzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbiwgbm90IHNpbXBsaWZ5X2dlbl9yZWxhdGlvbmFsLCBpZgoJd2UncmUgb25seSBpbnRlcmVzdGVkIGluIGNvbnN0YW50IGNvbXBhcmlzb25zIGFuZCB3aWxsIGlnbm9yZQoJbm9uLWNvbnN0YW50IHJlc3VsdHMuCgoyMDAzLTA5LTE2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9zd2FwX29wZXJhbmRzX3ApOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lCgl0aGUgcHJlZmVyZWQgb3JkZXJpbmcgb2Ygb3BlcmFuZHMuCgkoZm9sZCk6IE51bWVyb3VzIGNsZWFuLXVwcy4gIFVzZSB0cmVlX3N3YXBfb3BlcmFuZHNfcCB3aGVuIHN3YXBwaW5nCglvcGVyYW5kcyB0byBjb21tdXRhdGl2ZSwgY29tcGFyaXNvbiBvciB0ZXJuYXJ5IG9wZXJhdG9ycy4gIFJlcGxhY2UKCXVzZXMgb2YgVFJFRV9TRVRfQ09ERSB3aXRoIHJlY3Vyc2l2ZSBjYWxsIHRvIGZvbGQuICBSZW1vdmUgZHVwbGljYXRlCgl0cmFuc2Zvcm1hdGlvbiBvZiBBID8gQiA6IEMgaW50byAhQSA/IEMgOiBCLgoKMjAwMy0wOS0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvYXJtL2xpbnV4LWVsZi5oIChMSU5LX0dDQ19DX1NFUVVFTkNFX1NQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvc2gvbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChMSU5LX0dDQ19DX1NFUVVFTkNFX1NQRUMpOiBEZWZpbmUuCgoyMDAzLTA5LTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGhhbmRsZV93YXJuX3VudXNlZF9yZXN1bHRfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgoJKGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCB3YXJuX3VudXNlZF9yZXN1bHQuCgkoY19leHBhbmRfZXhwcik6IElzc3VlIHdhcm5pbmcgd2hlbiByZXN1bHQgb2YgaW5saW5lZCBmdW5jdGlvbgoJd2l0aCB3YXJuX3VudXNlZF9yZXN1bHQgYXR0cmlidXRlIGlzIGlnbm9yZWQuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogSXNzdWUgd2FybmluZyB3aGVuIHJlc3VsdCBvZiBmdW5jdGlvbgoJd2l0aCB3YXJuX3VudXNlZF9yZXN1bHQgYXR0cmlidXRlIGlzIGlnbm9yZWQuCgkqIGMtY29tbW9uLmggKFNUTVRfRVhQUl9XQVJOX1VOVVNFRF9SRVNVTFQpOiBEZWZpbmUuCgkqIGV4cHIuYyAoZXhwcl93Zmxfc3RhY2spOiBEZWZpbmUuCgkoZXhwYW5kX2V4cHIpIDxjYXNlIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OPjogSWYgaWdub3JlLAoJcGFzcyBjb25zdDBfcnR4IGFzIHRhcmdldC4gIENoYWluIGxvY2F0aW9ucyBpbnRvIGV4cHJfd2ZsX3N0YWNrLgoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBTZXQgU1RNVF9FWFBSX1dBUk5fVU5VU0VEX1JFU1VMVAoJYml0IGlmIGlubGluZWQgZnVuY3Rpb24gaGFzIHdhcm5fdW51c2VkX3Jlc3VsdCBhdHRyaWJ1dGUuCgkqIGlucHV0LmggKGV4cHJfd2ZsX3N0YWNrKTogRGVjbGFyZS4KCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCB3YXJuX3VudXNlZF9yZXN1bHQgYXR0cmlidXRlLgoKMjAwMy0wOS0xNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNiX2xpbmVfY2hhbmdlLgoKMjAwMy0wOS0xNSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9tdWx0aWJzc19zZWN0aW9uX3R5cGVfZmxhZ3MpOiBBZGQKCUFUVFJJQlVURV9VTlVTRUQuCgkoY2FsbF9pbnNuX29wZXJhbmQpOiBGb3IgUElDLCBkb24ndCBhbGxvdyBhIGRpcmVjdCBjYWxsIHRvIGEKCWZ1bmN0aW9uIGluIGEgZGlmZmVyZW50IHNlY3Rpb24gdGhhbiB0aGUgY3VycmVudCBvbmUuCgoyMDAzLTA5LTE2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogZG9jL2ludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBBZGQgbWlzc2luZyBoeXBoZW4gYmVmb3JlCgkiV2ltcG9ydCIuICBDaGFuZ2UgIi1Xbm8tZW5kaWYtbGFiZWxzIiB0byAiLVdlbmRpZi1sYWJlbHMiLgoJTW92ZSAiLVdvbGQtc3R5bGUtZGVmaW5pdGlvbiIgdG8gdGhlIEMtb25seSBzZWN0aW9uLgoJRml4IHRoZSBvcmRlcmluZyBvZiB0aGUgd2FybmluZyBvcHRpb25zLgoKMjAwMy0wOS0xNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoJICAgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKHJlbW92ZV9yZWFjaGFibGVfZXF1aXZfbm90ZXMpOiBOZXcuCglyZXBsYWNlX3N0b3JlX2luc24pOiBDYWxsIGl0LiAgVXBkYXRlIGFudGljIGxpc3QuCgkoc3RvcmVfa2lsbGVkX2luX2luc24pOiBUYWtlIFJFR19FUVVBTCBub3RlcyBpbnRvIGFjY291bnQuCgkoYnVpbGRfc3RvcmVfdmVjdG9ycywgZGVsZXRlX3N0b3JlKTogQWRkIHBhcmFtZXRlciB0bwoJcmVwbGFjZV9zdG9yZV9pbnNuIGNhbGwuCgoyMDAzLTA5LTE1ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QKTogVXNlCglTWU1CT0xfUkVGX0xPQ0FMX1AuCgoyMDAzLTA5LTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwci5oIChERUZBVUxUX0ZVTkNUSU9OX0FSR19QQURESU5HKTogTmV3LgoJKEZVTkNUSU9OX0FSR19QQURESU5HKTogVXNlIERFRkFVTFRfRlVOQ1RJT05fQVJHX1BBRERJTkcuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9ocHV4X2Z1bmN0aW9uX2FyZ19wYWRkaW5nKToKCUxpa2V3aXNlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfZnVuY3Rpb25fYXJnX3BhZGRpbmcpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZ19wYWRkaW5nKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChmdW5jdGlvbl9hcmdfcGFkZGluZyk6IExpa2V3aXNlLgoKMjAwMy0wOS0xNSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9ibG9jayk6IFVzZSByZWFkeV9yZW1vdmVfZmlyc3QgaW5zdGVhZAoJb2YgY2hvb3NlX3JlYWR5IGZvciBub24tZGZhIGluc24gc2NoZWR1bGluZy4KCjIwMDMtMDktMTUgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCSAgICBLYXZlaCBSLiBHaGF6aSA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogRGVzY3JpYmUgLVdvbGQtc3R5bGUtZGVmaW5pdGlvbi4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgT1BUX1dvbGRfc3R5bGVfZGVmaW5pdGlvbi4KCSogYy1wYXJzZS5pbjogV2FybiBhYm91dCBvbGQtc3R5bGUgcGFyYW1ldGVyIGRlZmluaXRpb24uCgkqIGMtY29tbW9uLmM6IERlZmluZSB3YXJuX29sZF9zdHlsZV9kZWZpbnRpb24uCgkqIGMtY29tbW9uLmg6IERlY2xhcmUgaXQuCgkqIGMub3B0OiBBZGQgV29sZC1zdHlsZS1kZWZpbnRpb24uCgoyMDAzLTA5LTE1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMuaDogQ29udmVydCAoKSBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IExpa2V3aXNlLgoKMjAwMy0wOS0xMiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCVBSIG9wdGltaXphdGlvbi8xMDkxNAoJKiBleHByLmggKGdldF9jb25kaXRpb24sIGNhbm9uaWNhbGl6ZV9jb25kaXRpb24pOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKiBjZmdsb29wYW5hbC5jIChzaW1wbGVfbG9vcF9leGl0X3ApOiBBZGQgcGFyYW1ldGVyIHRvIGEgZ2V0X2NvbmRpdGlvbgoJYW5kIGNhbm9uaWNhbGl6ZV9jb25kaXRpb24gY2FsbHMuCgkqIGdjc2UuYyAoZmlzX2dldF9jb25kaXRpb24sIGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzXzEsCglkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IERpdHRvLgoJKiBpZmN2dC5jIChub2NlX2dldF9hbHRfY29uZGl0aW9uLCBub2NlX2dldF9jb25kaXRpb24pOiBEaXR0by4KCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSwgZXhwZWN0ZWRfdmFsdWVfdG9fYnJfcHJvYik6IERpdHRvLgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCwgZ2V0X2NvbmRpdGlvbl9mb3JfbG9vcCk6IERpdHRvLgoJKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24sIGdldF9jb25kaXRpb24pOiBBbGxvdyB0byByZXR1cm4gY29tcGFyaXNvbnMKCW9mIGNjIG1vZGUgcmVnaXN0ZXJzLgoJKiBsb29wLXVuc3dpdGNoLmMgKG1heV91bnN3aXRjaF9vbl9wLCB1bnN3aXRjaF9zaW5nbGVfbG9vcCk6IEFsbG93CgljYyBtb2RlIHJlZ2lzdGVycyBjb21wYXJpc29uIGluIGNvbmRpdGlvbi4KCjIwMDMtMDktMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb3ZlcmFnZS5jIChjcmVhdGVfY292ZXJhZ2UpOiBEbyBub3QgY2FsbCBwdXNobGV2ZWwvcG9wbGV2ZWwuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX2RvX25vdGhpbmdfaWlpX3JldHVybl9udWxsX3RyZWUpOiBOZXcKCWZ1bmN0aW9uLgoJKiBsYW5naG9va3MuYyAobGhkX2RvX25vdGhpbmdfaWlpX3JldHVybl9udWxsX3RyZWUpOiBEZWZpbmUgaXQuCgoyMDAzLTA5LTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogQ29udmVydAoJKG5lIChhbmQgKGxzaGlmdHJ0ICh4b3IgWCBDU1QpIFkpIDEpIDApIGludG8KCShlcSAoYW5kIChsc2hpZnRydCBYIFkpIDEpIDApLgoKMjAwMy0wOS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFsaWFzLmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogY3BwaGFzaC5oOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCjIwMDMtMDktMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYy1wcG91dHB1dC5jIChjYl9saW5lX2NoYW5nZSk6IFJldmVydCAyMDAzLTA4LTA0J3MgY2hhbmdlLgoJKiBjLWxleC5jIChjYl9saW5lX2NoYW5nZSk6IFNraXAgbGluZSBjaGFuZ2luZyB3aGVuZXZlcgoJYy1wcG91dHB1dC5jIHdvdWxkLgoKMjAwMy0wOS0xNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogcmEuYzogQ29udmVydCB0byBJU08gQzkwIHByb3RvdHlwZXMuCgkqIHJhLWJ1aWxkLmM6IExpa2V3aXNlLgoJKiByYS1jb2xvcml6ZS5jOiBMaWtld2lzZS4KCSogcmEtZGVidWcuYzogTGlrZXdpc2UuCgkqIHJhLXJld3JpdGUuYzogTGlrZXdpc2UuCgoyMDAzLTA5LTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoJS5kdmkpOiBSZW1vdmUgZXhjZXNzICQoZG9jZGlyKS4KCjIwMDMtMDktMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKFNUQUNLX0JZVEVTKTogTW92ZSBkZWZpbml0aW9uIHRvIGhlYWQgb2YgZmlsZS4KCShhc3NpZ25fcGFybXMpOiBEb24ndCBwYXNzIGN1cnJlbnRfZnVuY3Rpb25fcHJldGVuZF9hcmdzX3NpemUKCWRpcmVjdGx5IHRvIFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MuICBGb3IgcGFydGlhbCByZWdpc3RlciBhcmd1bWVudHMsCglyb3VuZCBjdXJyZW50X2Z1bmN0aW9uX3ByZXRlbmRfYXJnc19zaXplIHVwIHRvIFNUQUNLX0JZVEVTLiAgU2tpcCBhbnkKCWV4Y2VzcyBiZWZvcmUgbGF5aW5nIG91dCB0aGUgYXJndW1lbnQuCgoyMDAzLTA5LTE0ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBvYmpjL29iamMtYWN0LmM6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoJKiBvYmpjL29iamMtYWN0Lmg6IExpa2V3aXNlLgoKMjAwMy0wOS0xNCAgT2xhZiBIZXJpbmcgIDxvbGhAc3VzZS5kZT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IEZpeCB0eXBvOiBSZW1vdmUgZXh0cmEgJyknLgoKMjAwMy0wOS0xMyAgQW5kcmV3IFBpbnNraSA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMTIwMjEKCSogY29uZmlnL202OGsvbmV0YnNkLWVsZi5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogUmVtb3ZlIHRoZSBhc3NlcnRzCglhcyB0aGV5IGFscmVhZHkgYXJlIGRvbmUgaW4gY29uZmlnL202OGsvbTY4ay5oLgoJKiBjb25maWcvbTY4ay9uZXRic2QuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IExpa2V3aXNlCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChHRU5fTE9DQUxfTEFCRUxfRk9SX1NZTUJPTCk6IFJlbW92ZS4KCShtYWNob3BpY19vdXRwdXRfc3R1Yik6IE9ubHkgZ2VuZXJhdGUgcGljIGJhc2Ugc3ltYm9scyB3aGVuIHVzaW5nIHBpYwoJYW5kIGdlbmVyYXRlIHRoZW0gaW4gdGhlIGZvcm0gTDAwMDAwMDAwJHNwYi4KCjIwMDMtMDktMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9hc3NlbWJsZV9wZW5kaW5nX2Z1bmN0aW9ucyk6IEV4cG9ydC4KCShjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBSZXZlcnQgVFJFRV9BU01fV1JJVFRFTiBjaGVjay4KCSogY2dyYXBoLmg6IFVwZGF0ZS4KCjIwMDMtMDktMTIgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IEZpeCB0eXBvcyBpbiBwcmV2aW91cy4KCjIwMDMtMDktMTIgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIHByZXR0eS1wcmludC5jIChwcF9jb25zdHJ1Y3QpOiBVc2UgeGNhbGxvYyBpbnN0ZWFkIG9mIHhtYWxsb2MKCXdoZW4gYWxsb2NhdGluZyBwcC0+YnVmZmVyLgoKMjAwMy0wOS0xMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX3NlbGVjdF9ydHhfc2VjdGlvbik6IFVzZQoJY29uc3RfZGF0YV9zZWN0aW9uIGZvciB0aGluZ3MgdGhhdCBtaWdodCByZXF1aXJlIHJlbG9jYXRpb24uCgoyMDAzLTA5LTEyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgYm9vdHN0cmFwLzEyMjY0CgkqIHRyZWUtaW5saW5lLmMgKGlubGluZV9mb3JiaWRkZW5fcF8xKTogQ2FzdCB0aGUgM3JkIGFyZyB0byB0cmVlLgoKMjAwMy0wOS0xMiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvZWxmLmggKEFTTV9TUEVDKTogUmVtb3ZlIG5vLWRlbnNpdHkgb3B0aW9uLiAgUmVmb3JtYXQuCgkqIGNvbmZpZy94dGVuc2EvbGludXguaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIC1tYmlnLWVuZGlhbiwKCS1tbGl0dGxlLWVuZGlhbiwgLW1bbm8tXWRlbnNpdHksIC1tW25vLV1hYnMsIC1tW25vLV1hZGR4LCAtbVtuby1dbWFjMTYsCgktbVtuby1dbXVsMTYsIC1tW25vLV1tdWwzMiwgLW1bbm8tXW5zYSwgLW1bbm8tXW1pbm1heCwgLW1bbm8tXXNleHQsCgktbVtuby1dYm9vbGVhbnMsIC1taGFyZC1mbG9hdCwgLW1zb2Z0LWZsb2F0LCAtbVtuby1daGFyZC1mbG9hdC1kaXYsCgktbVtuby1daGFyZC1mbG9hdC1yZWNpcCwgLW1bbm8tXWhhcmQtZmxvYXQtc3FydCwgYW5kCgktbVtuby1daGFyZC1mbG9hdC1yc3FydCBvcHRpb25zLiAgRGVsZXRlIGNvcnJlc3BvbmRpbmcgTUFTS18qIG1hY3JvcwoJYW5kIHJlZGVmaW5lIGNvcnJlc3BvbmRpbmcgVEFSR0VUXyogbWFjcm9zIHdpdGggY29uc3RhbnRzIGZyb20gdGhlCgl4dGVuc2EtY29uZmlnLmggaGVhZGVyLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5LCBYdGVuc2EgT3B0aW9ucyk6IFJlbW92ZSBkb2N1bWVudGlvbgoJZm9yIHRoZSBvcHRpb25zIGxpc3RlZCBhYm92ZS4KCjIwMDMtMDktMTIgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oOiAgVXNlIEM5MCBwcm90b3R5cGVzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1jLmM6ICBEaXR0by4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogIERpdHRvLgoJKiBjb25maWcvcnM2MDAwLyBzeXN2NC5oOiAgRGl0dG8uCgoyMDAzLTA5LTEyICBDaHJpcyBMYXR0bmVyIDxzYWJyZUBub25kb3Qub3JnPgoKCSogbG9vcC5jOiBNb3ZlIGNvbW1lbnRzIGRlc2NyaWJpbmcgQklWJ3MgYW5kIEdJVidzIHRvIHRvcCBvZiBmaWxlCgoyMDAzLTA5LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vODk2NwoJKiBhbGlhcy5jICh3cml0ZV9kZXBlbmRlbmNlX3ApOiBNb2RpZnkgdG8gdGFrZSBhbiBhZGRpdGlvbmFsIGNvbnN0cAoJYXJndW1lbnQgdGhhdCBjb250cm9scyB3aGV0aGVyIHRoZSBVTkNIQU5HSU5HX1JUWF9QIGZsYWdzIGFyZSB1c2VkLgoJKGFudGlfZGVwZW5kZW5jZSwgb3V0cHV0X2RlcGVuZGVuY2UpOiBBZGp1c3Qgd3JpdGVfZGVwZW5kZW5jZV9wCgljYWxsZXJzIHRvIHBhc3MgdGhpcyBhZGRpdGlvbmFsIGFyZ3VtZW50LCB0byByZXR1cm4gdGhlIHNhbWUgcmVzdWx0LgoJKHVuY2hhbmdpbmdfYW50aV9kZXBlbmRlbmNlKTogTmV3IHZhcmlhbnQgb2YgYW50aV9kZXBlbmRlbmNlIHRoYXQKCWlnbm9yZXMgdGhlIFVOQ0hBTkdJTkdfUlRYX1AgcHJvcGVydHkgb24gbWVtb3J5IHJlZmVyZW5jZXMuCgkqIHJ0bC5oICh1bmNoYW5pbmdfYW50aV9kZXBlbmRlbmNlKTogUHJvdG90eXBlIGhlcmUuCgkqIGZsb3cuYyAoaW5pdF9wcm9wYWdhdGVfYmxvY2spOiBQbGFjZSBmYWtlIGNvbnN0YW50IG1lbSB3cml0ZXMgb24KCXRoZSBtZW1fc2V0X2xpc3Qgc28gdGhhdCBkZWFkIHdyaXRlcyB0byBjb25zdCB2YXJpYWJsZXMgYXJlIGRlbGV0ZWQuCgkoaW5zbl9kZWFkX3ApOiBDaGFuZ2UgYW50aV9kZXBlbmRlbmNlIHRvIHVuY2hhbmdpbmdfYW50aV9kZXBlbmRlbmNlLgoJKG1hcmtfdXNlZF9yZWdzKTogTGlrZXdpc2UuCgoyMDAzLTA5LTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUtcHJvdG9zLmggKG1jb3JlX3IxNV9vcGVyYW5kX3ApOiBEZWNsYXJlLgoJKG1jb3JlX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBEZWNsYXJlLgoJKG1jb3JlX291dHB1dF9pbmxpbmVfY29uc3RfZm9yY2VkKTogUmVtb3ZlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQgKG1vdnNpKTogUmVtb3ZlIHRoZSBjb2RlIHRoYXQgZm9yY2VkCglub24taW5saW5lYWJsZSBjb25zdGFudHMgaW50byBhIHJlZ2lzdGVyIGlmIHRoZSB0YXJnZXQgd2FzIHIxNQoJb3IgdGhlIHN0YWNrIHBvaW50ZXIuICBSZW1vdmUgY29uc3RhbnQgcmVzdHJpY3Rpb25zIGZyb20gdGhlIG1haW4KCWRlZmluZV9pbnNuLiAgUmVtb3ZlIHIgPC0gSSwgciA8LSBNIGFuZCByIDwtIE4gYWx0ZXJuYXRpdmVzIGluIGZhdm9yCglvZiBhbiByIDwtIFAgYWx0ZXJuYXRpdmUuICBSZW1vdmUgZmFsbGJhY2sgZGVmaW5lX2luc24gZm9yIHJlbG9hZC4KCShtb3ZoaSwgbW92cWkpOiBVc2UgZ2VuX2xvd3BhcnQgcmF0aGVyIHRoYW4gZ2VuX1NVQlJFRy4gIFJlbW92ZSByZWxvYWQKCWRlZmluZV9pbnNuLiAgVXNlIG1jb3JlX291dHB1dF9tb3ZlIGluIHRoZSByZW1haW5pbmcgZGVmaW5lX2luc24uCglBZGp1c3QgY29uZGl0aW9uIGFuZCBjb25zdHJhaW50cyBpbiB0aGUgd2F5IGFzIGZvciBtb3ZzaS4KCShtb3ZkaSk6IEFsd2F5cyBzcGxpdCB1bmFjY2VwdGFibGUgY29uc3RhbnRzIGludG8gdHdvLiAgVXNlCglzaW1wbGlmeV9nZW5fc3VicmVnIGluc3RlYWQgb2Ygb3BlcmFuZF9zdWJ3b3JkeyxfZm9yY2V9LgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAobWNvcmVfb3V0cHV0X2lubGluZV9jb25zdF9mb3JjZWQpOiBSZW1vdmUuCgkobWNvcmVfb3V0cHV0X21vdmUpOiBTdXBwb3J0IEhJbW9kZSBhbmQgUUltb2RlIG1vdmVzIGFzIHdlbGwuCgkobWNvcmVfbTE1X29wZXJhbmRfcCk6IE5ldyBmdW5jdGlvbi4KCShtY29yZV9yZWxvYWRfY2xhc3MpOiBVc2UgaXQgdG8gZGV0ZWN0IGNhc2VzIHdoZXJlIExSV19SRUdTIGFyZSBiZXR0ZXIuCgkobWNvcmVfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21jb3JlL21jb3JlLmggKFNFQ09OREFSWV9SRUxPQURfQ0xBU1MpOiBSZWRlZmluZSBpbgoJdGVybXMgb2YgbWNvcmVfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcy4KCjIwMDMtMDktMTEgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogYy1sZXguYyAoZmVfZmlsZV9jaGFuZ2UpOiBEb24ndCB0cmFuc2Zvcm0gdG9fbGluZSB3aXRoIFNPVVJDRV9MSU5FLgoKMjAwMy0wOS0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2xvZ2FyaXRobSk6IGlmIE4gY2FuJ3QgYmUgdHJ1bmNhdGVkIHRvCglNT0RFIGV4YWN0bHksIHRoZW4gb25seSBjb252ZXJ0IGxvZ04oTikgLT4gMS4wIGlmCglmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgc2V0LgoKCSogYnVpbHRpbnMuYyAoYnVpbHRpbl9kY29uc3RzX2luaXQsIGRjb25zdHBpLCBkY29uc3RlLAoJaW5pdF9idWlsdGluX2Rjb25zdHMpOiBEZWxldGUuCgkqIGVtaXQtcnRsLmMgKGRjb25zdHBpLCBkY29uc3RlKTogRGVmaW5lLgoJKGluaXRfZW1pdF9vbmNlKTogSW5pdGlhbGl6ZSBkY29uc3RwaSAmIGRjb25zdGUuCgkqIHJlYWwuaCAoZGNvbnN0cGksIGRjb25zdGUpOiBEZWNsYXJlLgoKMjAwMy0wOS0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgZm9ydHJhbi8xMTUyMgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2lubGluZWRfc3Vicm91dGluZV9kaWUpOiBFbWl0IGFic3RyYWN0IGZ1bmN0aW9uCglmb3IgdWx0aW1hdGUgb3JpZ2luIGV2ZW4gaWYgYmxvY2sgaXMgYWJzdHJhY3QuCgoyMDAzLTA5LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBNb3ZlIHNldmVyYWwgTk9UIGFuZCBORUcKCW9wdGltaXphdGlvbnMgZnJvbSBoZXJlLi4uCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiB0byBoZXJlLiAgUmVjdXJzaXZlbHkKCXNpbXBsaWZ5IGV4cHJlc3Npb25zIHVzaW5nIHNpbXBsaWZ5X2dlbl8qYXJ5IGluc3RlYWQgb2YgZ2VuX3J0eF8qLgoKMjAwMy0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogQWRkIG5lc3RlZCBhcmcuCglUd2VlayB0ZXN0cyBmb3IgZnVuY3Rpb24gYWxyZWFkeSBnZW5lcmF0ZWQuCgkoY2dyYXBoX2V4cGFuZF9mdW5jdGlvbik6IERvbid0IGRvdWJsZSBhbm5vdW5jZSBpbiAhdW5pdC1hdC1hLXRpbWUuCgkqIGNncmFwaC5oIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBVcGRhdGUgZm9yIGV4dHJhIGFyZy4KCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoKMjAwMy0wOS0xMCAgSm9lIEJ1Y2sgIDxqYnVja0B3ZWxzaC1idWNrLm9yZz4KCgkqIGMtZGVjbC5jIChwb3BsZXZlbCk6IEVsaW1pbmF0ZSB1c2Ugb2YgfD0gaW4gZnVuY3Rpb25fYm9keSBhc3NpZ25tZW50LgoKMjAwMy0wOS0xMCAgSmVycnkgUXVpbm4gIDxqbHF1aW5uQG9wdG9ubGluZS5uZXQ+CgoJKiByZWFsLmM6IFVwZGF0ZSBVUkwgdG8gVkFYIGZsb2F0aW5nIHBvaW50IGRvY3MuCgkoZGVjb2RlX3ZheF9kKTogRXh0cmFjdCA4IGV4cG9uZW50IGJpdHMgaW5zdGVhZCBvZiA3LgoKMjAwMy0wOS0xMCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbWJpbmUuYyAoZm9yY2VfdG9fbW9kZSk6IFNldCBmdWxsZXJfbWFzayBiYXNlZCBvbmx5IG9uIG1hc2ssCglub3Qgb3BfbW9kZS4KCjIwMDMtMDktMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGMtb2JqYy1jb21tb24uYyAoY19jYW5ub3RfaW5saW5lX3RyZWVfZm4pOiBXYXJuCglvbiB3aHkgZnVuY3Rpb24gaXMgbm90IGlubGluYWJsZTsgZG8gbm90IGNoZWNrCgl0aGUgYm9keS4KCShpbmxpbmVfZm9yYmlkZGVuX3ApOiBNb3ZlIHRvLi4uCgkqIHRyZWUtaW5saW5lLmMgKGlubGluZV9mb3JiaWRkZW5fcF8xKTogLi4uIGhlcmU7IEFkZCB3YXJuaW5nczsKCWRlYWwgd2l0aCBhbGxvY2EsIGxvbmdqbXAuCgkoaW5saW5lX2ZvcmJpZGRlbl9wKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShmaW5kX2FsbG9jYV9jYWxsXzEsIGZpbmRfYWxsb2NhX2NhbGwsIGZpbmRfYnVpbHRpbl9sb25nam1wX2NhbGxfMSwKCWZpbmRfYnVpbHRpbl9sb25nam1wX2NhbGwpOiBLaWxsLgoKMjAwMy0wOS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNncmFwaC5oIChzdHJ1Y3QgY2dyYXBoX25vZGUpOiBSZW5hbWUgbG93ZXJlZCB0byBhbmFseXplZC4KCSogY2dyYXBodW5pdC5jOiBVcGRhdGUgdG8gbWF0Y2guCgkocmVjb3JkX2NhbGxfMSk6IFJlYXJyYW5nZS4gIENhbGwgbGFuZyBob29rIGZvciBsYW5ndWFnZSBub2Rlcy4KCShjZ3JhcGhfYW5hbHl6ZV9mdW5jdGlvbik6IERvbid0IGNhbGwgbG93ZXJfZnVuY3Rpb24uCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rc19mb3JfY2FsbGdyYXBoKTogUmVwbGFjZQoJbG93ZXJfZnVuY3Rpb24gd2l0aCBhbmFseXplX2V4cHIuCgkqIGxhbmdob29rcy1kZWYuaDogVXBkYXRlIHRvIG1hdGNoLgoJKiBsYW5naG9va3MuYyAobGhkX2NhbGxncmFwaF9hbmFseXplX2V4cHIpOiBOZXcuCgoyMDAzLTA5LTEwICBNYXJ0aW4gSHVzZW1hbm4gIDxtYXJ0aW5AZHVza3dhcmUuZGU+CgoJUFIgdGFyZ2V0LzExOTY1CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY192OHBsdXNfc2hpZnQpOiBQcm90ZWN0IGFnYWluc3QKCWNvbnN0YW50cyBncmVhdGVyIHRoYW4gNjMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoYXNobHNpMywgYXNocnNpMywgbHNocnNpMyk6IFByb3RlY3QKCWFnYWluc3QgY29uc3RhbnRzIGdyZWF0ZXIgdGhhbiAzMS4KCSgqYXNobGRpM19zcDY0LCAqYXNocmRpM19zcDY0LCAqbHNocmRpM19zcDY0KTogUHJvdGVjdCBhZ2FpbnN0Cgljb25zdGFudHMgZ3JlYXRlciB0aGFuIDYzLgoKMjAwMy0wOS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogUmVtb3ZlIHVudXNlZCBhcmd1bWVudC4KCSogY2dyYXBoLmggKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IFVwZGF0ZS4KCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IFVwZGF0ZS4KCjIwMDMtMDktMDkgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmggKExJTktfU1BFQyk6IFBhc3MgLW5vZml4cHJlYmluZGluZyB0byBsaW5rZXIuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgbmV3IERhcndpbiBsaW5rZXIgb3B0aW9uIC1ub2ZpeHByZWJpbmRpbmcuCgoyMDAzLTA5LTA5ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hhbmdlIHVzYWdlIG9mICdoZWFkJyB0byAnc2VkIDFxJy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4Y2VwdC5jOiBJbmNsdWRlIGNncmFwaC5oLgoJKG91dHB1dF9mdW5jdGlvbl9leGNlcHRpb25fdGFibGUpOiBJbnZva2UKCWNncmFwaF92YXJwb29sX21hcmtfbmVlZGVkX25vZGUuCgkqIE1ha2VmaWxlLmluIChleGNlcHQubyk6IFVwZGF0ZS4KCjIwMDMtMDktMDcgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogTWFrZWZpbGUuaW46IERlZmluZSBSRU1BS0VGTEFHUyBmb3IgTEFOR1VBR0VTICYgQk9PVF9DRkxBR1MKCWFuZCB1c2UgaXQgdGhyb3VnaG91dC4KCjIwMDMtMDktMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKHJlYWxfZGNvbnN0cCwgZm9sZF9idWlsdGluX2xvZ2FyaXRobSwKCWZvbGRfYnVpbHRpbl9leHBvbmVudCk6IE5ldywgc3BsaXQgb3V0IGZyb20gZm9sZF9idWlsdGluLiAgQWxzbwoJZ2VuZXJhbGl6ZSB0byBhZGQgbG9nMiwgbG9nMTAsIGV4cDIgYW5kIGV4cDEwL3BvdzEwIGVxdWl2YWxlbnRzLgoJKiBlbWl0LXJ0bC5jIChkY29uc3QzLCBkY29uc3QxMCwgZGNvbnN0dGhpcmQpOiBOZXcuCgkoaW5pdF9lbWl0X29uY2UpOiBJbml0aWFsaXplIG5ldyBkY29uc3RzLCB1c2UgQVJSQVlfU0laRSBpbiBsaWV1CglvZiBoYXJkY29kZWQgYXJyYXkgc2l6ZS4KCSogZm9sZC1jb25zdC5jIChmb2xkKTogQWRkIGNhc2VzIGZvciBleHAyLCBleHAxMCBhbmQgcG93MTAuCgkodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBMaWtld2lzZS4KCSogcmVhbC5oIChkY29uc3QzLCBkY29uc3QxMCwgZGNvbnN0dGhpcmQpOiBOZXcuCgoyMDAzLTA5LTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IEZpeCBoYW5kbGluZyBvZiBleHRlcm4KCWlubGluZSBmdW5jdGlvbnMuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBGaXggY3Jhc2ggd2hlbiBkZWFsaW5nIHdpdGggbG9zdAoJREVDTF9TQVZFRF9UUkVFLgoKMjAwMy0wOS0wOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fY2Ficyk6IFByb3RlY3QgdGhlIGNvbXBsZXggYXJndW1lbnQKCWFnYWluc3QgbXVsdGlwbGUgZXZhbHVhdGlvbiB3aGVuIG9wdGltaXppbmcgY2FicyogaW50byBzcXJ0Ki4KCjIwMDMtMDktMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHZhcmFzbS5jIChub3RpY2VfZ2xvYmFsX3N5bWJvbCk6ICBQcm9wZXJseSBkZWFsIHdpdGggd2VhayBzeW1ib2xzLgoKMjAwMy0wOS0wOCAgS2VsbGV5IENvb2sgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZXZlcnQgeWVzdGVyZGF5J3MgY2hhbmdlLgoKMjAwMy0wOS0wOCAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoJICAgIFBldGVyIEJhcmFkYSA8cGV0ZXJAYmFyYWRhcy5vcmc+CgoJKiBjb25maWcvbTY4ay9jb2ZmLmggKFJFR0lTVEVSX05BTUVTKTogQWRkIGZha2UgcmVnaXN0ZXIgYGFyZ3B0cicKCSogY29uZmlnL202OGsvaHAzMjAuaCAoUkVHSVNURVJfTkFNRVMpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbGludXguaCAoUkVHSVNURVJfTkFNRVMpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4a2VsZi5oIChSRUdJU1RFUl9OQU1FUyk6IExpa2V3aXNlLgoJKiBnY2MvY29uZmlnL202OGsvc2dzLmggKFJFR0lTVEVSX05BTUVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmggKG02OGtfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfZnJhbWUpOiBOZXcgc3RydWN0LCBzaW11bGFyIHRvIGl4ODYgYmFjay1lbmQuCgkobTY4a19jb21wdXRlX2ZyYW1lX2xheW91dCk6IE5ldyBmdW5jdGlvbi4KCShtNjhrX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTmV3IGZ1bmN0aW9uLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogQ29sZEZpcmUtc3BlY2lmaWMgbW92ZW0gaGFuZGxpbmcuCgkobTY4a19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChGSVJTVF9QU0VVRE9fUkVHSVNURVIpOiBNYWtlIHJvb20gZm9yIGFyZ3B0ciByZWcuCgkoQVJHX1BPSU5URVJfUkVHTlVNKTogQWRkIG5ldyBkZWZpbml0aW9uLgoJKElOSVRJQUxfRlJBTUVfUE9JTlRFUl9PRkZTRVQpOiBSZW1vdmUgbWFjcm8uCgkoRUxJTUlOQUJMRV9SRUdTKTogRGVmaW5lIG5ldyBtYWNybywgbGlrZSBpbiBpeDg2IGJhY2stZW5kLgoJKENBTl9FTElNSU5BVEUpOiBMaWtld2lzZS4KCShJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IExpa2V3aXNlLgoKMjAwMy0wOS0wOCAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFNpbXBsaWZ5CglieSByZW1vdmluZyByZWR1bmRhbnQgdmFyaWFibGUgY2ZhX3N0b3JlX29mZnNldC4KCjIwMDMtMDktMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9yZWdpc3Rlcl9idWlsdGluX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LU19SRUdJU1RFUl9CVUlMVElOX1RZUEUpOiBOZXcgbWFjcm8uCgkoTEFOR19IT09LU19GT1JfVFlQRVNfSU5JVElBTElaRVIpOiBVcGRhdGUuCgkqIGxhbmdob29rcy5oIChsYW5nX2hvb2tzX2Zvcl90eXBlcyk6IEFkZCByZWdpc3Rlcl9idWlsdGluX3R5cGUuCgkqIGxhbmdob29rcy5jIChsaGRfcmVnaXN0ZXJfYnVpbHRpbl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiBjLWNvbW1vbi5oIChjX3JlZ2lzdGVyX2J1aWx0aW5fdHlwZSk6IERlY2xhcmUuCgkqIGMtY29tbW9uLmMgKGNfcmVnaXN0ZXJfYnVpbHRpbl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19SRUdJU1RFUl9CVUlMVElOX1RZUEUpOiBEZWZpbmUgdG8KCWNfcmVnaXN0ZXJfYnVpbHRpbl90eXBlLgoJKiBjb25maWcvaWE2NC9ocHV4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBSZW1vdmUgX19mcHJlZywKCV9fZmxvYXQ4MCwgYW5kIF9fZmxvYXQxMjggbWFjcm9zLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfaW5pdF9idWlsdGlucyk6IENyZWF0ZSBfX2ZwcmVnLAoJX19mbG9hdDgwLCBhbmQgX19mbG9hdDEyOCB0eXBlcy4KCjIwMDMtMDktMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmCgkoQlRfRk5fQ09NUExFWF9MT05HRE9VQkxFX0NPTVBMRVhfTE9OR0RPVUJMRV9DT01QTEVYX0xPTkdET1VCTEUsCglCVF9GTl9DT01QTEVYX0RPVUJMRV9DT01QTEVYX0RPVUJMRV9DT01QTEVYX0RPVUJMRSwKCUJUX0ZOX0NPTVBMRVhfRkxPQVRfQ09NUExFWF9GTE9BVF9DT01QTEVYX0ZMT0FUKTogTmV3LgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0NBQ09TLCBCVUlMVF9JTl9DQUNPU0YsIEJVSUxUX0lOX0NBQ09TSCwKCUJVSUxUX0lOX0NBQ09TSEYsIEJVSUxUX0lOX0NBQ09TSEwsIEJVSUxUX0lOX0NBQ09TTCwKCUJVSUxUX0lOX0NBUkcsIEJVSUxUX0lOX0NBUkdGLCBCVUlMVF9JTl9DQVJHTCwgQlVJTFRfSU5fQ0FTSU4sCglCVUlMVF9JTl9DQVNJTkYsIEJVSUxUX0lOX0NBU0lOSCwgQlVJTFRfSU5fQ0FTSU5IRiwKCUJVSUxUX0lOX0NBU0lOSEwsIEJVSUxUX0lOX0NBU0lOTCwgQlVJTFRfSU5fQ0FUQU4sCglCVUlMVF9JTl9DQVRBTkYsIEJVSUxUX0lOX0NBVEFOSCwgQlVJTFRfSU5fQ0FUQU5IRiwKCUJVSUxUX0lOX0NBVEFOSEwsIEJVSUxUX0lOX0NBVEFOTCwgQlVJTFRfSU5fQ0NPUywgQlVJTFRfSU5fQ0NPU0YsCglCVUlMVF9JTl9DQ09TSCwgQlVJTFRfSU5fQ0NPU0hGLCBCVUlMVF9JTl9DQ09TSEwsIEJVSUxUX0lOX0NDT1NMLAoJQlVJTFRfSU5fQ0VYUCwgQlVJTFRfSU5fQ0VYUEYsIEJVSUxUX0lOX0NFWFBMLCBCVUlMVF9JTl9DUE9XLAoJQlVJTFRfSU5fQ1BPV0YsIEJVSUxUX0lOX0NQT1dMLCBCVUlMVF9JTl9DUFJPSiwgQlVJTFRfSU5fQ1BST0pGLAoJQlVJTFRfSU5fQ1BST0pMLCBCVUlMVF9JTl9DU0lOLCBCVUlMVF9JTl9DU0lORiwgQlVJTFRfSU5fQ1NJTkgsCglCVUlMVF9JTl9DU0lOSEYsIEJVSUxUX0lOX0NTSU5ITCwgQlVJTFRfSU5fQ1NJTkwsIEJVSUxUX0lOX0NTUVJULAoJQlVJTFRfSU5fQ1NRUlRGLCBCVUlMVF9JTl9DU1FSVEwsIEJVSUxUX0lOX0NUQU4sIEJVSUxUX0lOX0NUQU5GLAoJQlVJTFRfSU5fQ1RBTkgsIEJVSUxUX0lOX0NUQU5IRiwgQlVJTFRfSU5fQ1RBTkhMLCBCVUlMVF9JTl9DVEFOTCk6CglOZXcuCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgbmV3IGJ1aWx0aW5zLgoKMjAwMy0wOS0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNncmFwaF92YXJwb29sX2ZpbmFsaXplX2RlY2wpOiBTYW5pdHkgY2hlY2sgZHVwbGljYXRlZAoJZmluYWxpemF0aW9uLgoJKiBjZ3JhcGh1bml0LmMgKGRlY2lkZV9pc19mbmN0aW9uX25lZWRlZCk6IEF2b2lkIHNwZWNpYWwgY2FzZSBvZiBuZXN0ZWQKCWZ1bmN0aW9ucywgY2hlY2sgZm9yIENPTURBVC4KCShjZ3JhcGhfYXNzZW1ibGVfcGVuZGluZ19mdW5jdGlvbnMpOiBCcmVhayBvdXQgZnJvbS4uLgoJKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IC4uLiBoZXJlOyBhbGxvdyByZWRlZmluaWcgb2YgZXh0ZXJuIGlubGluZQoJZnVuY3Rpb25zLgoJKHJlY29yZF9jYWxsXzEpOiBSZWNvcmQgZnVuY3Rpb24gcmVmZXJlbmNlcyBvbmx5IGluIG5vbi11bml0LWF0LWEtdGltZQoJbW9kZS4KCShjZ3JhcGhfYW5hbHl6ZV9mdW5jdGlvbik6IFJlc2V0IGN1cnJlbnRfZnVuY3Rpb25fZGVjbC4KCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCk6ICBBc3NlbWJsZSBwZW5kaW5nIGZ1bmN0aW9ucy4KCjIwMDMtMDktMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBta2xpYmdjYy5pbiAobGliY2MuYSk6IERlcGVuZCBvbiBzdG1wLWRpcnMuCgkobGliZ292LmEpOiBMaWtld2lzZS4KCShsaWJnY2NfZWguYSk6IExpa2V3aXNlLgoKMjAwMy0wOS0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG9wZXJhbmRfZXF1YWxfcCk6IENsYXJpZnkgZG9jdW1lbnRhdGlvbi4KCjIwMDMtMDktMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keV8xKTogUHVzaCBhbmQgcG9wIGZ1bmN0aW9uIGNvbnRleHQgaGVyZS4KCSogdHJlZS1vcHRpbWl6ZS5jICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiAuLi4gbm90IGhlcmUuICBUYWtlCgluZXN0ZWQgYXJndW1lbnQgaW5zdGVhZCBvZiBjb21wdXRpbmcgbmVzdGluZyBvdXJzZWx2ZXMuCgoyMDAzLTA5LTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChyZXN0X29mX2hhbmRsZV9zdGFja19yZWdzKTogQ2FsbCBzcGxpdF9hbGxfaW5zbnMgYmVmb3JlCglyZWdzdGFjayBpZiBvcHRpbWl6aW5nIGJ1dCBub3Qgc2NoZWR1bGluZyBhZnRlciByZWxvYWQuCgoyMDAzLTA5LTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IE5ldyB0eXBlLgoJKFRBUkdFVF9IQVZFX1RMUywgVEFSR0VUX0NBTk5PVF9GT1JDRV9DT05TVF9NRU0pOiBEZWZpbmUuCgkoc3BhcmNfb3ZlcnJpZGVfb3B0aW9ucyk6IEluaXRpYWxpemUgaW5pdF9tYWNoaW5lX3N0YXR1cy4KCSh0bHNfc3ltYm9saWNfb3BlcmFuZCwgdGdkX3N5bWJvbGljX29wZXJhbmQsIHRsZF9zeW1ib2xpY19vcGVyYW5kLAoJdGllX3N5bWJvbGljX29wZXJhbmQsIHRsZV9zeW1ib2xpY19vcGVyYW5kKTogTmV3IGZ1bmN0aW9ucy4KCShzeW1ib2xpY19vcGVyYW5kKTogRGlzYWxsb3cgdGxzX3N5bWJvbGljX29wZXJhbmQuCgkoc3ltYm9saWNfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KCSh0bHNfY2FsbF9kZWxheSwgc3BhcmNfY2Fubm90X2ZvcmNlX2NvbnN0X21lbSwgbGVnaXRpbWF0ZV9jb25zdGFudF9wLAoJY29uc3RhbnRfYWRkcmVzc19wLCBsZWdpdGltYXRlX3BpY19vcGVyYW5kX3AsIGxlZ2l0aW1hdGVfYWRkcmVzc19wKToKCU5ldyBmdW5jdGlvbnMuCgkoc3BhcmNfdGxzX3N5bWJvbCk6IE5ldyB2YXJpYWJsZS4KCShzcGFyY190bHNfZ2V0X2FkZHIsIHNwYXJjX3Rsc19nb3QsIGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MsCglsZWdpdGltaXplX2FkZHJlc3MpOiBOZXcgZnVuY3Rpb25zLgoJKHByaW50X29wZXJhbmQpOiBIYW5kbGUgJSYuCgkoc3BhcmNfaW5pdF9tYWNoaW5lX3N0YXR1cywgZ2V0X3NvbWVfbG9jYWxfZHluYW1pY19uYW1lLAoJZ2V0X3NvbWVfbG9jYWxfZHluYW1pY19uYW1lXzEpOiBOZXcgZnVuY3Rpb25zLgoJKHNwYXJjX291dHB1dF9kd2FyZl9kdHByZWwpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChDT05TVEFOVF9BRERSRVNTX1ApOiBNb3ZlZCBpbnRvCgljb25zdGFudF9hZGRyZXNzX3AuCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QKTogTW92ZWQgaW50byBsZWdpdGltYXRlX3BpY19vcGVyYW5kX3AuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogTW92ZWQgaW50byBsZWdpdGltYXRlX2NvbnN0YW50X3AuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogTW92ZWQgaW50byBsZWdpdGltYXRlX2FkZHJlc3NfcC4KCShMRUdJVElNSVpFX0FERFJFU1MpOiBNb3ZlZCBpbnRvIGxlZ2l0aW1pemVfYWRkcmVzcy4KCShQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBBZGQgJyYnLgoJKFRBUkdFVF9UTFMsIFRBUkdFVF9TVU5fVExTLCBUQVJHRVRfR05VX1RMUyk6IERlZmluZS4KCShBU01fT1VUUFVUX0RXQVJGX0RUUFJFTCk6IERlZmluZS4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgdGdkX3N5bWJvbGljX29wZXJhbmQsIHRsZF9zeW1ib2xpY19vcGVyYW5kLAoJdGllX3N5bWJvbGljX29wZXJhbmQsIHRsZV9zeW1ib2xpY19vcGVyYW5kLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKFVOU1BFQ19UTFNHRCwgVU5TUEVDX1RMU0xETSwgVU5TUEVDX1RMU0xETywKCVVOU1BFQ19UTFNJRSwgVU5TUEVDX1RMU0xFLCBVTlNQRUNfVExTTERfQkFTRSk6IE5ldyBjb25zdGFudHMuCgkodGxzX2NhbGxfZGVsYXkpOiBOZXcgYXR0cmlidXRlLgoJKGluX2NhbGxfZGVsYXkpOiBVc2UgaXQuCgkobW92cWksIG1vdmhpLCBtb3ZzaSwgbW92ZGkpOiBDYWxsIGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MgaWYgbmVlZGVkLgoJKHRnZF9oaTIyLCB0Z2RfbG8xMCwgdGdkX2FkZDMyLCB0Z2RfYWRkNjQsIHRnZF9jYWxsMzIsIHRnZF9jYWxsNjQsCgl0bGRtX2hpMjIsIHRsZG1fbG8xMCwgdGxkbV9hZGQzMiwgdGxkbV9hZGQ2NCwgdGxkbV9jYWxsMzIsIHRsZG1fY2FsbDY0LAoJdGxkb19oaXgyMiwgdGxkb19sb3gxMCwgdGxkb19hZGQzMiwgdGxkb19hZGQ2NCwgdGllX2hpMjIsIHRpZV9sbzEwLAoJdGllX2xkMzIsIHRpZV9sZDY0LCB0aWVfYWRkMzIsIHRpZV9hZGQ2NCwgdGxlX2hpeDIyX3NwMzIsCgl0bGVfbG94MTBfc3AzMiwgdGxlX2hpeDIyX3NwNjQsIHRsZV9sb3gxMF9zcDY0KTogTmV3IGluc25zLgoJKHRsZG9fbGR1Yl9zcDMyLCB0bGRvX2xkdWIxX3NwMzIsIHRsZG9fbGR1YjJfc3AzMiwgdGxkb19sZHNiMV9zcDMyLAoJdGxkb19sZHNiMl9zcDMyLCB0bGRvX2xkdWJfc3A2NCwgdGxkb19sZHViMV9zcDY0LCB0bGRvX2xkdWIyX3NwNjQsCgl0bGRvX2xkdWIzX3NwNjQsIHRsZG9fbGRzYjFfc3A2NCwgdGxkb19sZHNiMl9zcDY0LCB0bGRvX2xkc2IzX3NwNjQsCgl0bGRvX2xkdWhfc3AzMiwgdGxkb19sZHVoMV9zcDMyLCB0bGRvX2xkc2gxX3NwMzIsIHRsZG9fbGR1aF9zcDY0LAoJdGxkb19sZHVoMV9zcDY0LCB0bGRvX2xkdWgyX3NwNjQsIHRsZG9fbGRzaDFfc3A2NCwgdGxkb19sZHNoMl9zcDY0LAoJdGxkb19sZHV3X3NwMzIsIHRsZG9fbGR1d19zcDY0LCB0bGRvX2xkdXcxX3NwNjQsIHRsZG9fbGRzdzFfc3A2NCwKCXRsZG9fbGR4X3NwNjQsIHRsZG9fc3RiX3NwMzIsIHRsZG9fc3RiX3NwNjQsIHRsZG9fc3RoX3NwMzIsCgl0bGRvX3N0aF9zcDY0LCB0bGRvX3N0d19zcDMyLCB0bGRvX3N0d19zcDY0LCB0bGRvX3N0eF9zcDY0KTogTmV3CglpbnNucy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLXByb3Rvcy5oIChsZWdpdGltYXRlX2NvbnN0YW50X3AsCgljb25zdGFudF9hZGRyZXNzX3AsIGxlZ2l0aW1hdGVfcGljX29wZXJhbmRfcCwgbGVnaXRpbWF0ZV9hZGRyZXNzX3AsCglsZWdpdGltaXplX3Rsc19hZGRyZXNzLCBsZWdpdGltaXplX2FkZHJlc3MsIHRsc19zeW1ib2xpY19vcGVyYW5kLAoJdGxzX2NhbGxfZGVsYXksIHNwYXJjX291dHB1dF9kd2FyZl9kdHByZWwpOiBOZXcgcHJvdG90eXBlcy4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKFRBUkdFVF9HTlVfVExTLCBUQVJHRVRfU1VOX1RMUyk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoVEFSR0VUX0dOVV9UTFMsIFRBUkdFVF9TVU5fVExTKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5pbiAoc3BhcmMqLSotKik6IEFkZCBUTFMgY2hlY2suCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDMtMDktMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzExNjg5CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobWVtb3J5X2FkZHJlc3NfbGVuZ3RoKTogRml4IGNvbXB1dGF0aW9uIHdoZW4KCXRoZSBiYXNlIGlzIGVzcCBvciBlYnAuCgoyMDAzLTA5LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMTg1MgoJKiB2YXJhc20uYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IENvcnJlY3QgbG9naWMgZm9yCglDT05TVFJVQ1RPUnMuCgoyMDAzLTA5LTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX29wZXJhbmRzKTogTmV3IGZ1bmN0aW9uIHRvIGV4cGFuZCBhbiBvcGVyYW5kIHBhaXIuCgkoZXhwYW5kX2V4cHIpOiBDYWxsIGV4cGFuZF9vcGVyYW5kcyB3aGVuZXZlciB3ZSBuZWVkIHRvIGV4cGFuZCBib3RoCglvcGVyYW5kcyBvZiBhIGJpbmFyeSBvcGVyYXRvci4KCShkb19zdG9yZV9mbGFnKTogTGlrZXdpc2UgZm9yIG9wZXJhbmRzIG9mIGNvbXBhcmlzb24gb3BlcmF0aW9ucy4KCjIwMDMtMDktMDcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IERvbid0IGNvbnZlcnQgLShBKkIpIGludG8KCSgtQSkqQiBpZiB3ZSBjYXJlIGFib3V0IHNpZ24tZGVwZW5kZW50IHJvdW5kaW5nLgoKMjAwMy0wOS0wNyAgR2FicmllbCBEb3MgUmVpcyAgPGdjY0BpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBjLXByZXR0eS1wcmludC5oIChwcF9jX2xlZnRfYnJhY2UpOiBEZWNsYXJlLgoJKHBwX2NfcmlnaHRfYnJhY2UpOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19sZWZ0X2JyYWNlKTogTm93IGEgZnVuY3Rpb24KCShwcF9jX3JpZ2h0X2JyYWNlKTogTGlrZXdpc2UuCgoyMDAzLTA5LTA3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9zaW1wbGlmeV9jb25kanVtcCk6IEZpeCBhZ2FpbiB0aGUgcHJlaXZvdXMgcGF0Y2guCgoyMDAzLTA5LTA3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGRpYWdub3N0aWMuYyAod2Fybl9kZXByZWNhdGVkX3VzZSk6IE1vdmUgdG8gdG9wbGV2LmMKCjIwMDMtMDktMDcgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogbGFuZ2hvb2tzLmMgKGxoZF9wcmludF9lcnJvcl9mdW5jdGlvbik6IE1vdmUgZnJvbSBkaWFnbm9zdGljLmMuCgkqIE1ha2VmaWxlLmluIChsYW5naG9va3Mubyk6IERlcGVuZCBvbiBkaWFnbm9zdGljLmgKCjIwMDMtMDktMDYgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHR1bGlwdHJlZS5vcmc+CgoJKiBsb29wLmMgKGxvb3BfcmVnc191cGRhdGUpOiBEZWxldGUgZWxzZSBjbGF1c2UgZm9yIFBBVFRFUk4gcnR4IGFuZAoJc2ltcGxpZnkuCgoyMDAzLTA5LTA3ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBEZWZpbmUgJFJFTUFLRSB0byBiZSAkTUFLRSB3aXRoIExBTkdVQUdFUyAmIEJPT1RfQ0ZMQUdTCglhbmQgdXNlIGl0IHRocm91Z2hvdXQuCgoyMDAzLTA5LTA3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9zaW1wbGlmeV9jb25kanVtcCk6IEZpeCBteSBwcmV2aW91cyBwYXRjaC4KCgkqIHRvcGxldi5jICAocmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uKTogIERvIG5vdCBmaW5hbGl6ZSBleHRlcm5hbAoJdmlyYWJsZXMuCgoJKiBjZ3JhcGguYyAoY2dyYXBoX21hcmtfcmVhY2hhYmxlX25vZGUpOiBPbmx5IGVucXVldWUgZmluYWxpemVkCglmdW5jdGlvbnMuCgkoY2dyYXBoX3ZhcnBvb2xfZmluYWxpemVfZGVjbCk6IE5vdGljZSBnbG9iYWwgc3ltYm9sIHdoZW4gbmVlZGVkLgoKMjAwMy0wOS0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRhcmdldC8xMjA3MAoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogRml4IHNhdmluZyBvZiBCTEttb2RlIGFyZ3VtZW50cy4KCglQUiBvcHQvMTIwODIKCSogY2ZnY2xlYW51cC5jICh0cnlfc2ltcGxpZnlfY29uZGp1bXApOiBBdm9pZCB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcuCgoyMDAzLTA5LTA2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGRpYWdub3N0aWMuYyAoYW5ub3VuY2VfZnVuY3Rpb24pOiBNb3ZlIHRvIHRvcGxldi5jLgoKMjAwMy0wOS0wNiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2NzZS5jIChleHByX2VxdWl2X3ApOiBEb24ndCBjb25zaWRlciBhbnl0aGluZyB0byBiZSBlcXVhbCB0bwoJdm9sYXRpbGUgbWVtLgoKMjAwMy0wOS0wNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2djLWNvbW1vbi5jIChpbml0X2dnY19oZXVyaXN0aWNzKTogRG9uJ3QgdXNlIHRoZSBoZXVyaXN0aWNzCgl3aGVuIGdjIGNoZWNraW5nIGlzIGVuYWJsZWQuCgoyMDAzLTA5LTA2ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJUFIgYy85ODYyCgkqIGMtZGVjbC5jIChjX2V4cGFuZF9ib2R5XzEpOiBNb3ZlIHJldHVybiB3YXJuaW5nIGZyb20gaGVyZS4uLgoJKGZpbmlzaF9mdW5jdGlvbik6IC4uLnRvIGhlcmUuCgoyMDAzLTA5LTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBBbHdheXMgcmV0dXJuCglhIHN1YnNldCBvZiB0aGUgaW5wdXQgY2xhc3MuCgoyMDAzLTA5LTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2k4NjAvaTg2MC5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGNvbmZpZy9pODYwL2k4NjAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4KCjIwMDMtMDktMDUgIE5pdGluIFlld2FsZSAgPE5pdGluWUBLUElUQ3VtbWlucy5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IERlY2xhcmUgaDgzMDBfaGFyZF9yZWdub19yZW5hbWVfb2sKCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKEhBUkRfUkVHTk9fUkVOQU1FX09LKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfaGFyZF9yZWdub19yZW5hbWVfb2spOiBOZXcuCgoyMDAzLTA5LTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi8xODIzCgkqIGV4cG1lZC5jIChleHBhbmRfZGl2bW9kIDxFWEFDVF9ESVZfRVhQUj4pOiBVc2UgYW4gdW5zaWduZWQKCW11bHRpcGxpY2F0aW9uIHRvIGltcGxlbWVudCBkaXZpc2lvbiBieSBjb25zdGFudCBpbnRlZ2VyLgoKMjAwMy0wOS0wNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IEVuYWJsZSB1bml0LWF0LWEtdGltZSBhdCAtTzIuCgkqIHBhcmFtcy5kZWYgKG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlKTogU2V0IHRvIDUwMAoJKG1heC1pbmxpbmUtaW5zbnMtYXV0byk6IFNldCB0byAxNTAKCSogaW52b2tlLnRleGkgKG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlLCBtYXgtaW5saW5lLWluc25zLWF1dG8pOiBVcGRhdGUuCgoyMDAzLTA5LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2dyYXBoLmMgKGNncmFwaF9tYXJrX3JlYWNoYWJsZV9ub2RlKTogU3BsaXQgb3V0IGZyb20gLi4uCgkoY2dyYXBoX21hcmtfbmVlZGVkX25vZGUpOiBSZW1vdmUgbmVlZGVkIGFyZ3VtZW50LgoJKiBjZ3JhcGguaDogVXBkYXRlIHRvIG1hdGNoLgoJKiBjZ3JhcGh1bml0LmMgKGRlY2lkZV9pc19mdW5jdGlvbl9uZWVkZWQpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBSZW9yZy4gIEF2b2lkIGRlZmVycmVkX2lubGluZV9mdW5jdGlvbgoJaWYgd2UgZ2VuZXJhdGVkIHRoZSBmdW5jdGlvbi4KCShyZWNvcmRfY2FsbF8xKTogVXBkYXRlIGZvciBjZ3JhcGhfbWFya19yZWFjaGFibGVfbm9kZS4KCSogdmFyYXNtLmMgKG1hcmtfcmVmZXJlbmNlZCk6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtYWN0LmMgKG1hcmtfcmVmZXJlbmNlZF9tZXRob2RzKTogTGlrZXdpc2UuCgoyMDAzLTA5LTA0ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIHRhcmdob29rcy5jOiBBZGQgY29tbWVudCBleHBsYWluaW5nIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4KCjIwMDMtMDktMDQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi90LWZydjogRml4IHBhdGggZm9yIGZydi1hYmkuaC4KCSogY29uZmlnL2Zydi9mcnYtYXNtLmg6IEZpeCBzdHJpbmcgY29uY2F0ZW5hdGlvbi4KCjIwMDMtMDktMDQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoYXBwbHlfYXJnc19zaXplKTogR3VhcmQgYWdhaW5zdCBhIE5VTEwgY2Z1bi4KCShleHBhbmRfYnVpbHRpbl9hcHBseV9hcmdzXzEpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9hcHBseSk6IExpa2V3aXNlLgoJRml4ZXMgUFIgYm9vdHN0cmFwLzEyMTcyLgoKMjAwMy0wOS0wNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWd1cmUuaW4gKGdjY19jdl9hc19peDg2X2Ntb3Zfc3VuX3N5bnRheCk6IENoZWNrIGlmCglhc3NlbWJsZXIgc3VwcG9ydHMgU3VuIHN5bnRheCBmb3IgY21vdi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IFJlbmFtZSBDTU9WX1NVTl9BU19TWU5UQVggdG8KCUhBVkVfQVNfSVg4Nl9DTU9WX1NVTl9TWU5UQVguCgkqIGNvbmZpZy9pMzg2L3NvbDIuaCAoQ01PVl9TVU5fQVNfU1lOVEFYKTogUmVtb3ZlLgoJRml4ZXMgUFIgdGFyZ2V0LzEyMTAxLgoKMjAwMy0wOS0wNCAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5jIChmbmFtZV9hc19zdHJpbmcpOiBVc2UgbGFuZ19ob29rcy5kZWNsX3ByaW50YWJsZV9uYW1lCgl3aXRoIHZlcmJvc2l0eSAwLCBpbnN0ZWFkIG9mIERFQ0xfTkFNRSwgZm9yIGh1bWFuLXJlYWRhYmxlIHN0cmluZy4KCjIwMDMtMDktMDQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfcmV0dXJuX2luX21lbW9yeSk6IEFsbG93Cgl1bmNvbnZlcnRlZCBwb3J0cy4KCjIwMDMtMDktMDQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfcmV0dXJuX2luX21lbW9yeSk6IEZpeCB0eXBvCglpbiBsYXN0IGNoZWNraW4uCgoyMDAzLTA5LTA0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X3JldHVybl9pbl9tZW1vcnkpOiBGaXggZGVmYXVsdAoJZGVmaW5pdGlvbi4KCjIwMDMtMDktMDQgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19jb2ZmX2FzbV9uYW1lZF9zZWN0aW9uKTogUmVzdG9yZQoJZGVsZXRlZCBmdW5jdGlvbi4KCSogY29uZmlnL202OGsvY29mZi5oIChNNjhLX1RBUkdFVF9DT0ZGKTogQWRkIGZsYWcgdXNlZCB0bwoJZW5hYmxlIGNvZmYtb25seSBjb2RlIGluIG02OGsuYy4KCjIwMDMtMDktMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgdjg1MGUxIHRhcmdldC4gIEFsbG93IC0td2l0aC1jcHUgdG8gYWNjZXB0Cgl2ODUwZTEuCgkqIGNvbmZpZy92ODUwL3Y4NTAuaDogQWNjZXB0IHY4NTBlMSBhcyBhIGRlZmF1bHQgQ1BVLgoJQWNjZXB0IC1tdjg1MGUxIGFzIGEgY29tbWFuZCBsaW5lIG9wdGlvbi4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBuZXcgLW12ODUwZTEgY29tbWFuZCBsaW5lIHN3aXRjaC4KCSogY29uZmlnL3Y4NTAvdC12ODUwOiBUcmVhdCAtbXY4NTBlMSBhcyBhIG11bHRpbGliIGFsaWFzIGZvcgoJLW12ODUwZS4KCjIwMDMtMDktMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjICh2ODUwZS0qLSopOiBVc2UgdC12ODUwZSBtYWtlZmlsZSBmcmFnbWVudC4KCSogY29uZmlnL3Y4NTAvdC12ODUwOiBPbmx5IHByb2R1Y2Ugb25lIGV4dHJhIG11bHRpbGliIC0gZm9yCgl0aGUgdjg1MGUuCgkqIGNvbmZpZy92ODUwL3Qtdjg1MGU6IE5ldyBmaWxlOiBPbmx5IHByb2R1Y2Ugb25lIGV4dHJhCgltdWx0aWxpYiAtIGZvciB0aGUgdjg1MC4KCjIwMDMtMDktMDQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvbGliZ2NjLWlhNjQudmVyOiBFeHBvcnQgX1Vud2luZF9HZXRCU1BAQEdDQ18zLjMuMi4KCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYyAoX1Vud2luZF9HZXRCU1ApOiBOZXcgZnVuY3Rpb24uCgkqIHVud2luZC5oIChfVW53aW5kX0dldEJTUCk6IE5ldyBwcm90b3R5cGUuCgkqIGxpYmdjYy1zdGQudmVyOiBBZGQgZW1wdHkgR0NDXzMuMy4yIHZlcnNpb24uCgkqIG1rbWFwLXN5bXZlci5hd2s6IEZvciBzeW1ib2wgdmVyc2lvbnMgd2l0aCBubyBleHBvcnRlZCBzeW1ib2xzLAoJZG9uJ3QgcHV0IGFueXRoaW5nIGludG8gdmVyc2lvbiBzY3JpcHQsIGp1c3QgY2hhbmdlIGFsbCBzeW1ib2wKCXZlcnNpb25zIHdoaWNoIGluaGVyaXQgZnJvbSBpdCB0byBpbmhlcml0IGZyb20gaXRzIGFuY2VzdG9yLgoKMjAwMy0wOS0wNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZXhwYW5kX3Byb2xvZ3VlKTogQ29udmVydCB0bwoJY2FsbHMuc3RydWN0X3ZhbHVlX3J0eCBob29rLgoJKHJlZ19vcl9jb25zdF9mbG9hdF8xX29wZXJhbmQpOiBOZXcuCgkqIGNvbmZpZy9taXBzL21pcHMuaDogVXBkYXRlIENvbW1lbnRzLgoJKG1pcHNfYXJnKTogQWRkIHJlZ19vcl9jb25zdF9mbG9hdF8xX29wZXJhbmQuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGRpdmRmMyk7IENvbnZlcnQgdG8gZXhwYW5kZXIuCgkoZGl2c2YzKTogRGl0dG8uCgkoKmRpdmRmMyk6IE5ldyBwYXR0ZXJuLgoJKCpkaXZzZjMpOiBEaXR0by4KCjIwMDMtMDktMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRvcGxldi5jICh3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IEZpeCBmaW5hbCBwYXNzIGluCgl1bml0LWF0LWF0aW1lIG1vZGUuCgoyMDAzLTA5LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCByZW1vdmFsIG9mIGNhc3QtYXMtbHZhbHVlIGV4dGVuc2lvbiBpbgoJQysrLgoKMjAwMy0wOS0wNCAgTmljb2xhcyBSb2NoZSAgPHJvY2hlQGFjdC1ldXJvcGUuZnI+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogRml4IHR5cG8uCgoyMDAzLTA5LTAzICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCW9wdGltaXphdGlvbi8xMTk4MAoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKFNJWkVfVFlQRSk6IFN1cHBvcnQgVEFSR0VUXzY0QklULgoJKFBUUkRJRkZfVFlQRSk6IExpa2V3aXNlLgoJKFdDSEFSX1RZUEVfU0laRSk6IExpa2V3aXNlLgoKMjAwMy0wOS0wMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiB0YXJnaG9va3MuYzogTmV3IGZpbGUuCgkqIHRhcmdob29rcy5oOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW46IEFkZCB0YXJnaG9va3MubyBzdXBwb3J0LgoJKGZ1bmN0aW9uLm8pOiBEZXBlbmQgb24kKFRBUkdFVF9IKS4KCShzdG10Lm8pOiBMaWtld2lzZS4KCShjb21iaW5lLm8pOiBEZXBlbmQgb24gJChUUkVFX0gpIGFuZCAkKFRBUkdFVF9IKS4KCSogYnVpbHRpbnMuYyAoYXBwbHlfYXJnc19zaXplLCBleHBhbmRfYnVpbHRpbl9hcHBseV9hcmdzXzEsCglleHBhbmRfYnVpbHRpbl9hcHBseSk6IENvbnZlcnQgdG8gY2FsbHMuc3RydWN0X3ZhbHVlX3J0eCBob29rLgoJKGV4cGFuZF9idWlsdGluX3NhdmVyZWdzKTogQ29udmVydCB0bwoJY2FsbHMuZXhwYW5kX2J1aWx0aW5fc2F2ZXJlZ3MgaG9vay4KCSogYy1kZWNsLmMgKHN0YXJ0X2RlY2wpOiBIYW5kbGUgbmV3IGNhbGxzLnByb21vdGVfcHJvdG90eXBlcyBob29rCgloZXJlLCBpbnN0ZWFkIG9mIC4uLgoJKGdldF9wYXJtX2luZm8pIC4uLiBoZXJlLgoJKHN0b3JlX3Bhcm1fZGVjbHNfb2xkc3R5bGUpOiBDb252ZXJ0IHRvIGNhbGxzLnByb21vdGVfcHJvdG90eXBlcwoJaG9vay4KCShmaW5pc2hfZnVuY3Rpb24pOiBIYW5kbGUgY2FsbHMucHJvbW90ZV9wcm90b3R5cGVzIGhvb2sgaGVyZSB0b28uCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogQ29udmVydCB0bwoJY2FsbHMucHJvbW90ZV9wcm90b3R5cGVzIGhvb2suCgkoY19jb252ZXJ0X3Bhcm1fZm9yX2lubGluaW5nKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBDb252ZXJ0IHRvCgljYWxscy5wcm9tb3RlX2Z1bmN0aW9uX2FyZ3MgaG9vay4KCShleHBhbmRfY2FsbCk6IENvbnZlcnQgdG8gY2FsbHMuc3RydWN0X3ZhbHVlX3J0eCwKCWNhbGxzLnN0cmljdF9hcmd1bWVudF9uYW1pbmcsCgljYWxscy5wcmV0ZW5kX291dGdvaW5nX3ZhcmFyZ3NfbmFtZWQsIGFuZAoJY2FsbHMucHJvbW90ZV9mdW5jdGlvbl9yZXR1cm4gaG9va3MuICBQYXNzIGZuZGVjbCB0bwoJYWdncmVnYXRlX3ZhbHVlX3AuICBJbml0aWFsaXplIENVTVVMQVRJVkVfQVJHUyBiZWZvcmUgY2FsbGluZwoJaG9va3MsIHNvIHRoZXkgY2FuIHVzZSB0aGF0LgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lzZS4KCSogY29tYmluZS5jIChzZXR1cF9pbmNvbWluZ19wcm9tb3Rpb25zKTogQ29udmVydCB0bwoJY2FsbHMucHJvbW90ZV9mdW5jdGlvbl9hcmdzIGhvb2suCgkqIGVtaXQtcnRsLmM6IENvbnZlcnQgdG8gY2FsbHMuc3RydWN0X3ZhbHVlX3J0eCBob29rLgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogUGFzcyBjYWxsIHRvIGFnZ3JlZ2F0ZV92YWx1ZV9wLgoJKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGV4cHIuaDogUmVtb3ZlIHN1cHBvcnQgZm9yIFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MsCglTVFJJQ1RfQVJHVU1FTlRfTkFNSU5HLCBQUkVURU5EX09VVEdPSU5HX1ZBUkFSR1NfTkFNRUQsCglSRVRVUk5fSU5fTUVNT1JZIG1hY3JvIGRlZmF1bHRzLgoJKiBmaW5hbC5jIChwcm9maWxlX2Z1bmN0aW9uKTogQ29udmVydCB0byBjYWxscy5zdHJ1Y3RfdmFsdWVfcnR4Cglob29rLgoJKiBmdW5jdGlvbi5jIChhZ2dyZWdhdGVfdmFsdWVfcCk6IEFjY2VwdCBmdW5jdGlvbiB0eXBlIHRyZWUgYXMKCXNlY29uZCBwYXJhbWV0ZXI7IHRyeSB0byBkZWR1Y2UgZm50eXBlIGZyb20gaXQuICBDb252ZXJ0IHRvCgljYWxscy5yZXR1cm5faW5fbWVtb3J5IGhvb2suCgkoYXNzaWduX3Bhcm1zKTogQ29udmVydCB0byBjYWxscy5zZXR1cF9pbmNvbWluZ192YXJhcmdzLAoJY2FsbHMuc3RyaWN0X2FyZ3VtZW50X25hbWluZywgY2FsbHMucHJvbW90ZV9mdW5jdGlvbl9hcmdzLAoJY2FsbHMucHJldGVuZF9vdXRnb2luZ192YXJhcmdzX25hbWVkIGhvb2tzLiAgUGFzcyBmbmRlY2wgdG8KCWFnZ3JlZ2F0ZV92YWx1ZV9wLgoJKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IExpa2V3aXNlLiAgQ29udmVydCB0bwoJY2FsbHMuc3RydWN0X3ZhbHVlX3J0eCBob29rLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBDb252ZXJ0IHRvIGNhbGxzLnByb21vdGVfZnVuY3Rpb25fcmV0dXJuIGhvb2suCgkoYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uKTogUGFzcyBmbmRlY2wgdG8gYWdncmVnYXRlX3ZhbHVlX3AuCgkqIGhhcmQtcmVnLXNldC5oOiBVcGRhdGUgY29tbWVudHMgdG8gbmV3IGhvb2sgbmFtZXMuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogUGFzcyBmbmRlY2wgdG8gYWdncmVnYXRlX3ZhbHVlX3AuCgkqIHJlZy1zdGFjay5jIChzdGFja19yZXN1bHQpOiBMaWtld2lzZS4KCSogcnRsLmggKHN0cnVjdF92YWx1ZV9ydHgsIHN0cnVjdF92YWx1ZV9pbmNvbWluZ19ydHgpOiBEZWxldGUuCgkqIHN0bXQuYyAoZXhwYW5kX3ZhbHVlX3JldHVybik6IENvbnZlcnQgdG8KCWNhbGxzLnByb21vdGVfZnVuY3Rpb25fcmV0dXJuIGhvb2suCgkqIHRhcmdldC1kZWYuaDogQWRkIFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1MsCglUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sIFRBUkdFVF9QUk9NT1RFX1BST1RPVFlQRVMsCglUQVJHRVRfU1RSVUNUX1ZBTFVFX1JUWCwgVEFSR0VUX1JFVFVSTl9JTl9NRU1PUlksCglUQVJHRVRfRVhQQU5EX0JVSUxUSU5fU0FWRVJFR1MsIFRBUkdFVF9TRVRVUF9JTkNPTUlOR19WQVJBUkdTLAoJVEFSR0VUX1NUUklDVF9BUkdVTUVOVF9OQU1JTkcsCglUQVJHRVRfUFJFVEVORF9PVVRHT0lOR19WQVJBUkdTX05BTUVELCBhbmQgVEFSR0VUX0NBTExTLgoJKiB0YXJnZXQuaDogTGlrZXdpc2UuCgkqIHRyZWUuaCAoYWdncmVnYXRlX3ZhbHVlX3ApOiBBbHNvIHRha2VzIGEgdHJlZSB0byBkZWR1Y2UgZnVuY3Rpb24KCWF0dHJpYnV0ZXMgZnJvbSAoZm9yIHRhcmdldCBob29rcykuCgkqIGRvYy90bS50ZXhpIChQUk9NT1RFX0ZVTkNUSU9OX0FSR1MsIFBST01PVEVfRlVOQ1RJT05fUkVUVVJOLAoJUFJPTU9URV9QUk9UT1RZUEVTLCBSRVRVUk5fSU5fTUVNT1JZLCBTVFJVQ1RfVkFMVUVfUkVHTlVNLAoJU1RSVUNUX1ZBTFVFLCBTVFJVQ1RfVkFMVUVfSU5DT01JTkdfUkVHTlVNLCBTVFJVQ1RfVkFMVUVfSU5DT01JTkcsCglFWFBBTkRfQlVJTFRJTl9TQVZFUkVHUywgU0VUVVBfSU5DT01JTkdfVkFSQVJHUywKCVNUUklDVF9BUkdVTUVOVF9OQU1JTkcsIFBSRVRFTkRfT1VUR09JTkdfVkFSQVJHU19OQU1FRCk6IENvbnZlcnQKCXRvIGhvb2tzLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX291dHB1dF9taV90aHVua19vc2YpOiBQYXNzIGZ1bmN0aW9uCgl0byBhZ2dyZWdhdGVfdmFsdWVfcC4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2luaXRfY3VtdWxhdGl2ZV9hcmdzLAoJYXJtX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfcmV0dXJuX3BvcHNfYXJncywgeDg2X3RoaXNfcGFyYW1ldGVyKToKCUxpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2F2ZV9yZWdfcCwgbWlwc19leHBhbmRfcHJvbG9ndWUsCgltaXBzX2Nhbl91c2VfcmV0dXJuX2luc24pOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdXRwdXRfbWlfdGh1bmspOiBQYXNzIGZ1bmN0aW9uIHRvCglhZ2dyZWdhdGVfdmFsdWVfcC4KCSogY29uZmlnL3N0b3J5MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2FzbV9vdXRwdXRfbWlfdGh1bmspOiBQYXNzCglmdW5jdGlvbiB0byBhZ2dyZWdhdGVfdmFsdWVfcC4KCSogb2JqYy9vYmpjLWFjdC5jIChnZW5lcmF0ZV9zdHJ1Y3RfYnlfdmFsdWVfYXJyYXkpOiBQYXNzIE5VTEwgdG8KCWFnZ3JlZ2F0ZV92YWx1ZV9wLgoKCSogY29uZmlnL3NoL3NoLXByb3Rvcy5oIChzaF9idWlsdGluX3NhdmVyZWdzKTogUmVtb3ZlLgoJKHNoX2F0dHJfcmVuZXNhc19wLCBzaF9jZnVuX2F0dHJfcmVuZXNhc19wLCBzaF9mdW5jdGlvbl9hcmcsCglzaF9mdW5jdGlvbl9hcmdfYWR2YW5jZSwgc2hfcGFzc19pbl9yZWdfcCk6IE5ldy4gICogY29uZmlnL3NoL3NoLmMKCShzaF9oYW5kbGVfcmVuZXNhc19hdHRyaWJ1dGUsIHNoX3Byb21vdGVfcHJvdG90eXBlcywKCXNoX3N0cnVjdF92YWx1ZV9ydHgsIHNoX3JldHVybl9pbl9tZW1vcnksIHNoX2J1aWx0aW5fc2F2ZXJlZ3MsCglzaF9zZXR1cF9pbmNvbWluZ192YXJhcmdzLCBzaF9zdHJpY3RfYXJndW1lbnRfbmFtaW5nLAoJc2hfcHJldGVuZF9vdXRnb2luZ192YXJhcmdzX25hbWVkKTogTmV3IGRlY2xzLgoJKHRhcmdldG0pOiBBZGQgbmV3IGhvb2tzLgoJKGNhbGNfbGl2ZV9yZWdzKTogU2F2ZSBNQUNMIGFuZCBNQUNIIGlmIHRoZSBmdW5jdGlvbiBoYXMgdGhlCglyZW5lc2FzIGF0dHJpYnV0ZS4KCShzaF9leHBhbmRfcHJvbG9ndWUpOiBTdXBwb3J0IHJlbmVzYXMgYXR0cmlidXRlLgoJKHNoX2J1aWx0aW5fc2F2ZXJlZ3MpOiBNYWtlIHN0YXRpYy4KCShzaF9idWlsZF92YV9saXN0KTogU3VwcG9ydCByZW5lc2FzIGF0dHJpYnV0ZS4KCShzaF92YV9zdGFydCk6IExpa2V3aXNlLgoJKHNoX3ZhX2FyZyk6IExpa2V3aXNlLgoJKHNoX3Byb21vdGVfcHJvdG90eXBlcyk6IE5ldy4KCShzaF9mdW5jdGlvbl9hcmcpOiBOZXcsIG1vdmVkIGZyb20gc2guaC4gIFN1cHBvcnQgcmVuZXNhcwoJYXR0cmlidXRlLgoJKHNoX2Z1bmN0aW9uX2FyZ19hZHZhbmNlKTogTGlrZXdpc2UuCgkoc2hfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKHNoX3N0cmljdF9hcmd1bWVudF9uYW1pbmcpOiBMaWtld2lzZS4KCShzaF9wcmV0ZW5kX291dGdvaW5nX3ZhcmFyZ3NfbmFtZWQpOiBMaWtld2lzZS4KCShzaF9zdHJ1Y3RfdmFsdWVfcnR4KTogTmV3LgoJKHNoX2F0dHJpYnV0ZSk6IEFkZCByZW5lc2FzIGF0dHJpYnV0ZS4KCShzaF9oYW5kbGVfcmVuZXNhc19hdHRyaWJ1dGUpOiBOZXcuCgkoc2hfYXR0cl9yZW5lc2FzX3AsIHNoX2NmdW5fYXR0cl9yZW5lc2FzX3ApOiBOZXcuCgkoc2hfbXNfYml0ZmllbGRfbGF5b3V0X3ApOiBTdXBwb3J0IHJlbmVzYXMgYXR0cmlidXRlIGFsc28uCgkoc2hfb3V0cHV0X21pX3RodW5rKTogUGFzcyBmdW5jdGlvbiB0byBhZ2dyZWdhdGVfdmFsdWVfcC4gICoKCWNvbmZpZy9zaC9zaC5oIChUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1yZW5lc2FzIGFzIGFuIGFsaWFzIGZvcgoJLW1oaXRhY2hpLgoJKFNUUlVDVF9WQUxVRV9SRUdOVU0sIFNUUlVDVF9WQUxVRSwgUkVUVVJOX0lOX01FTU9SWSk6IE1vdmVkIHRvCgl0YXJnZXQgaG9va3MuCgkoc2hfYXJncyk6IEFkZCByZW5lc2FzX2FiaSBmbGFnLgoJKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogU2V0IGl0LiAgUGFzcyBmbmRlY2wgdG8gYWdncmVnYXRlX3ZhbHVlX3AuCgkoRlVOQ1RJT05fQVJHX0FEVkFOQ0UsIEZVTkNUSU9OX0FSRyk6IE1vdmUgdG8gc2guYy4KCShQQVNTX0lOX1JFR19QKTogU3VwcG9ydCByZW5lc2FzIGF0dHJpYnV0ZS4gIFBhc3MgREYgYW5kIFRGIG9uIHRoZQoJc3RhY2sgZm9yIHRoZSByZW5lc2FzIGFiaS4KCShTVFJJQ1RfQVJHVU1FTlRfTkFNSU5HLCBQUkVURU5EX09VVEdPSU5HX1ZBUkFSR1NfTkFNRUQsCglTRVRVUF9JTkNPTUlOR19WQVJBUkdTLCBFWFBBTkRfQlVJTFRJTl9TQVZFUkVHUywKCVBST01PVEVfUFJPVE9UWVBFUyk6IE1vdmVkIHRvIHNoLmMuICAqIGNvbmZpZy9zaC9zaC5tZCAoY2FsbCk6IFNldAoJY2FsbCBjb29raWUgdG8gaW5kaWNhdGUgcmVuZXNhcyBjYWxscy4KCjIwMDMtMDktMDMgIE1vc3RhZmEgSGFnb2cgIDxtdXN0YWZhQGlsLmlibS5jb20+CgoJKiBnY3NlLmMgKHJlcGxhY2Vfb25lX3NldCk6IE5ldyBmdW5jdGlvbi4KCShwcmVfaW5zZXJ0X2NvcHlfaW5zbik6IENoYW5nZSB0aGUgb3JkZXIgb2YgY29weWluZwoJdG8gbWFrZSBjb3B5IHByb3BhZ2F0aW9uIGRpc2NvdmVyIGFkZGl0aW9uYWwgUFJFIG9wcG9ydHVuaXRpZXMuCgoyMDAzLTA5LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTE3MDAuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9zdWJyZWcpOiBDaGVjayB0aGF0IHRoZSBzdWJyZWcgb2Zmc2V0CglvZiBhIGhhcmQgcmVnaXN0ZXIgaXMgcmVwcmVzZW50YWJsZSBiZWZvcmUgdHJ5aW5nIHRvIHNpbXBsaWZ5IGl0Cgl1c2luZyBzdWJyZWdfaGFyZF9yZWduby4KCjIwMDMtMDktMDQgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfbGRfaGlkZGVuKTogRGlzYWJsZSB1bmxlc3MgdXNpbmcgR05VIGxkLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA5LTA0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGludGwuaCAoTl8pOiBSZW1vdmUgcGFyZW50aGVzZXMuCgoyMDAzLTA5LTAzICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcuZ2NjIChtNjhrLSotbGludXgqKTogUmVtb3ZlIGRlZmluaXRpb24gb2YgTElOVVhfREVGQVVMVF9FTEYuCgkqIGNvbmZpZy9pMzcwL2xpbnV4LmggKExJTlVYX0RFRkFVTFRfRUxGKTogUmVtb3ZlIHVuY29uZGl0aW9uYWwKCWRlZmluaXRpb24gYW5kIGNvZGUgYmxvY2tzIGNvbXBpbGVkIHdoZW4gbm90IGRlZmluZWQuCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmggKExJTlVYX0RFRkFVTFRfRUxGKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2xpbnV4NjQuaCAoTElOVVhfREVGQVVMVF9FTEYpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4Lmg6IChMSU5VWF9ERUZBVUxUX0VMRik6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oOiAoTElOVVhfREVGQVVMVF9FTEYpOiBMaWtld2lzZS4KCjIwMDMtMDktMDMgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGNncmFwaHVuaXQuYyAodmlzaXRlZF9ub2Rlcyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkocmVjb3JkX2NhbGxfMSk6IFVzZSB3YWxrX3RyZWUgd2l0aCB2aXNpdGVkX25vZGVzLgoJKGNncmFwaF9jcmVhdGVfZWRnZXMpOiBVc2Ugd2Fsa190cmVlIHdpdGggdmlzaXRlZF9ub2Rlcy4KCVNldHVwL3RlYXJkb3duIHZpc2l0ZWRfbm9kZXMgaGFzaHRhYmxlLgoKMjAwMy0wOS0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0b3BsZXYuYyAoZmxhZ19yb3VuZGluZ19tYXRoKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShmX29wdGlvbnMpOiBBZGQgdG8gdGhlIGxpc3Qgb2YgbGFuZ3VhZ2UgaW5kZXBlbmRlbnQgb3B0aW9ucy4KCSogZmxhZ3MuaCAoZmxhZ19yb3VuZGluZ19tYXRoKTogUHJvdG90eXBlIGhlcmUuCgkoSE9OT1JfU0lHTl9ERVBFTkRFTlRfUk9VTkRJTkcpOiBVc2UgZmxhZ19yb3VuZGluZ19tYXRoIGluc3RlYWQuCgkqIGNvbW1vbi5vcHQgKGZyb3VuZGluZy1tYXRoKTogTmV3IGNvbW1vbiBjb21tYW5kIGxpbmUgb3B0aW9uLgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIE9QVF9mcm91bmRpbmdfbWF0aC4KCShzZXRfZmFzdF9tYXRoX2ZsYWdzKTogLWZmYXN0LW1hdGggY2xlYXJzIGZsYWdfcm91bmRpbmdfbWF0aC4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgdGhpcyBuZXcgY29tbWFuZCBsaW5lIG9wdGlvbi4KCjIwMDMtMDktMDMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL3NvbDIuaCAoTk9fSU1QTElDSVRfRVhURVJOX0MpOiBVcGRhdGUgY29tbWVudC4KCjIwMDMtMDktMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluIChjLW9iamMtY29tbW9uLm8pOiBLaWxsIGd0LWMtb2JqYy1jb21tb24uaCBkZXBlbmRlbmN5LgoJKiBjLWRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogIEtpbGwgYXJndW1lbnRzLCBhbHdheXMgdXNlIGNncmFwaCBwYXRoLgoJKiBjLW9iamMtY29tbW9uLmM6IEtpbGwgaW5jbHVkZSBvZiBndC1jLW9iamMtY29tbW9uLmgKCShleHBhbmRfZGVmZXJyZWRfZm5zLCBkZWZmZXJfZm4pOiBLaWxsIGZ1bmN0aW9uLgoJKGRlZmVycmVkX2Zucyk6IEtpbGwgdmFyaWFibGUuCgkoZmluaXNoX2NkdG9yKTogVXBkYXRlIGZpbmlzaF9mdW5jdGlvbiBjYWxsLgoJKGNfb2JqY19jb21tb25fZmluaXNoX2ZpbGUpOiBBbHdheXMgY2FsbCBjZ3JhcGggY29kZS4KCSogYy1wYXJzZS5jOiBSZWdlbmVyYXRlLgoJKiBjLXBhcnNlLnk6IFJlZ2VuZXJhdGUuCgkqIGMtdHJlZS5oIChmaW5pc2hfZnVuY3Rpb24pOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBvYmpjLWFjY3QuYyAoYnVpbGRfbW9kdWxlX2Rlc2NyaXB0b3IsIGZpbmlzaF9tZXRob2RfZGVmKToKCVVwZGF0ZSBjYWxsIG9mIGZpbmlzaF9mdW5jdGlvbi4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZGVmYXVsdF9pbmxpbmVfcCwgY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBBZGQKCWZvcndhcmQgcHJvdG90eXBlLgoJKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IEluIG5vbi11bml0LWF0LWEtdGltZSBtb2RlIGFuYWx5emUgdGhlCglmdW5jdGlvbiBhbmQgYXNzZW1ibGUgaXQgaWYgbmVlZGVkLgoJKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogRG8gbm90aGluZyBpbiBub24tdW5pdC1hdC1hLXRpbWUKCW1vZGUuCgkoY2dyYXBoX29wdGltaXplKTogTGlrZXdpc2UuCgkoY2dyYXBoX2V4cGFuZF9mdW5jdGlvbik6IEluIG5vbi11bml0LWF0LWEtdGltZSBtb2RlIGtlZXAgZnVuY3Rpb24gYm9keQoJZXZlbiB3aGVuIGl0IGhhcyBubyBpbmxpbmUgY2FsbGVlcy4KCSogYy1wYXJzZS5pbjogVXBkYXRlIGNhbGxzIHRvIGZpbmlzaF9mdW5jdGlvbi4KCjIwMDMtMDktMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oOiBIYW5kbGUgVEFSR0VUX0NQVV9pd21teHQuCglVc2UgI2Vycm9yIHRvIGdlbmVyYXRlIHRoZSBtZXNzYWdlIGlmIFRBUkdFVF9ERUZBVUxUIGlzIG5vdAoJcmVjb2duaXNlZC4KCjIwMDMtMDktMDMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTUFTS19VTlVTRUQxKTogUmVtb3ZlLgoJKE1BU0tfWEdPVCwgVEFSR0VUX1hHT1QpOiBEZWZpbmUuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIGFuIGVudHJ5IGZvciAtbXhnb3QuCgkoQVNNX1NQRUMpOiBNYXAgLW14Z290IHRvIC14Z290LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3ltYm9sX2luc25zKTogVXNlIFRBUkdFVF9YR09UIHRvIGRlY2lkZQoJd2hldGhlciB3ZSdyZSB1c2luZyBhIGJpZy1HT1Qgc2VxdWVuY2VzLgoJKG1pcHNfbGVnaXRpbWl6ZV9jb25zdF9tb3ZlLCBtaXBzX2V4cGFuZF9jYWxsKTogTGlrZXdpc2UuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFJldmVydCAyMDAzLTAxLTA5IGNoYW5nZS4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbXhnb3QuCgoyMDAzLTA5LTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zb2wyLmggKE5PX0lNUExJQ0lUX0VYVEVSTl9DKTogRGVmaW5lIGhlcmUuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmg6IE5vdCBoZXJlLgoKMjAwMy0wOS0wMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogVGhlIGNvZGUgZm9sbG93aW5nIGJvdGhfc3VtbWFuZHMgcGVyZm9ybXMKCXRoZSBzYW1lIHRhc2sgYXMgc2ltcGxpZnlfZ2VuX2JpbmFyeS4gIFJlcGxhY2UgYWxsIGdvdG9zIHRvCglib3RoX3N1bW1hbmRzIHdpdGggYSBjYWxsIHRvIHNpbXBsaWZ5X2dlbl9iaW5hcnkgYW5kIGRlbGV0ZSB0aGUKCW5vdyB1bnVzZWQgbGFiZWwuCgoyMDAzLTA5LTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvNzMyNwoJKiBjb25maWcvc3BhcmMvc29sMi5oIChOT19JTVBMSUNJVF9FWFRFUk5fQyk6IERlZmluZS4KCjIwMDMtMDktMDIgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGNncmFwaHVuaXQuYyAocmVjb3JkX2NhbGxfMSk6IFVzZSB3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzLgoJKGNncmFwaF9vcHRpbWl6ZV9mdW5jdGlvbik6IFNldCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgdG8gdGhlCglmbmRlY2wgd2UncmUgaW50ZWdyYXRpbmcgZnJvbS4KCjIwMDMtMDktMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmRlZjogQnJlYWsgb3V0IF9Db21wbGV4IG1hdGggZnVuY3Rpb25zIGludG8gdGhlaXIKCW93biBjYXRlZ29yeS4KCjIwMDMtMDktMDIgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19SVExfRVhQQU5EX1NUTVQpOiBDYXN0IHByb3Blcmx5LgoKMjAwMy0wOS0wMiAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogY2ZnYnVpbGQuYyAoY29tcHV0ZV9vdXRnb2luZ19mcmVxdWVuY2llcyk6IFVzZSBOT1RFIGluc3RlYWQgb2YKCWZpbmRpbmcgdGhlIG5vdGUgYWdhaW4uCgoyMDAzLTA5LTAyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSBob3N0LXNwZWNpZmljIHJld3JpdGVzIG9mIHRhcmdldF9hbGlhcy4KCjIwMDMtMDktMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZ2VucHJvZ3MpOiBGaXggdHlwby4KCgkqIE1ha2VmaWxlLmluIChnZW5jaGVjay5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGR1bW15LWNvbmRpdGlvbnMubyk6IExpa2V3aXNlLgoJKHJlYWQtcnRsLm8pOiBMaWtld2lzZS4KCShnZW5zdXBwb3J0Lm8pOiBMaWtld2lzZS4KCShnZW5jb25maWckKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5jb25maWcubyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShnZW5mbGFncyQoYnVpbGRfZXhlZXh0KSk6IFJlbW92ZSBydWxlLgoJKGdlbmZsYWdzLm8pOiBSZW1vdmUgYnVpbGQgY29tbWFuZHMuCgkoZ2VuY29kZXMkKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5jb2Rlcy5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbmNvbnN0YW50cy5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbmVtaXQkKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5lbWl0Lm8pOiBSZW1vdmUgYnVpbGQgY29tbWFuZHMuCgkoZ2VucmVjb2ckKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5yZWNvZy5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbmV4dHJhY3QkKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5leHRyYWN0Lm8pOiBSZW1vdmUgYnVpbGQgY29tbWFuZHMuCgkoZ2VucGVlcCQoYnVpbGRfZXhlZXh0KSk6IFJlbW92ZSBydWxlLgoJKGdlbnBlZXAubyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShnZW5hdHRyJChidWlsZF9leGVleHQpKTogUmVtb3ZlIHJ1bGUuCgkoZ2VuYXR0ci5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbnByb2duYW1lcyk6IE5ldyB2YXJpYWJsZS4KCShnZW5wcm9ncyk6IExpa2V3aXNlLgoJKGdlbm9ianMpOiBMaWtld2lzZS4KCShnZW5wcm9ncyk6IE5ldyBydWxlLgoJKGdlbm9ianMpOiBMaWtld2lzZS4KCShnZW5hdHRydGFiLm8pOiBSZW1vdmUgYnVpbGQgY29tbWFuZHMuCgkoZ2VuYXV0b21hdGEubyk6IExpa2V3aXNlLgoJKGdlbm91dHB1dCQoYnVpbGRfZXhlZXh0KSk6IFJlbW92ZSBydWxlLgoJKGdlbm91dHB1dC5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbmdlbnJ0bC5vKTogTGlrZXdpc2UuCgkoZ2VucHJlZHMubyk6IExpa2V3aXNlLgoJKGdlbmd0eXBlLm8pOiBMaWtld2lzZS4KCShnZW5jb25kaXRpb25zLm8pOiBMaWtld2lzZS4KCShnZW4tcHJvdG9zLm8pOiBMaWtld2lzZS4KCShzY2FuLm8pOiBMaWtld2lzZS4KCShmaXgtaGVhZGVyLm8pOiBMaWtld2lzZS4KCShzY2FuLWRlY2xzLm8pOiBMaWtld2lzZS4KCShjaGVjay1nKyspOiBDb21iaW5lIHdpdGggb3RoZXIgY2hlY2sgdGFyZ2V0cy4KCShjaGVjay1nY2MpOiBMaWtld2lzZS4KCShjaGVjay1nNzcpOiBMaWtld2lzZS4KCShjaGVjay1vYmpjKTogTGlrZXdpc2UuCgoyMDAzLTA5LTAxICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSBob3N0LXNwZWNpZmljIHN0dWZmIHdoaWNoIGlzIHVudXNlZCBoZXJlCglzaW5jZSB0aGUgaW50cm9kdWN0aW9uIG9mIGNvbmZpZy5ob3N0LgoKCSogZG9jL2ZyYWdtZW50cy50ZXhpOiBNZW50aW9uIGNvbmZpZy5ob3N0LgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogTWVudGlvbiBjb25maWcuaG9zdC4gIEdpdmUgYnJpZWYgZGVzY3JpcHRpb25zCglvZiBjb25maWcuYnVpbGQsIGNvbmZpZy5ob3N0LCBhbmQgY29uZmlnLmdjYy4KCjIwMDMtMDktMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBwdXQgdmFyaWFibGVzIG9uCglDX1RZUEVfSU5DT01QTEVURV9WQVJTIG9mIGEgdHlwZSB1bmxlc3MgdGhhdCB0eXBlIGlzIGl0c2VsZgoJaW5jb21wbGV0ZS4KCjIwMDMtMDktMDEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmhvc3Q6IE5ldyBmaWxlLgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgc29tZSBob3N0LXNwZWNpZmljIHN0dWZmIGFuZCBzb21lCglsb2dpYyBuZWVkZWQgb25seSBmb3IgcmVwZWF0ZWQgaW52b2NhdGlvbi4KCSogY29uZmlndXJlLmluOiBVc2UgY29uZmlnLmhvc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDktMDEgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IEtpbGwgQklUX0FORFRDX0VYUFIuCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogS2lsbCBCSVRfQU5EVENfRVhQUi4KCSogZm9sZC1jb25zdC5jIChpbnRfY29uc3RfYmlub3ApOiBLaWxsIEJJVF9BTkRUQ19FWFBSLgoJKGZvbGQpOiBLaWxsIEJJVF9BTkRUQ19FWFBSIGFuZCBsYWJlbCBiaXRfYW5kLgoJKiB0cmVlLmRlZiAoQklUX0FORFRDX0VYUFIpOiBLaWxsLgoKMjAwMy0wOC0zMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSB1c2VzIG9mICJmb3IgeCBpbiAuLiAke2Zvb30iIGlkaW9tLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjb25maWcuZ2NjOiAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gaW5zdGFsbF9oZWFkZXJzX2Rpciwgbm93IHVudXNlZAoJc2luY2UgaW50cm9kdWN0aW9uIG9mIGNvbmZpZy5idWlsZC4KCSogY29uZmlnLmdjYyAoaTg2MC0qLXN5c3Y0Kik6IERvbid0IHNldCB1bnVzZWQgVVNHLCBTVlIzIGRlZmluZXMuCgoJKiBkb2MvZnJhZ21lbnRzLnRleGksIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBNZW50aW9uIG5ldyBmaWxlCgljb25maWcuYnVpbGQuCgoJKiBjb25maWcuYnVpbGQ6IE5ldyBmaWxlLgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgc29tZSBidWlsZC1zcGVjaWZpYyBzdHVmZi4KCSogY29uZmlndXJlLmluOiBVc2UgY29uZmlnLmJ1aWxkLgoJKiBjb25maWd1cmU6IFJlZ25lcmF0ZS4KCjIwMDMtMDgtMzEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCSAgICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzExODIzCgkqIHN0bXQuYyAoZXhwYW5kX2VuZF9jYXNlX3R5cGUpOiBPbmx5IHVzZSBqdW1wIHRhYmxlcyBmb3IgZGVuc2UKCXN3aXRjaCBzdGF0ZW1lbnRzIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4KCjIwMDMtMDgtMzEgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3NldGptcCk6IFVzZSBlbWl0X2p1bXAgdG8ganVtcCBhcm91bmQKCXRoZSAhPSAwIGNhc2UsIHdoaWNoIGVuc3VyZXMgcGVuZGluZyBzdGFjayBhZGp1c3RtZW50cyBhcmUgZmx1c2hlZC4KCjIwMDMtMDgtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuZnJhZzogRGVsZXRlIGZpbGUuCgkqIGNvbmZpZ3VyZS5pbjogUmVuYW1lIHRoZSBzdWJzdGl0dXRpb24gdmFyaWFibGVzCglkZXBfaG9zdF94bWFrZV9maWxlIGFuZCBkZXBfdG1ha2VfZmlsZSB0byB4bWFrZV9maWxlIGFuZAoJdG1ha2VfZmlsZSByZXNwZWN0aXZlbHkuICBEbyBub3QgZXhwYW5kICRzcmNkaXIgaW4gdGhlCgl2YWx1ZSBvZiB0aGVzZTsgbGVhdmUgdGhhdCBmb3IgTWFrZS4gIEludHJvZHVjZSBhIG5ldwoJc3Vic3RpdHV0aW9uIHZhcmFpYmxlLCBhbGxfbGFuZ19tYWtlZnJhZ3MsIHdoaWNoIGxpc3RzCglzdWJkaXJlY3RvcnkgTWFrZS1sYW5nLmluIGZpbGVzOyBleGNsdWRlIHRoZXNlIGZyb20KCWFsbF9sYW5nX21ha2VmaWxlcywgd2hpY2ggaXMgbm93IG9ubHkgZm9yIHN1YmRpcmVjdG9yeQoJb3V0cHV0cy4gIERvIG5vdCBpbnZva2UgY29uZmlndXJlLmZyYWcuICBEbyBub3Qgc2V0IG5vcgoJQUNfU1VCU1RfRklMRSB0YXJnZXRfb3ZlcnJpZGVzLCBob3N0X292ZXJyaWRlcywgb3IKCWxhbmd1YWdlX2ZyYWdtZW50cy4gQ3JlYXRlIGJ1aWxkIHN1YmRpcmVjdG9yaWVzIGluCgljb25maWcuc3RhdHVzIGV4dHJhIGNvbW1hbmRzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgc3Vic3RpdHV0aW9ucyB0byBtYXRjaCBjaGFuZ2VzIHRvCgljb25maWd1cmUuICBVc2UgaW5jbHVkZSBkaXJlY3RpdmVzIGluc3RlYWQgb2YgQC1pbnNlcnRpb25zCgl0byByZWFkIGluIGhvc3QsIHRhcmdldCwgYW5kIGxhbmd1YWdlIGZyYWdtZW50cy4KCShNYWtlZmlsZSBydWxlKTogRG8gbm90IGludm9rZSBjb25maWd1cmUuZnJhZy4gIERvIG5vdCBjb3B5Cgljb25maWcuc3RhdHVzIHRvIGNvbmZpZy5ydW4gYmVmb3JlIGV4ZWN1dGluZyBpdC4gIFNldAoJQ09ORklHX0hFQURFUlMgYW5kIENPTkZJR19GSUxFUyBzbyB0aGF0IG9ubHkgTWFrZWZpbGUgZ2V0cwoJcmVnZW5lcmF0ZWQuCgkoY3N0YW1wLWggcnVsZSk6IFNldCBDT05GSUdfRklMRVMgYXMgd2VsbCBhcyBDT05GSUdfSEVBREVSUy4KCjIwMDMtMDgtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXRyZWUuaDogRGVsZXRlIENPTVBBUkVfRElGRkVSRU5UX1RVIGZyb20gZW51bWVyYXRpb24uCgkqIGMtdHlwZWNrLmMgKHNhbWVfdHJhbnNsYXRpb25fdW5pdF9wKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXB0eXBlcyk6IFVzZSBpdCBpbnN0ZWFkIG9mIGZsYWdzIHBhcmFtZXRlciB0byBpZGVudGlmeQoJc3RydWN0dXJlIHR5cGVzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQWx3YXlzIGNhbGwgY29tcHR5cGVzIHdpdGgKCUNPTVBUWVBFX1NUUklDVCBmbGFncyBhcmd1bWVudC4KCShjX3Jlc2V0X3N0YXRlKTogU2V0IEJMT0NLX1NVUEVSQ09OVEVYVCBvZiB0aGUgYmxvY2sgZm9ybWVkCgl0byBmaWxlX3Njb3BlX2RlY2wuCgoyMDAzLTA4LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLmggKENfVFlQRV9JTkNPTVBMRVRFX1ZBUlMpOiBOZXcgbWFjcm8uCgkqIGMtZGVjbC5jIChzdHJ1Y3QgY19zY29wZSk6IFJlbW92ZSAiaW5jb21wbGV0ZSIgZmllbGQuCgkocHVzaGRlY2wpOiBBdHRhY2ggdmFyaWFibGVzIHdpdGggaW5jb21wbGV0ZSB0eXBlcyB0bwoJdGhlIFRZUEVfTUFJTl9WQVJJQU5UIG9mIHRoZSBpbmNvbXBsZXRlIHR5cGUgaW4gcXVlc3Rpb24uCgkoZmluaXNoX3N0cnVjdCk6IExvb2sgYXQgQ19UWVBFX0lOQ09NUExFVEVfVkFSUyBmb3IgdmFyaWFibGVzCgl0byBjb21wbGV0ZSwgbm90IGF0IGN1cnJlbnRfc2NvcGUtPmluY29tcGxldGUuICBBbGwgc3VjaAoJdmFyaWFibGVzIGRvIG5lZWQgY29tcGxldGlvbi4KCjIwMDMtMDgtMzAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoJTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgoKCSogYXJtL2xpYjFmdW5jcy5hc20gKFJFVENPTkQpOiBEZWxldGUuCgkoUkVUTERNKTogTmV3IGFzc2VtYmxlciBtYWNyby4gIFVzZSBpdCBmb3IgcmV0dXJuaW5nIHdpdGggbGRtL2xkci4KCShBUk1fTERJVjAsIFRIVU1CX0xESVYwKTogQ29sbGFwc2UgbXVsdGlwbGUgZGVmaW5pdGlvbnMuCgkoX19BUk1fQVJDSF9fKTogTW92ZSBoZXJlIGZyb20gaWVlZTc1NC0/Zi5TLgoJKFJFVCwgUkVUYyk6IENsZWFuIHVwIGRlZmluaXRpb25zLgoJKERJVl9GVU5DX0VORCk6IFJlbmFtZWQgZnJvbSBGVU5DX0VORC4gIEFsbCB1c2VzIGNoYW5nZWQuCgkoRlVOQ19FTkQpOiBOZXcgbWFjcm8gdGhhdCBtYXJrcyB0aGUgZW5kIG9mIGFueSBmdW5jdGlvbi4KCShBUk1fRlVOQ19TVEFSVCk6IE5ldyBtYWNybyB0aGF0IGFsbG93cyBhbiBhc3NlbWJsZXIgcm91dGluZSB0byBiZQoJaW1wbGVtZW50ZWQgaW4gQVJNIGNvZGUgZXZlbiBpZiBhIFRodW1iLW9ubHkgYnVpbGQuCglVbmNvbmRpdGlvbmFsbHkgaW5jbHVkZSBpZWVlNzU0LT9mLlMuCgkqIGFybS9pZWVlNzU0LWRmLlM6IERlbGV0ZSBtYWNyb3MgbW92ZWQgdG8gbGliMWZ1bmNzLmFzbS4KCU1hcmsgZW5kcyBvZiBmdW5jdGlvbnMuCglTcGxpdCBpbnRvIHNlcGFyYXRlIGNvbmRpdGlvbmFsbHktY29tcGlsZWQgdW5pdHMuCglVc2UgUkVUTERNIHRvIHJldHVybiBmcm9tIHJvdXRpbmVzLgoJKiBhcm0vaWVlZTc1NC1zZi5TOiBTaW1pbGFybHkuCgkqIHQtYXJtLWVsZiAoTElCMUFTTUZVTkNTKTogUmVtb3ZlIF9pZWVlNzU0X2RwIGFuZCBfaWVlZTc1NF9zcC4KCUFkZCBfbmVnZGYyIF9hZGRzdWJkZjMgX211bGRpdmRmMyBfY21wZGYyIF91bm9yZGRmMiBfZml4ZGZzaQoJX3RydW5jZGZzZjIgX25lZ3NmMiBfYWRkc3Vic2YzIF9tdWxkaXZzZjMgX2NtcHNmMiBfdW5vcmRzZjIKCV9maXhzZnNpIGFuZCBfZml4dW5zc2ZzaS4KCgkqIGFybS9pZWVlNzU0LWRmLlMgKF9fbXVsZGYzKTogRml4IGJ1ZyB3aGVuIHJlc3VsdCBvZiBhCgltdWx0aXBsaWNhdGlvbiB1bmRlcmZsb3dzIHRvIHplcm8uCgkoX19hZGRkZjMpOiBGaXggYnVnIHdoZW4gdXNpbmcgVkZQIG9yZGVyaW5nIG9uIGxpdHRsZS1lbmRpYW4KCXByb2Nlc3NvcnMuCgkoX19maXhkZnNpKTogVXNlIHJyeCB0byBleHRyYWN0IHRoZSBjYXJyeSBpbnRvIGEgcmVnaXN0ZXIgaW5zdGVhZCBvZgoJTVJTIGluc3RydWN0aW9uLiAgT3B0aW1pemUgbGF0ZXIgdXNlIG9mIHJlc3VsdC4KCSogYXJtL2llZWU3NTQtc2YuUyAoX19maXhzZnNpKTogTGlrZXdpc2UuCgkoX19maXh1bnNzZnNpKTogVXNlIGEgYmV0dGVyIHNlcXVlbmNlIGZvciBoYW5kbGluZyBuZWdhdGl2ZS1vci16ZXJvLgoKMjAwMy0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtb3B0aW1pemUuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChPQkpTLWFyY2hpdmUpOiBBZGQgdHJlZS1vcHRpbWl6ZS5vLgoJKHRyZWUtb3B0aW1pemUubyk6IE5ldy4KCSogYy1kZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBVc2UgYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uLgoJKGZpbmlzaF9mdW5jdGlvbik6IERvbid0IGZyZWVfYWZ0ZXJfcGFyc2luZyBvciBmcmVlX2FmdGVyX2NvbXBpbGF0aW9uLgoJKHNldF9zYXZlX2V4cHJfY29udGV4dCk6IE1vdmUgdG8gdHJlZS1vcHRpbWl6ZS5jLgoJKGNfZXhwYW5kX2JvZHlfMSk6IFVzZSB0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24uCgkqIGMtbGFuZy5jIChMQU5HX0hPT0tTX1JUTF9FWFBBTkRfU1RNVCk6IE5ldy4KCSogb2JqYy9vYmpjLWxhbmcuYyAoTEFOR19IT09LU19SVExfRVhQQU5EX1NUTVQpOiBOZXcuCgkqIGMtb2JqYy1jb21tb24uYyAoZXhwYW5kX2RlZmVycmVkX2Zucyk6IERvbid0IGVtaXQgdW51c2VkIGlubGluZXM7CglpdGVyYXRlIHVudGlsIGNsb3N1cmUuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19SVExfRVhQQU5EX1NUQVJULAoJTEFOR19IT09LU19SVExfRVhQQU5EX1NUTVQsIExBTkdfSE9PS1NfUlRMX0VYUEFORF9FTkQpOiBOZXcuCgkoTEFOR19IT09LU19SVExfRVhQQU5EX0lOSVRJQUxJWkVSKTogTmV3LgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3NfZm9yX3J0bF9leHBhbnNpb24pOiBOZXcuCgkqIHRvcGxldi5oICh0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24pOiBEZWNsYXJlIGl0LgoKMjAwMy0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEFkZCBydGxfaW5saW5lX2luaXQsIHNhdmVkX2Zvcl9pbmxpbmUuCgkqIGludGVncmF0ZS5jIChzYXZlX2Zvcl9pbmxpbmUpOiBTZXQgc2F2ZWRfZm9yX2lubGluZS4KCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX3Njb3BlX3N0bXQpOiBDaGVjayBpdC4KCSogdG9wbGV2LmMgKHdyYXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zKTogQ2hlY2sgaXQuCgkocmVzdF9vZl9oYW5kbGVfaW5saW5pbmcpOiBTZXQgYW5kIGNoZWNrIHJ0bF9pbmxpbmVfaW5pdC4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogUmVtb3ZlIG91dCBvZiBkYXRlIGNvbW1lbnQuCgoyMDAzLTA4LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uKTogTmV3LCBzcGxpdCBvdXQgb2YgLi4uCgkocHJlcGFyZV9mdW5jdGlvbl9zdGFydCwgaW5pdF9mdW5jdGlvbl9zdGFydCk6IC4uLiBoZXJlLgoJKiBleHByLmMgKGluaXRfZXhwcik6IFVzZSBnZ2NfYWxsb2NfY2xlYXJlZC4KCSogc3RtdC5jIChpbml0X3N0bXRfZm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHRyZWUuaCAoYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uKTogRGVjbGFyZS4KCjIwMDMtMDgtMjkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogRG9uJ3QgdXNlIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzIGluIHNoZWxsIGNhc2UKCWNsYXVzZS4KCjIwMDMtMDgtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBNb3ZlIGZ1bmN0aW9uX2ZyZXF1ZW5jeSBhbmQKCW1heF9qdW1wdGFibGVfZW50cyBiZWZvcmUgc3RhcnQgb2YgYml0IGZpZWxkIG1lbWJlcnMuCgoyMDAzLTA4LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fY29uc3RhbnRfcCk6IENoZWNrIGNzZV9ub3RfZXhwZWN0ZWQgaGVyZSwKCShmb2xkX2J1aWx0aW5fY29uc3RhbnRfcCkgLi4uIG5vdCBoZXJlLgoKMjAwMy0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtdHJlZS5oIChDX0RFQ0xfRklMRV9TQ09QRSk6IE1vdmUgLi4uCgkqIHRyZWUuaCAoREVDTF9GSUxFX1NDT1BFX1ApOiAuLi4gaGVyZSwgYW5kIHJlbmFtZS4KCSogYy1kZWNsLmMsIGMtb2JqYy1jb21tb24uYywgYy10eXBlY2suYzogVXBkYXRlIHRvIG1hdGNoLgoKMjAwMy0wOC0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmOiBGaXggdHlwb3MuCgkoQVRUUl9NQVRIRk5fRlBST1VORElOR19TVE9SRSk6IE5ldyBtYWNyby4KCShCVUlMVF9JTl9GUkVYUCwgQlVJTFRfSU5fRlJFWFBGLCBCVUlMVF9JTl9GUkVYUEwsIEJVSUxUX0lOX01PREYsCglCVUlMVF9JTl9NT0RGRiwgQlVJTFRfSU5fTU9ERkwsIEJVSUxUX0lOX1JFTVFVTywgQlVJTFRfSU5fUkVNUVVPRiwKCUJVSUxUX0lOX1JFTVFVT0wsIEJVSUxUX0lOX1NJTkNPUywgQlVJTFRfSU5fU0lOQ09TRiwKCUJVSUxUX0lOX1NJTkNPU0wpOiBVc2UgQVRUUl9NQVRIRk5fRlBST1VORElOR19TVE9SRS4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRVJGQywgQlVJTFRfSU5fRVJGQ0YsIEJVSUxUX0lOX0VSRkNMKToKCVVzZSBBVFRSX01BVEhGTl9GUFJPVU5ESU5HX0VSUk5PLgoKMjAwMy0wOC0yOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjIChpMzg2LSotdnN0YSk6IEZpeCBvYnZpb3VzIGJvZ29zaXR5LgoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogIFJlbW92ZSBzcGVjaWFsIGNhc2VzIGZvciB1bnN1cHBvcnRlZAoJUFRYIDEgYW5kIFBUWCAyIChpbmNsdWRpbmcgaVszNDU2N104Ni1zZXF1ZW50LXN5c3YzKS4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDMtMDgtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY3BwLmluZm8pOiBKdXN0IHN0YXRlIGRlcGVuZGVuY2llcy4KCShnY2MuaW5mbyk6IExpa2V3aXNlLgoJKGdjY2ludC5pbmZvKTogTGlrZXdpc2UuCgkoZ2NjaW5zdGFsbC5pbmZvKTogTGlrZXdpc2UuCgkoY3BwaW50ZXJuYWxzLmluZm8pOiBMaWtld2lzZS4KCShjcHAuZHZpKTogTGlrZXdpc2UuCgkoZ2NjLmR2aSk6IExpa2V3aXNlLgoJKGdjY2ludC5kdmkpOiBMaWtld2lzZS4KCShnY2NpbnN0YWxsLmR2aSk6IExpa2V3aXNlLgoJKGNwcGludGVybmFscy5kdmkpOiBMaWtld2lzZS4KCShnY292LjEpOiBMaWtld2lzZS4KCShjcHAuMSk6IExpa2V3aXNlLgoJKGdjYy4xKTogTGlrZXdpc2UuCgkoZ2ZkbC43KTogTGlrZXdpc2UuCgkoZ3BsLjcpOiBMaWtld2lzZS4KCShmc2YtZnVuZGluZy43KTogTGlrZXdpc2UuCgkoJChvYmpkaXIpLyUuaW5mbyk6IE5ldyBwYXR0ZXJuIHJ1bGUuCgkoJS5kdmkpOiBMaWtld2lzZS4KCjIwMDMtMDgtMjkgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJlc3RhZ2UxKTogUGFzcyBCT09UX0NGTEFHUyB0byByZWN1cnNpdmUgbWFrZS4KCShyZXN0YWdlMik6IExpa2V3aXNlLgoJKHJlc3RhZ2UzKTogTGlrZXdpc2UuCgkocmVzdGFnZTQpOiBMaWtld2lzZS4KCShyZXN0YWdlcHJvZmlsZSk6IExpa2V3aXNlLgoJKHJlc3RhZ2VmZWVkYmFjayk6IExpa2V3aXNlLgoJKGJ1YmJsZXN0cmFwKTogTGlrZXdpc2UuCgoyMDAzLTA4LTI5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IE5hcnJvdyB1bnN1cHBvcnRlZCB0YXJnZXQgbWF0Y2ggdG8gYXZvaWQgY2xvYmJlcmluZwoJaT84Ni1zZXF1ZW50LXN5c3Y0Ki4KCjIwMDMtMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKG1hdGhmbl9idWlsdF9pbik6IEhhbmRsZSBuZXcgbWF0aCBidWlsdGlucy4KCjIwMDMtMDgtMjggIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCUZpeCAoaG9wZWZ1bGx5IHRlbXBvcmFyeSkgZm9yIGJyZWFrYWdlIGNhdXNlZCBieSBteSAwOC0yMSBwYXRjaC4KCSogY3BwbGV4LmMgKF9jcHBfZ2V0X2ZyZXNoX2xpbmUpOiAgQ2hlY2sgZm9yIG51bGwgYnVmZmVyLgoJKF9jcHBfbGV4X2J1ZmZlcik6ICBMaWtld2lzZS4KCSogY3BwdHJhZC5jIChfY3BwX3JlYWRfbG9naWNhbF9saW5lX3RyYWQpOiAgTGlrZXdpc2UuCgoyMDAzLTA4LTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKm11bHNpM19zaWduIik6IE5ldyBpbnNuLgoJKCJtdWxzaWRpMyIgZXhwYW5kZXIsICJtdWxzaV82NDMyIiBpbnNuKTogUmVtb3ZlLCByZXBsYWNlIGJ5IC4uLgoJKCJtdWxzaWRpMyIpOiAuLi4gdGhpcyBuZXcgaW5zbi4KCSgidW11bHNpZGkzIik6IE5ldyBpbnNuLgoJKCJkaXZtb2RkaTMiLCAiZGl2bW9kdGlkaTMiLCAiZGl2bW9kdGlzaTMiKTogU2ltcGxpZnkgYnkgdXNpbmcKCW1peGVkLW1vZGUgbWF0Y2hpbmcgY29uc3RyYWludHMuCgkoInVkaXZtb2RzaTQiLCAidWRpdm1vZGRpc2kzIik6IE5ldyBpbnNucy4KCSgidWRpdnNpMyIsICJ1bW9kc2kzIik6IFVzZSBvbmx5IGluIEVTQS8zOTAgbW9kZS4KCjIwMDMtMDgtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9JTlRfUFRSLCBCVF9GTE9BVF9QVFIsIEJUX0RPVUJMRV9QVFIsCglCVF9MT05HRE9VQkxFX1BUUiwgQlRfRk5fRkxPQVRfRkxPQVRfRkxPQVRQVFIsCglCVF9GTl9ET1VCTEVfRE9VQkxFX0RPVUJMRVBUUiwKCUJUX0ZOX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9MT05HRE9VQkxFUFRSLAoJQlRfRk5fRkxPQVRfRkxPQVRfSU5UUFRSLCBCVF9GTl9ET1VCTEVfRE9VQkxFX0lOVFBUUiwKCUJUX0ZOX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9JTlRQVFIsCglCVF9GTl9GTE9BVF9GTE9BVF9GTE9BVF9JTlRQVFIsIEJUX0ZOX0RPVUJMRV9ET1VCTEVfRE9VQkxFX0lOVFBUUiwKCUJUX0ZOX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9MT05HRE9VQkxFX0lOVFBUUiwKCUJUX0ZOX1ZPSURfRkxPQVRfRkxPQVRQVFJfRkxPQVRQVFIsCglCVF9GTl9WT0lEX0RPVUJMRV9ET1VCTEVQVFJfRE9VQkxFUFRSLAoJQlRfRk5fVk9JRF9MT05HRE9VQkxFX0xPTkdET1VCTEVQVFJfTE9OR0RPVUJMRVBUUik6IE5ldy4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9GUkVYUCwgQlVJTFRfSU5fRlJFWFBGLCBCVUlMVF9JTl9GUkVYUEwsCglCVUlMVF9JTl9NT0RGLCBCVUlMVF9JTl9NT0RGRiwgQlVJTFRfSU5fTU9ERkwsIEJVSUxUX0lOX1JFTVFVTywKCUJVSUxUX0lOX1JFTVFVT0YsIEJVSUxUX0lOX1JFTVFVT0wsIEJVSUxUX0lOX1NJTkNPUywKCUJVSUxUX0lOX1NJTkNPU0YsIEJVSUxUX0lOX1NJTkNPU0wpOiBOZXcuCgkqIHRyZWUuYzogQXNzaWduIG5ldyB0eXBlX25vZGVzLgoJKiB0cmVlLmggKHRyZWVfaW5kZXgpOiBBZGQgVElfRkxPQVRfUFRSX1RZUEUsIFRJX0RPVUJMRV9QVFJfVFlQRSwKCVRJX0xPTkdfRE9VQkxFX1BUUl9UWVBFLCBUSV9JTlRFR0VSX1BUUl9UWVBFLgoJKGZsb2F0X3B0cl90eXBlX25vZGUsIGRvdWJsZV9wdHJfdHlwZV9ub2RlLAoJbG9uZ19kb3VibGVfcHRyX3R5cGVfbm9kZSwgaW50ZWdlcl9wdHJfdHlwZV9ub2RlKTogTmV3IHR5cGVfbm9kZXMuCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IG5ldyBidWlsdGlucy4KCjIwMDMtMDgtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9GTl9GTE9BVF9JTlRfRkxPQVQsCglCVF9GTl9ET1VCTEVfSU5UX0RPVUJMRSwgQlRfRk5fTE9OR0RPVUJMRV9JTlRfTE9OR0RPVUJMRSk6IE5ldy4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRVJGLCBCVUlMVF9JTl9FUkZDLCBCVUlMVF9JTl9FUkZDRiwKCUJVSUxUX0lOX0VSRkNMLCBCVUlMVF9JTl9FUkZGLCBCVUlMVF9JTl9FUkZMLCBCVUlMVF9JTl9HQU1NQSwKCUJVSUxUX0lOX0dBTU1BRiwgQlVJTFRfSU5fR0FNTUFMLCBCVUlMVF9JTl9KMCwgQlVJTFRfSU5fSjBGLAoJQlVJTFRfSU5fSjBMLCBCVUlMVF9JTl9KMSwgQlVJTFRfSU5fSjFGLCBCVUlMVF9JTl9KMUwsCglCVUlMVF9JTl9KTiwgQlVJTFRfSU5fSk5GLCBCVUlMVF9JTl9KTkwsIEJVSUxUX0lOX0xHQU1NQSwKCUJVSUxUX0lOX0xHQU1NQUYsIEJVSUxUX0lOX0xHQU1NQUwsIEJVSUxUX0lOX1NJR05JRklDQU5ELAoJQlVJTFRfSU5fU0lHTklGSUNBTkRGLCBCVUlMVF9JTl9TSUdOSUZJQ0FOREwsIEJVSUxUX0lOX1RHQU1NQSwKCUJVSUxUX0lOX1RHQU1NQUYsIEJVSUxUX0lOX1RHQU1NQUwsIEJVSUxUX0lOX1kwLCBCVUlMVF9JTl9ZMEYsCglCVUlMVF9JTl9ZMEwsIEJVSUxUX0lOX1kxLCBCVUlMVF9JTl9ZMUYsIEJVSUxUX0lOX1kxTCwKCUJVSUxUX0lOX1lOLCBCVUlMVF9JTl9ZTkYsIEJVSUxUX0lOX1lOTCk6IE5ldy4KCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgbmV3IGJ1aWx0aW5zLgoKMjAwMy0wOC0yOCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IFJlbW92ZSBzcGVjaWFsIGNhc2UgY29kZSBmb3IgdW5zdXBwb3J0ZWQKCXZhcmlhbnRzIG9mIGk/ODYsIHBvd2VycGNsZSwgYW5kIHRodW1iLgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IFJlbW92ZSBzcGVjaWFsIGNhc2UgY29kZSBmb3IgdW5zdXBwb3J0ZWQKCWFybSBhbmQgaHBwYSB2YXJpYW50cy4KCjIwMDMtMDgtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9GTl9JTlRfRkxPQVQsIEJUX0ZOX0lOVF9ET1VCTEUsCglCVF9GTl9JTlRfTE9OR0RPVUJMRSwgQlRfRk5fTE9OR19GTE9BVCwgQlRfRk5fTE9OR19ET1VCTEUsCglCVF9GTl9MT05HX0xPTkdET1VCTEUsIEJUX0ZOX0xPTkdMT05HX0ZMT0FULAoJQlRfRk5fTE9OR0xPTkdfRE9VQkxFLCBCVF9GTl9MT05HTE9OR19MT05HRE9VQkxFLAoJQlRfRk5fRkxPQVRfRkxPQVRfTE9OR0RPVUJMRSwgQlRfRk5fRE9VQkxFX0RPVUJMRV9MT05HRE9VQkxFLAoJQlRfRk5fRkxPQVRfRkxPQVRfSU5ULCBCVF9GTl9ET1VCTEVfRE9VQkxFX0lOVCwKCUJUX0ZOX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9JTlQsIEJUX0ZOX0ZMT0FUX0ZMT0FUX0xPTkcsCglCVF9GTl9ET1VCTEVfRE9VQkxFX0xPTkcsIEJUX0ZOX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9MT05HLAoJQlRfRk5fRkxPQVRfRkxPQVRfRkxPQVRfRkxPQVQsIEJUX0ZOX0RPVUJMRV9ET1VCTEVfRE9VQkxFX0RPVUJMRSwKCUJUX0ZOX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9MT05HRE9VQkxFX0xPTkdET1VCTEUpOiBOZXcuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0FDT1MsIEJVSUxUX0lOX0FDT1NGLCBCVUlMVF9JTl9BQ09TSCwKCUJVSUxUX0lOX0FDT1NIRiwgQlVJTFRfSU5fQUNPU0hMLCBCVUlMVF9JTl9BQ09TTCwgQlVJTFRfSU5fQVNJTiwKCUJVSUxUX0lOX0FTSU5GLCBCVUlMVF9JTl9BU0lOSCwgQlVJTFRfSU5fQVNJTkhGLCBCVUlMVF9JTl9BU0lOSEwsCglCVUlMVF9JTl9BU0lOTCwgQlVJTFRfSU5fQVRBTkgsIEJVSUxUX0lOX0FUQU5IRiwgQlVJTFRfSU5fQVRBTkhMLAoJQlVJTFRfSU5fQ0JSVCwgQlVJTFRfSU5fQ0JSVEYsIEJVSUxUX0lOX0NCUlRMLCBCVUlMVF9JTl9DT1BZU0lHTiwKCUJVSUxUX0lOX0NPUFlTSUdORiwgQlVJTFRfSU5fQ09QWVNJR05MLCBCVUlMVF9JTl9DT1NILAoJQlVJTFRfSU5fQ09TSEYsIEJVSUxUX0lOX0NPU0hMLCBCVUlMVF9JTl9EUkVNLCBCVUlMVF9JTl9EUkVNRiwKCUJVSUxUX0lOX0RSRU1MLCBCVUlMVF9JTl9FWFAxMCwgQlVJTFRfSU5fRVhQMTBGLCBCVUlMVF9JTl9FWFAxMEwsCglCVUlMVF9JTl9FWFAyLCBCVUlMVF9JTl9FWFAyRiwgQlVJTFRfSU5fRVhQMkwsIEJVSUxUX0lOX0VYUE0xLAoJQlVJTFRfSU5fRVhQTTFGLCBCVUlMVF9JTl9FWFBNMUwsIEJVSUxUX0lOX0ZESU0sIEJVSUxUX0lOX0ZESU1GLAoJQlVJTFRfSU5fRkRJTUwsIEJVSUxUX0lOX0ZNQSwgQlVJTFRfSU5fRk1BRiwgQlVJTFRfSU5fRk1BTCwKCUJVSUxUX0lOX0ZNQVgsIEJVSUxUX0lOX0ZNQVhGLCBCVUlMVF9JTl9GTUFYTCwgQlVJTFRfSU5fRk1JTiwKCUJVSUxUX0lOX0ZNSU5GLCBCVUlMVF9JTl9GTUlOTCwgQlVJTFRfSU5fSFlQT1QsIEJVSUxUX0lOX0hZUE9URiwKCUJVSUxUX0lOX0hZUE9UTCwgQlVJTFRfSU5fSUxPR0IsIEJVSUxUX0lOX0lMT0dCRiwgQlVJTFRfSU5fSUxPR0JMLAoJQlVJTFRfSU5fTERFWFAsIEJVSUxUX0lOX0xERVhQRiwgQlVJTFRfSU5fTERFWFBMLCBCVUlMVF9JTl9MTFJJTlQsCglCVUlMVF9JTl9MTFJJTlRGLCBCVUlMVF9JTl9MTFJJTlRMLCBCVUlMVF9JTl9MTFJPVU5ELAoJQlVJTFRfSU5fTExST1VOREYsIEJVSUxUX0lOX0xMUk9VTkRMLCBCVUlMVF9JTl9MT0cxMCwKCUJVSUxUX0lOX0xPRzEwRiwgQlVJTFRfSU5fTE9HMTBMLCBCVUlMVF9JTl9MT0cxUCwgQlVJTFRfSU5fTE9HMVBGLAoJQlVJTFRfSU5fTE9HMVBMLCBCVUlMVF9JTl9MT0cyLCBCVUlMVF9JTl9MT0cyRiwgQlVJTFRfSU5fTE9HMkwsCglCVUlMVF9JTl9MT0dCLCBCVUlMVF9JTl9MT0dCRiwgQlVJTFRfSU5fTE9HQkwsIEJVSUxUX0lOX0xSSU5ULAoJQlVJTFRfSU5fTFJJTlRGLCBCVUlMVF9JTl9MUklOVEwsIEJVSUxUX0lOX0xST1VORCwKCUJVSUxUX0lOX0xST1VOREYsIEJVSUxUX0lOX0xST1VOREwsIEJVSUxUX0lOX05FWFRBRlRFUiwKCUJVSUxUX0lOX05FWFRBRlRFUkYsIEJVSUxUX0lOX05FWFRBRlRFUkwsIEJVSUxUX0lOX05FWFRUT1dBUkQsCglCVUlMVF9JTl9ORVhUVE9XQVJERiwgQlVJTFRfSU5fTkVYVFRPV0FSREwsIEJVSUxUX0lOX1BPVzEwLAoJQlVJTFRfSU5fUE9XMTBGLCBCVUlMVF9JTl9QT1cxMEwsIEJVSUxUX0lOX1JFTUFJTkRFUiwKCUJVSUxUX0lOX1JFTUFJTkRFUkYsIEJVSUxUX0lOX1JFTUFJTkRFUkwsIEJVSUxUX0lOX1JJTlQsCglCVUlMVF9JTl9SSU5URiwgQlVJTFRfSU5fUklOVEwsIEJVSUxUX0lOX1NDQUxCLCBCVUlMVF9JTl9TQ0FMQkYsCglCVUlMVF9JTl9TQ0FMQkwsIEJVSUxUX0lOX1NDQUxCTE4sIEJVSUxUX0lOX1NDQUxCTE5GLAoJQlVJTFRfSU5fU0NBTEJMTkwsIEJVSUxUX0lOX1NDQUxCTiwgQlVJTFRfSU5fU0NBTEJORiwKCUJVSUxUX0lOX1NDQUxCTkwsIEJVSUxUX0lOX1NJTkgsIEJVSUxUX0lOX1NJTkhGLCBCVUlMVF9JTl9TSU5ITCwKCUJVSUxUX0lOX1RBTkgsIEJVSUxUX0lOX1RBTkhGLCBCVUlMVF9JTl9UQU5ITCk6IE5ldy4KCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgbmV3IGJ1aWx0aW5zLgoKMjAwMy0wOC0yOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChsZWdpdG1hdGVfY29uc3RhbnRfcCk6IFVzZSBMQVJMIG9uCgl6U2VyaWVzIG1hY2hpbmVzIGV2ZW4gaW4gMzEtYml0IGFkZHJlc3NpbmcgbW9kZS4KCShsZWdpdGltYXRlX3JlbG9hZF9jb25zdGFudF9wKTogTGlrZXdpc2UuCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IExpa2V3aXNlLgoJKGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MpOiBMaWtld2lzZS4KCShzMzkwX3NwbGl0X2JyYW5jaGVzKTogTGlrZXdpc2UuCgkoczM5MF9kdW1wX3Bvb2wpOiBMaWtld2lzZS4KCShzMzkwX21haW5wb29sX2ZpbmlzaCk6IExpa2V3aXNlLgoJKHMzOTBfY2h1bmtpZnlfc3RhcnQpOiBMaWtld2lzZS4KCShzMzkwX3NlbGVjdF9ydHhfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiZG9sb29wX3NpIik6IExpa2V3aXNlLgoJKCJwb29sX3N0YXJ0XzMxIiwgInBvb2xfZW5kXzMxIik6IExpa2V3aXNlLgoJKCJwb29sX3N0YXJ0XzY0IiwgInBvb2xfZW5kXzY0Iik6IExpa2V3aXNlLgoJKCJtYWluX2Jhc2VfMzFfc21hbGwiLCAibWFpbl9iYXNlXzMxX2xhcmdlIik6IExpa2V3aXNlLgoJKCJtYWluX2Jhc2VfNjQiKTogTGlrZXdpc2UuCgkoInJlbG9hZF9iYXNlXzMxIiwgInJlbG9hZF9iYXNlXzY0Iik6IExpa2V3aXNlLgoJKCIqbW92c2lfbGFybCIpOiBOZXcgaW5zbi4KCSgiY2p1bXAiLCAiaWNqdW1wIik6IFVzZSBsb25nIGJyYW5jaGVzIG9uIHpTZXJpZXMgbWFjaGluZXMuCgkoImp1bXAiKTogTGlrZXdpc2UuCgkoImNhbGwiKTogVXNlIEJSQVNMIG9uIHpTZXJpZXMgbWFjaGluZXMuCgkoImNhbGxfdmFsdWUiLCAiY2FsbF92YWx1ZV90bHMiKTogTGlrZXdpc2UuCgkoImJyYXNsIiwgImJyYXMiLCAiYmFzcl82NCIsICJiYXNyXzMxIiwgImJhc182NCIsICJiYXNfMzEiKTogUmVtb3ZlCglhbmQgcmVwbGFjZSBieSAuLi4KCSgiKmJyYXMiLCAiKmJyYXNsIiwgIipiYXNyIikgLi4uIHRoZXNlIG5ldyBpbnNucy4KCSgiYnJhc2xfciIsICJicmFzX3IiLCAiYmFzcl82NF9yIiwgImJhc3JfMzFfciIsICJiYXNfNjRfciIsCgkiYmFzXzMxX3IiKTogUmVtb3ZlIGFuZCByZXBsYWNlIGJ5IC4uLgoJKCIqYnJhc19yIiwgIipicmFzbF9yIiwgIipiYXNyX3IiKSAuLi4gdGhlc2UgbmV3IGluc25zLgoJKCJicmFzbF90bHMiLCAiYnJhc190bHMiLCAiYmFzcl82NF90bHMiLCAiYmFzcl8zMV90bHMiLAoJImJhc182NF90bHMiLCAiYmFzXzMxX3RscyIpOiBSZW1vdmUgYW5kIHJlcGxhY2UgYnkgLi4uCgkoIipicmFzX3RscyIsICIqYnJhc2xfdGxzIiwgIipiYXNyX3RscyIpIC4uLiB0aGVzZSBuZXcgaW5zbnMuCgkoIipyZXR1cm5fc2kiLCAiKnJldHVybl9kaSIpOiBSZW1vdmUgYW5kIHJlcGxhY2UgYnkgLi4uCgkoIipyZXR1cm4iKTogLi4uIHRoaXMgbmV3IGluc24uCgkoInJvdGxzaTMiKTogQWxsb3cgb24gelNlcmllcyBtYWNoaW5lcy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGVnaXRpbWl6ZV9yZWxvYWRfY29uc3RhbnRfcCk6IFVzZQoJTEwvTEggdHlwZSBpbnN0cnVjdGlvbnMgaW4gei9BcmNoaXRlY3R1cmUgbW9kZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIiptb3ZzaV9sbGkiKTogTGlrZXdpc2UuCgkoIiphbmRzaTNfbmkiLCAiKmFuZGhpM19uaSIsICIqYW5kcWkzX25pIik6IExpa2V3aXNlLgoJKCIqaW9yc2kzX25pIiwgIippb3JoaTNfbmkiLCAiKmlvcnFpM19uaSIpOiBMaWtld2lzZS4KCSgiKmV4dGVuZHFpc2kyIik6IFVzZSBMQiBpbiB6L0FyY2hpdGVjdHVyZSBtb2RlLgoJKCIqemVyb19leHRlbmRxaXNpMl82NCIsICIqemVyb19leHRlbmRxaXNpMl8zMSIpOiBVc2UgTExHQyBpbgoJei9BcmNoaXRlY3R1cmUgbW9kZS4KCSgiemVyb19leHRlbmRxaWhpMiIsICIqemVyb19leHRlbmRxaWhpMl82NCIsICIqemVyb19leHRlbmRxaWhpMl8zMSIpOgoJTGlrZXdpc2UuCgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKnRtZGlfZXh0Iik6IEFsbG93IGluIGJvdGggNjQtYml0CglhbmQgMzEtYml0IG1vZGUuCgkoInB0cl9leHRlbmQiKTogQWxsb3cgb25seSBpbiA2NC1iaXQgbW9kZS4KCjIwMDMtMDgtMjcgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogZ2NjLmMgKFNUQU5EQVJEX0VYRUNfUFJFRklYLCBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYKQoJKFRPT0xESVJfQkFTRV9QUkVGSVgsIFNUQU5EQVJEX0JJTkRJUl9QUkVGSVgpOiBSZW1vdmUgdW5uZWNlc3NhcnkKCWRlZmluaXRpb25zLgoJKG1haW4pOiBPbmx5IHVzZSBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4IGlmIG5hdGl2ZS4KCSogZG9jL3RtLnRleGkgKFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVgpOiBVcGRhdGUuCgoyMDAzLTA4LTI3ICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIGNwcGVycm9yLmMgKHByaW50X2xvY2F0aW9uKTogIERvbid0IGNoZWNrIGZvciAhcGZpbGUtPmJ1ZmZlci4gIFRoYXQKCXRlc3QgZmFpbHMgZm9sbG93aW5nIG15IDA4LTIxIGNoYW5nZSwgYW5kIGl0IHNlZW1zIHVubmVjZXNzYXJ5IGFueXdheS4KCShjcHBfZXJyb3IpOiAgTGlrZXdpc2UuCgoyMDAzLTA4LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHJlYWwuYyAoZG9fbXVsdGlwbHkpOiBJbml0aWFsaXplIHdpdGggbWVtc2V0LgoKMjAwMy0wOC0yNyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2Nvdi5jICh0eXBlZGVmIHN0cnVjdCBhcmNfaW5mbyk6IE5ldyBmaWVsZCBjc19jb3VudC4KCShhY2N1bXVsYXRlX2xpbmVfY291bnRzKTogRmluZCBjeWNsZXMgY29ycmVjdGx5LgoKMjAwMy0wOC0yNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IFJlbW92ZSBtZW1iZXIKCWxpdGVyYWxfcG9vbF9sYWJlbC4KCShzMzkwX29wdGltaXplX3Byb2xvZyk6IFJlcGxhY2UgVEVNUF9SRUcgYXJndW1lbnQgd2l0aAoJVEVNUF9VU0VEIGFuZCBCQVNFX1VTRUQuICBEbyBub3QgY2hlY2sgZ2V0X3Bvb2xfc2l6ZSAoKS4KCShnZW5lcmFsX3Nfb3BlcmFuZCk6IEFjY2VwdCBhbGwgaW1tZWRpYXRlcyBiZWZvcmUgcmVsb2FkIGlmCglBTExPV19JTU1FRElBVEUuICBJZiBub3QgQUxMT1dfSU1NRURJQVRFLCByZWplY3QgbGl0ZXJhbCBwb29sCglyZWZlcmVuY2VzLgoJKHMzOTBfb3V0cHV0X3N5bWJvbGljX2NvbnN0KTogUmVtb3ZlIFVOU1BFQ19MVFJFTF9PRkZTRVQgaGFuZGxpbmcuCgkoZmluZF9jb25zdGFudF9wb29sX3JlZik6IElnbm9yZSBVTlNQRUNWX1BPT0xfRU5UUlkgaW5zbnMuCgkoczM5MF9hbGxvY19wb29sKTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfbmV3X3Bvb2wpOiBDYWxsIGl0LgoJKHMzOTBfZHVtcF9wb29sKTogQWRkIFJFTU9URV9MQUJFTCBhcmd1bWVudC4KCShzMzkwX2NodW5raWZ5X3N0YXJ0KTogQWRkIEJBU0VfUkVHIGFyZ3VtZW50LiAgRG8gbm90IGNoZWNrCglnZXRfcG9vbF9zaXplICgpLgoJKHMzOTBfY2h1bmtpZnlfZmluaXNoKTogQWRkIEJBU0VfUkVHIGFyZ3VtZW50LiAgQWRhcHQKCXMzOTBfZHVtcF9wb29sIGNhbGwuCgkoczM5MF9wb29sX2NvdW50LCBzMzkwX25yX2NvbnN0YW50cyk6IFJlbW92ZS4KCShzMzkwX291dHB1dF9jb25zdGFudF9wb29sKTogUmVtb3ZlLgoJKHMzOTBfbWFpbnBvb2xfc3RhcnQpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9tYWlucG9vbF9maW5pc2gpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9tYWlucG9vbF9jYW5jZWwpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9yZW9yZyk6IEltcGxlbWVudCBtYWluIGxpdGVyYWwgcG9vbCBoYW5kbGluZy4KCShzMzkwX2VtaXRfcHJvbG9ndWUpOiBFbWl0IG1haW5fcG9vbCBwbGFjZWhvbGRlciBpbnN0ZWFkIG9mCglsaXRlcmFsX3Bvb2xfMzEgLyBsaXRlcmFsX3Bvb2xfNjQgaW5zbnMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoczM5MF9wb29sX2NvdW50LCBzMzkwX25yX2NvbnN0YW50cyk6IFJlbW92ZS4KCShBU01fT1VUUFVUX1BPT0xfUFJPTE9HVUUsIEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZKTogUmVtb3ZlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChVTlNQRUNfTUFJTl9CQVNFKTogTmV3IHN5bWJvbGljIGNvbnN0YW50LgoJKCJtYWluX2Jhc2VfMzFfc21hbGwiLCAibWFpbl9iYXNlXzMxX2xhcmdlIik6IE5ldyBpbnNucy4KCSgibWFpbl9iYXNlXzY0IiwgICJtYWluX3Bvb2wiKTogTmV3IGluc25zLgoJKCJsaXRlcmFsX3Bvb2xfMzEiLCAibGl0ZXJhbF9wb29sXzY0Iik6IFJlbW92ZS4KCjIwMDMtMDgtMjcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAocHR4X25ldHN3YXApOiBOZXcgZGlzYWJsZWQgZml4LCBwb3J0ZWQgZnJvbQoJZml4aW5jLnB0eC4KCSogZml4aW5jL2luY2xoYWNrLmRlZiAodW5kZWZpbmVfbnVsbCk6ICBEb24ndCBnZW5lcmF0ZSBcciBjaGFyYWN0ZXJzLgoJUHJldHRpZnkgYSBsaXR0bGUuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTI3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGxpYjFmdW5jcy5hc20gKExfaWVlZTc1NF9zcCk6IE5ldy4gIEluY2x1ZGUgaWVlZTc1NC1zZi5TLgoJKExfaWVlZTc1NF9kcCk6IE5ldy4gIEluY2x1ZGUgaWVlZTc1NC1kZi5TLgoJKiBhcm0vaWVlZTc1NC1zZi5TOiBSZXdvcmsgdG8gYWxsb3cgaW50ZXJ3b3JraW5nLCBjYWxsaW5nIGZyb20gVGh1bWIsCglhbmQgY29tcGlsYXRpb24gaW4gYXBjcy0yNiBtb2RlLgoJKiBhcm0vaWVlZTc1NC1kZi5TOiBMaWtld2lzZS4KCSogdC1hcm0tZWxmIChEUEJJVCwgRlBCSVQsIGZwLWJpdC5jIGRwLWJpdC5jKTogRGVsZXRlIHJ1bGVzCgkoTElCMUFTTUZVTkNTKTogQWRkIF9pZWVlNzU0X3NwIGFuZCBfaWVlZTc1NF9kcCB0YXJnZXRzLgoKMjAwMy0wOC0yNyAgTmljb2xhcyBQaXRyZSAgPG5pY29AY2FtLm9yZz4KCgkqIGFybS9pZWVlNzU0LXNmLlM6IE5ldy4KCSogYXJtL2llZWU3NTQtZGYuUzogTmV3LgoKMjAwMy0wOC0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9leHBlY3RfanVtcCk6IFNhdmUgcGVuZGluZ19zdGFja19hZGp1c3QKCWFuZCByZXN0b3JlIGl0IGlmIHJldHVybmluZyBOVUxMLgoKMjAwMy0wOC0yNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IElmIGFuIGFyZ3VtZW50IGhhcyBubwoJc3RhY2sgc3BhY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCBhbmQgQkxPQ0tfUkVHX1BBRERJTkcgaXMgZGVmaW5lZCwKCXVzZSBpdCB0byBkZWNpZGUgYXQgd2hpY2ggZW5kIHRoZSBhcmd1bWVudCBzaG91bGQgYmUgcGFkZGVkLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBBbGxvY2F0ZSBCTEttb2RlIHN0YWNrIHNsb3RzLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX3BhZF9hcmdfdXB3YXJkKTogRGVjbGFyZS4KCShtaXBzX3BhZF9yZWdfdXB3YXJkKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChQQURfVkFSQVJHU19ET1dOKTogVXNlIEZVTkNUSU9OX0FSR19QQURESU5HLgoJKENVTVVMQVRJVkVfQVJHUyk6IFJlbW92ZSBudW1fYWRqdXN0cyBhbmQgYWRqdXN0cy4KCShGVU5DVElPTl9BUkdfUEFERElORyk6IFVzZSBtaXBzX3BhZF9hcmdfdXB3YXJkLgoJKEJMT0NLX1JFR19QQURESU5HKTogVXNlIG1pcHNfcGFkX3JlZ191cHdhcmQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoc3RydWN0IG1pcHNfYXJnX2luZm8pOiBSZW1vdmUgc3RydWN0X3AuCgkobWlwc19leHBhbmRfY2FsbCk6IFJlbW92ZSBjb2RlIGZvciBnZW5lcmF0aW5nIHN0cnVjdHVyZSBzaGlmdHMuCgkobWlwc19hcmdfaW5mbyk6IERvbid0IHNldCBzdHJ1Y3RfcC4gIERvbid0IHNldCBmcHJfcCBmb3Igbm9uLWZsb2F0Cgl0eXBlcyB1bmxlc3MgdXNpbmcgdGhlIEVBQkkuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBEb24ndCBnZW5lcmF0ZSBzaGlmdCBpbnN0cnVjdGlvbnMuCgkoZnVuY3Rpb25fYXJnKTogRG9uJ3QgcmV0dXJuIHRoZW0uICBEb24ndCBzaG9ydC1jaXJjdWl0IHRoZQoJY2hlY2sgZm9yIGRvdWJsZSBzdHJ1Y3R1cmUgY2h1bmtzIGZvciBERm1vZGUgYXJndW1lbnRzLgoJKG1pcHNfcGFkX2FyZ191cHdhcmQsIG1pcHNfcGFkX3JlZ191cHdhcmQpOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHNfZXhwYW5kX3Byb2xvZ3VlKTogUmVtb3ZlIGNvZGUgdG8gZW1pdCBzdHJ1Y3R1cmUgc2hpZnRzLgoJKiBjb25maWcvbWlwcy9pcml4Ni1saWJjLWNvbXBhdC5jOiBSZW1vdmUgd29ya2Fyb3VuZHMgZm9yIGJ1Z2d5CglzdHJ1Y3R1cmUgcGFzc2luZyAoaW5ldF9udG9hLCBpbmV0X2xuYW9mLCBpbmV0X25ldG9mKS4gIFVwZGF0ZQoJY29tbWVudHMgdG8gc2F5IHRoYXQgb25seSBzdHJ1Y3R1cmUgcmV0dXJucyBhcmUgYSBwcm9ibGVtLgoKMjAwMy0wOC0yNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zdHJpbmcuaCwgZml4aW5jL3Rlc3RzL2Jhc2Uvc3lzL3JlZ3NldC5oOgoJRml4IHRvIG1hdGNoIHByb2R1Y2VkIHZlcnNpb25zLgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChsb25nbG9uZ190KTogTmV3IGRpc2FibGVkIHRlc3QsIHBvcnRlZAoJZnJvbSBmaXhpbmMuc3ZyNC4KCSogZml4aW5jL2luY2xoYWNrLmRlZiAocHR4X3B3ZF9oKTogTmV3IGRpc2FibGVkIGZpeCwgcG9ydGVkCglmcm9tIGZpeGluYy5wdHguCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHB0eF9zeXNfbWNfcGFyYW1faCk6IE5ldyBkaXNhYmxlZCBmaXgsCglwb3J0ZWQgZnJvbSBmaXhpbmMucHR4LgoKMjAwMy0wOC0yNiAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF90b2tlbik6ICBDaGFuZ2UgdHlwZSBvZiBmaWVsZCBsaW5lIHRvIGZpbGVsaW5lLgoJKGNwcF9lcnJvcl93aXRoX2xpbmUpOiAgVXNlIGZpbGVsaW5lIGZvciBhcHByb3ByaWF0ZSBwYXJhbWV0ZXIuCgkqIGNwcGhhc2guaCAoc3RydWN0IGNwcF9tYWNybyk6ICBDaGFuZ2UgdHlwZSBvZiBmaWVsZCBsaW5lIHRvIGZpbGVsaW5lLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogIExpa2V3aXNlIGZvciBmaWVsZHMgbGluZSBhbmQgZGlyZWN0aXZlX2xpbmUuCgkoX2NwcF9iZWdpbl9tZXNzYWdlKTogIFVzZSBmaWxlbGluZSBmb3IgYXBwcm9wcmlhdGUgcGFyYW1ldGVyLgoJKiBjcHBlcnJvci5jIChwcmludF9sb2NhdGlvbiwgX2NwcF9iZWdpbl9tZXNzYWdlLCBjcHBfZXJyb3Jfd2l0aF9saW5lLAoJY3BwX2Vycm9yKTogIFVzZSBmaWxlbGluZSBmb3IgYXBwcm9wcmlhdGUgcGFyYW1ldGVycyBhbmQgdmFyaWFibGVzLgoJKHByaW50X2xvY2F0aW9uKTogIE5ldyBsb2NhbCBsaW4sIHNpbmNlIGl0IGlzIG5vdCBhIGZpbGVsaW5lLgoKMjAwMy0wOC0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMjAwMgoJKiB0cmVlLmggKFNDQUxBUl9GTE9BVF9UWVBFX1AsIENPTVBMRVhfRkxPQVRfVFlQRV9QKTogTmV3IG1hY3Jvcy4KCShGTE9BVF9UWVBFX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgdGhlc2UgdHdvIG5ldyBtYWNyb3MuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCA8UExVU19FWFBSPik6IERvbid0IGNvbnZlcnQgeCt4IGludG8geCoyLjAKCWZvciBjb21wbGV4IGZsb2F0aW5nIHBvaW50IHR5cGVzLgoKMjAwMy0wOC0yNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChlbWl0X3Byb2xvZ3VlKTogRG9uJ3QgY2hlY2sgbGl0ZXJhbCBwb29sIHNpemUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUlkpOiBDYWxsCglzMzkwX291dHB1dF9wb29sX2VudHJ5LgoKMjAwMy0wOC0yNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdnI0X3ByZXByb2NfbGludF9vbiwKCXN2cjRfcHJlcHJvY19saW50X29mZiwgc3ZyNF9wcmVwcm9jX21hY2hpbmUpOiBOZXcgZGlzYWJsZWQKCWZpeGVzLCBwb3J0ZWQgZnJvbSBmaXhpbmMuc3ZyNC4KCjIwMDMtMDgtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChQcmVyZXF1aXNpdGVzKTogTWVudGlvbiBHTlUgbWFrZSByZXF1aXJlbWVudC4KCgkqIE1ha2VmaWxlLmluIChBUl9GT1JfVEFSR0VUKTogRXhwb3J0IGl0LgoJKEFSX0NSRUFURV9GT1JfVEFSR0VUKTogTGlrZXdpc2UuCgkoQVJfRkxBR1NfRk9SX1RBUkdFVCk6IExpa2V3aXNlLgoJKEFSX0VYVFJBQ1RfRk9SX1RBUkdFVCk6IExpa2V3aXNlLgoJKEFXSyk6IExpa2V3aXNlLgoJKEJVSUxEX1BSRUZJWCk6IExpa2V3aXNlLgoJKEJVSUxEX1BSRUZJWF8xKTogTGlrZXdpc2UuCgkoREVTVERJUik6IExpa2V3aXNlLgoJKEdDQ19GT1JfVEFSR0VUKTogTGlrZXdpc2UuCgkoSU5DTFVERVMpOiBMaWtld2lzZS4KCShJTlNUQUxMX0RBVEEpOiBMaWtld2lzZS4KCShMSUIxQVNNU1JDKTogTGlrZXdpc2UuCgkoTElCR0NDMl9DRkxBR1MpOiBMaWtld2lzZS4KCShNQUNITU9ERV9IKTogTGlrZXdpc2UuCgkoTk1fRk9SX1RBUkdFVCk6IExpa2V3aXNlLgoJKFJBTkxJQl9GT1JfVEFSR0VUKTogTGlrZXdpc2UuCgkobGlic3ViZGlyKTogTGlrZXdpc2UuCgkoc2xpYmRpcik6IExpa2V3aXNlLgoJKE9SRElOQVJZX0ZMQUdTX1RPX1BBU1MpOiBSZW1vdmUgc3R1ZmYgdGhhdCB3ZSdyZQoJZXhwb3J0aW5nLgoJKGxpYmdjYy5hKTogRG9uJ3QgcGFzcyB0aGVtIGhlcmUuCgkoc3RtcC1tdWx0aWxpYik6IE9yIGhlcmUuCgkoaW5zdGFsbC1saWJnY2MpOiBPciBoZXJlLgoJKGluc3RhbGwtbXVsdGlsaWIpOiBPciBoZXJlLgoJKFBPU1RTVEFHRTFfRkxBR1NfVE9fUEFTUyk6IE9yIGhlcmUuCgkoc3RhZ2UxX2J1aWxkKTogT3IgaGVyZS4KCjIwMDMtMDgtMjYgIEFuZHJlYXMgS3JlYmJlbCA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqbGxndF9zaXNpIiwgIipsbGd0X3Npc2lfc3BsaXQiLCAiKmxsZ3RfZGlkaSIsCgkiKmxsZ3RfZGlkaV9zcGxpdCIsICIqbGxndF9zaWRpIiwgIipsbGd0X3NpZGlfc3BsaXQiKTogTmV3IGluc25zLgoKMjAwMy0wOC0yNiAgQW5kcmVhcyBLcmViYmVsIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipmbWFkZGRmIiwgIipmbXN1YmRmIiwKCSIqZm1hZGRzZiIsICIqZm1zdWJzZiIpOiBOZXcgaW5zbnMuCgoyMDAzLTA4LTI2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCA8TVVMVF9FWFBSPik6IE9wdGltaXplIChDMS9YKSpDMiBpbnRvCgkoQzEqQzIpL1ggd2hlbiB1bnNhZmUgbWF0aCBvcHRpbWl6YXRpb25zIGFyZSBhbGxvd2VkLgoJKGZvbGQgPFJESVZfRVhQUj4pOiBPcHRpbWl6ZSBDMS8oWCpDMikgaW50byAoQzEvQzIpL1ggd2l0aCB1bnNhZmUKCW1hdGggb3B0aW1pemF0aW9ucy4gIE1pbm9yIGNvZGUgY2xlYW4tdXBzLiAgUmVjdXJzaXZlbHkgY2FsbAoJZm9sZCB3aGVuIGNvbnN0cnVjdGluZyBzdWItZXhwcmVzc2lvbnMuCgoyMDAzLTA4LTI2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9iaXRvcCk6IE5ldyBmdW5jdGlvbiB0byBwZXJmb3JtIGNvbnN0YW50Cglmb2xkaW5nIG9mIGZmcywgY2x6LCBjdHosIHBvcGNvdW50IGFuZCBwYXJpdHkgYnVpbHRpbiBmdW5jdGlvbnMKCWFuZCB0aGVpciBsb25nIGFuZCBsb25nIGxvbmcgdmFyaWFudHMgKHN1Y2ggYXMgZmZzbCBhbmQgZmZzbGwpLgoJKGZvbGRfYnVpbHRpbik6IGZvbGRfYnVpbHRpbl9iaXRvcCB3aGVuIGFwcHJvcHJpYXRlLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogSG9ub3IgYm90aAoJQ0xaX0RFRklORURfVkFMVUVfQVRfWkVSTyBhbmQgQ1RaX0RFRklORURfVkFMVUVfQVRfWkVSTyB3aGVuCglldmFsdWF0aW5nIGNseiBhbmQgY3R6IGF0IGNvbXBpbGUtdGltZSwgZm9yIG9wZXJhbmRzIHdpZGVyCgl0aGFuIEhPU1RfV0lERV9JTlQuCgoyMDAzLTA4LTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByKTogRG9uJ3Qgc2V0CglUUkVFX1NJREVfRUZGRUNUUyBoZXJlLgoJKiBleHByLmMgKGVtaXRfYmxvY2tfbW92ZV92aWFfbGliY2FsbCk6IExpa2V3aXNlLgoJKGNsZWFyX3N0b3JhZ2VfdmlhX2xpYmNhbGwpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZCk6IFNldCBUUkVFX1NJREVfRUZGRUNUUyBmb3Igbm9uLWNvbnN0LCBub24tcHVyZQoJQ0FMTF9FWFBScy4KCgkqIGdjc2UuYyAoaXNfdG9vX2V4cGVuc2l2ZSk6IE5ldyBmdW5jdGlvbi4KCShnY3NlX21haW4sIGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzLCBieXBhc3NfanVtcHMpOiBVc2UgaXQuCgoyMDAzLTA4LTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAoaHBwYSotKi1ocHV4MTEqLCBpYTY0Ki0qLWhwdXgqKTogUmVtb3ZlCgljb21tZW50ZWQtb3V0IGxvZ2ljIHRvIHVzZSBEQ0UgdGhyZWFkcyAoaWYgcHJlc2VudCksIGFkZAoJc3VwcG9ydCBmb3IgUE9TSVggdGhyZWFkcy4KCSogY29uZmlnL2lhNjQvaHB1eC5oOiBEZWZpbmUgQ1BQX1NQRUMgdG8gc2V0IGFwcHJvcHJpYXRlCgkjZGVmaW5lcyBmb3IgLXB0aHJlYWQuICBBZGQgLWxwdGhyZWFkIHRvIExJQl9TUEVDIHdoZW4KCS1wdGhyZWFkLiAgSW4gYm90aCBjYXNlcyB0YWtlIC1tdCBhcyBhIHN5bm9ueW0gZm9yIC1wdGhyZWFkCglmb3IgYWNjIGNvbXBhdGliaWxpdHkuCglEZWZpbmUgR1RIUkVBRF9VU0VfV0VBSyB0byAwLgoJKiBjb25maWcvcGEvcGEtaHB1eDExLmg6IExpa2V3aXNlIGZvciBDUFBfU1BFQyBhbmQgTElCX1NQRUMuCglSZW1vdmUgb2xkIGxvZ2ljIGZvciBEQ0UgdGhyZWFkcyBmcm9tIExJQl9TUEVDLgoJKiBjb25maWcvcGEvcGE2NC1ocHV4Lmg6IERlZmluZSBHVEhSRUFEX1VTRV9XRUFLIHRvIDAuCgoyMDAzLTA4LTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6ICBSZWFycmFuZ2Ugc28gdGhhdCB3ZSBvbmx5CglyZXR1cm4gMCBmb3IgaW52YWxpZCBhcmd1bWVudCB0eXBlcy4gIEluc3RlYWQgZHJvcCB0aHJvdWdoIHRvIGEKCWNhbGwgb2YgZXhwYW5kX2NhbGwgYXQgdGhlIGJvdHRvbSBvZiBmdW5jdGlvbi4gIElmIG9wIGlzIFNRUlQsCgl0cnkgYXR0YWNoaW5nIGEgU1FSVCBydHggYXMgdGhlIFJFUV9FUVVBTCBub3RlIG9mIHRoZSBsaWJjYWxsLgoKMjAwMy0wOC0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfdGxzX2FkZHJlc3MpOiBQcm9wZXJseSB0cnVuY2F0ZQoJcmVzdWx0IHdoZW4gb3AwIGlzIFNJbW9kZS4KCjIwMDMtMDgtMjUgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQHR3Y255LnJyLmNvbT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN2cjRfc2lnaGFuZGxlcl90eXBlKTogTmV3IGZpeCwgcG9ydGVkCglmcm9tIGZpeGluYy5zdnI0LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvc2lnbmFsLmg6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBSZS1lbmFibGUgd2lkZW5pbmcgb2YgY29tcGFyaXNvbnMKCXdpdGggbm9uLXBhcmFkb3hpY2FsIHN1YnJlZ3Mgb2Ygbm9uLVJFRyBleHByZXNzaW9ucy4KCjIwMDMtMDgtMjUgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IEhhbmRsZSBSRUdfQUxXQVlTX1JFVFVSTi4KCjIwMDMtMDgtMjUgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBGaXggUlRMIHNoYXJpbmcgYnVnLgoKMjAwMy0wOC0yNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBwcmV0dHktcHJpbnQuaCAocHBfbWF5YmVfbmV3bGluZV9hbmRfaW5kZW50KTogTmV3IG1hY3JvLgoJKiBjLXByZXR0eS1wcmludC5oIChjX3ByZXR0eV9wcmludGVyKTogTm93IHR5cGVkZWYgdG8gdGhlCglzdHJ1Y3R1cmUuICBCZSBjb25zaXN0ZW50IHdpdGggcHJldHR5LXByaW50LmggYWJkIGN4eC1wcmV0dHktcHJpbnQuaAoJKHN0cnVjdCBjX3ByZXR0eV9wcmludF9pbmZvKTogRG9jdW1lbnQuICBBZGQgbmV3IGZpZWxkcy4KCShwcF90eXBlX3NwZWNpZmllcl9zZXEpOiBSZW5hbWUgZnJvbSBwcF9jX3R5cGVfc3BlY2lmaWVyLgoJKHBwX2RpcmVjdF9hYnN0cmFjdF9kZWNsYXJhdG9yKTogTmV3IG1hY3JvLgoJKHBwX3B0cl9vcGVyYXRvcik6IExpa2V3aXNlLgoJKHBwX3NpbXBsZV90eXBlX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKHBwX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9wYXJhbWV0ZXJfbGlzdCk6IFJlbmFtZSBmcm9tIHBwX3BhcmFtZXRlcl9kZWNsYXJhdGlvbi4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY193aGl0ZXNwYWNlKTogTm93IGEgZnVuY3Rpb24uCgkocHBfY19sZWZ0X3BhcmVuKTogTGlrZXdpc2UuCgkocHBfY19yaWdodF9wYXJlbik6IExpa2V3aXNlLgoJKHBwX2NfZG90KTogTGlrZXdpc2UuCgkocHBfY19hbXBlcnNhbmQpOiBMaWtld2lzZS4KCShwcF9jX2Fycm93KTogTGlrZXdpc2UuCgkocHBfY19zZW1pY29sb24pOiBMaWtld2lzZS4KCShwcF9jX3R5cGVfY2FzdCk6IE5ldyBmdW5jdGlvbi4KCShwcF9jX3NwYWNlX2Zvcl9wb2ludGVyX29wZXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19jYWxsX2FyZ3VtZW50X2xpc3QpOiBMaWtld2lzZS4KCShwcF9jX2N2X3F1YWxpZmllcik6IEFkanVzdCBwcm90b3R5cGUuCgkocHBfY190eXBlX3F1YWxpZmllcl9saXN0KTogTGlrZXdpc2UuCgkocHBfY19wb2ludGVyKTogTGlrZXdpc2UuICBIYW5kbGUgUkVGRVJFTkNFX1RZUEUgaGVyZS4KCShwcF9jX3R5cGVfc3BlY2lmaWVyKTogUmVuYW1lIGZyb20gcHBfY19zaW1wbGVfdHlwZV9zcGVjaWZpZXIuCglBZGp1c3QgdG8gZm9sbG93IHN0YW5kYXJkIGdyYW1tYXIuCgkocHBfY19zcGVjaWZpZXJfcXVhbGlmaWVyX2xpc3QpOiBBZGp1c3IgcHJvdG90eXBlLiAgSGFuZGxlCglSRUZFUkVOQ0VfVFlQRS4gIFRpZHkuCgkocHBfY19wYXJhbWV0ZXJfdHlwZV9saXN0KTogQWRqdXN0IHByb3RvdHlwZS4gIFRpZHkuCgkocHBfY19wYXJhbWV0ZXJfZGVjbGFyYXRpb24pOiBSZW1vdmUuCgkocHBfY19hYnN0cmFjdF9kZWNsYXJhdG9yKTogQWRqdXN0IHByb3RvdHlwZS4KCShwcF9jX2RpcmVjdF9hYnN0cmFjdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY190eXBlX2lkKTogTGlrZXdpc2UuCgkocHBfY19zdG9yYWdlX2NsYXNzX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKHBwX2NfZnVuY3Rpb25fc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkocHBfY19kZWNsYXJhdGlvbl9zcGVjaWZpZXJzKTogTGlrZXdpc2UuCgkocHBfY19kaXJlY3RfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2NfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2NfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2NfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShwcF9jX2F0dHJpYnV0ZXMpOiBMaWtld2lzZS4gIFRpZHkuCgkocHBfY19mdW5jdGlvbl9kZWZpbml0aW9uKTogQWRqdXN0IHByb3RvdHlwZS4KCShwcF9jX2NoYXIpOiBMaWtld2lzZS4KCShwcF9jX3N0cmluZ19saXRlcmFsKTogTGlrZXdpc2UuCgkocHBfY19pbnRlZ2VyX2NvbnN0YW50KTogTGlrZXdpc2UuCgkocHBfY19jaGFyYWN0ZXJfY29uc3RhbnQpOiBMaWtld2lzZS4KCShwcF9jX2Jvb2xfY29uc3RhbnQpOiBMaWtld2lzZS4KCShwcF9jX2VudW1lcmF0aW9uX2NvbnN0YW50KTogTGlrZXdpc2UuCgkocHBfY19mbG9hdGluZ19jb25zdGFudCk6IExpa2V3aXNlLgoJKHBwX2NfY29uc3RhbnQpOiBMaWtld2lzZS4KCShwcF9jX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShwcF9jX3ByaW1hcnlfZXhwcmVzc2lvbik6IExpa2V3aXNlLiAgUmVtb3ZlIFRBUkdFVF9FWFBSIGNhc2UuICBUaWR5LgoJKHBwX2NfaW5pdGlhbGl6ZXIpOiBBZGp1c3QgcHJvdG90eXBlLgoJKHBwX2NfaW5pdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19pbml0aWFsaXplcl9saXN0KTogTGlrZXdpc2UuCgkocHBfY19pZF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19wb3N0Zml4X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2V4cHJlc3Npb25fbGlzdCk6IExpa2V3aXNlLgoJKHBwX2NfdW5hcnlfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfY2FzdF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19hZGRpdGl2ZV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19zaGlmdF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19yZWxhdGlvbmFsX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2VxdWFsaXR5X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2FuZF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19leGNsdXNpdmVfb3JfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfaW5jbHVzaXZlX29yX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2xvZ2ljYWxfYW5kX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2xvZ2ljYWxfb3JfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfY29uZGl0aW9uYWxfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfYXNzaWdubWVudF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19leHByZXNzaW9uKTogTGlrZXdpc2UuICBUaWR5LgoJKHBwX2Nfc3RhdGVtZW50KTogTGlrZXdpc2UuICBEb2N1bWVudC4KCShwcF9jX3ByZXR0eV9wcmludGVyX2luaXQpOiBBZGp1c3QgcHJvdG90eXBlLiBUaWR5LgoKCSogYy1sYW5nLmMgKGNfaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IFVwZGF0ZS4KCSogYy1jb21tb24uaCAoc3RyaXBfcG9pbnRlcl9vcGVyYXRvcik6IERlY2xhcmUuCgkqIGMtY29tbW9uLmMgKHN0cmlwX3BvaW50ZXJfb3BlcmF0b3IpOiBEZWZpbmUuCgoyMDAzLTA4LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy84Nzk1CgkqIHRyZWUuaCAoYnVpbGRfbWV0aG9kX3R5cGVfZGlyZWN0bHkpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRlcyk6IEhhbmRsZSBNRVRIT0RfVFlQRXMuCgkodmVjdG9yX3NpemVfaGVscGVyKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGRfbWV0aG9kX3R5cGVfZGlyZWN0bHkpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfbWV0aG9kX3R5cGUpOiBVc2UgaXQuCgoyMDAzLTA4LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYuaTM4Ni5jIChpeDg2X3JldHVybl9pbl9tZW1vcnkpOiBSZWZvcm1hdC4gIFJldHVybiB0cnVlCglmb3IgMTYtYnl0ZSB2ZWN0b3IgbW9kZXMgaWYgc3NlIG5vdCBlbmFibGVkOyB3YXJuIGZvciBhYmkgY2hhbmdlLgoJKGl4ODZfdmFsdWVfcmVnbm8pOiBPbmx5IHJldHVybiB4bW0wIGZvciAxNi1ieXRlIHZlY3RvciB0eXBlcy4KCjIwMDMtMDgtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBydGxhbmFsLmMgKG1heV90cmFwX3ApOiBTaW1wbGlmeSBhbiBpbnRlZ2VyIGNvbXBhcmlzb24uCgoyMDAzLTA4LTI0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKEFBQl9zdnI0X3JlcGxhY2VfYnl0ZW9yZGVyKTogIEVuaGFuY2UKCWNvbW1lbnQuICBFbmFibGUgZm9yIERZTklYL3B0eCBzeXN0ZW1zICh3aGVuIHRoZXkgc3dpdGNoIHRvCglyZWd1bGFyIGZpeGluY2x1ZGVzKS4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDMtMDgtMjMgIEphc29uIEVja2hhcmR0ICA8amxlQHJpY2UuZWR1PgoKCSogY29uZmlnL2k4NjAvdC1pODYwOiBOZXcuCgkqIGNvbmZpZy5nY2MgKGk4NjAtKi1zeXN2NCopOiBBZGQgdC1pODYwIHRvIHRtYWtlX2ZpbGUuCgoyMDAzLTA4LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChwdXNoZGVjbCk6IE9ubHkgcHV0IGRlY2xzIHdoaWNoIGZpbmlzaF9zdHJ1Y3Qgd2lsbCBkbwoJc29tZXRoaW5nIGFib3V0IG9udG8gaW5jb21wbGV0ZSBjaGFpbi4KCShmaW5pc2hfc3RydWN0KTogSWYgbm90IHJlbW92aW5nIHR5cGUgZnJvbSBpbmNvbXBsZXRlCglsaXN0LCB1cGRhdGUgcHJldi4KCjIwMDMtMDgtMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvMTEzNjkKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9jYXJyeV9mbGFnX2NvbXBhcmUpOiBWYWxpZGF0ZSBvcGVyYW5kLgoKCVBSIHRhcmdldC8xMTAzMQoJKiBpMzg2LmMgKGNvbnN0XzBfdG9fM19vcGVyYW5kLCBjb25zdF8wX3RvXzdfb3BlcmFuZCwKCWNvbnN0XzBfdG9fMTVfb3BlcmFuZCwgY29uc3RfMF90b18yNTVfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGVzLgoJKiBpMzg2LmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCB0aGVzZS4KCSogaTM4Ni5jIChwaW5zcncgYW5kIHBleHRydyBwYXR0ZXJucyk6IFVzZSB0aGVtLgoKCVBSIHRhcmdldC8xMDk4NAoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX2Jpbm9wX2J1aWx0aW4pOiBCZWhhdmUgc2FuZWx5IGZvciBWT0lEbW9kZXMuCgoJUFIgdGFyZ2V0Lzg4NjkKCSogZXhwci5jIChjb252ZXJ0X21vZGVzKTogRGVhbCBwcm9wZXJseSB3aXRoIGludGVnZXIgdG8gdmVjdG9yCgljb25zdGFudCBjb252ZXJzaW9uLgoKCVBSIHRhcmdldC84ODcxCgkqIGkzODYubWQgKHplcm9fZXh0ZW5kc2lkaTIqKTogQWRkIE1NWCBhbmQgU1NFIGFsdGVybmF0aXZlcy4KCjIwMDMtMDgtMjMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoTE9BRF9FWFRFTkRfT1ApOiBSZW1vdmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJtb3ZoaSIpOiBOZXcgZXhwYW5kZXI7IG9sZCBpbnNuIHJlbmFtZWQgdG8gLi4uCgkoIiptb3ZoaSIpOiAuLi4gdGhpcy4KCSgibW92cWkiLCAiKm1vdnFpIik6IExpa2V3aXNlLgoJKCJtb3ZxaV82NCIpOiBSZW1vdmUuCgkoIip6ZXJvX2V4dGVuZGhpc2kyXzMxIik6IENoYW5nZSBwcmVkaWNhdGUgdG8gc19vcGVyYW5kLgoKMjAwMy0wOC0yMyAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogRml4IG9idmlvdXMgZXJyb3JzIGluCglhcmd1bWVudHMgdG8gZW1pdF9ncm91cF9zdG9yZS4KCjIwMDMtMDgtMjMgIEphc29uIEVja2hhcmR0ICA8amxlQHJpY2UuZWR1PgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IFJlbW92ZSBjb2RlIHJlbGF0ZWQKCXRvIExJQkdDQ19ORUVEU19ET1VCTEUuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oOiBSZW1vdmUgbWVudGlvbiBvZiBMSUJHQ0NfTkVFRFNfRE9VQkxFLgoJKiBkb2MvdG0udGV4aTogTGlrZXdpc2UuCgkqIHN5c3RlbS5oOiBQb2lzb24gdGhlIExJQkdDQ19ORUVEU19ET1VCTEUgbWFjcm8uCgoyMDAzLTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9saW51eDY0LmggKFNUQVJURklMRV9QUkVGSVhfU1BFQyk6IFJlbW92ZS4KCjIwMDMtMDgtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogSGFuZGxlIG8zMiBhbmQgbzY0CglhcyB3ZWxsLiAgUHV0IG1lbW9yeSByZWZlcmVuY2VzIGluIHRoZSB2YXJhcmdzIGFsaWFzIHNldC4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IFJlbW92ZSB2YXJhcmdzIGhhbmRsaW5nIGZyb20gaGVyZS4KCjIwMDMtMDgtMjMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9leHBhbmRfbW92c3RyLCBzMzkwX2V4cGFuZF9jbHJzdHIsCglzMzkwX2V4cGFuZF9jbXBtZW0sIHMzOTBfb3V0cHV0X2NvbnN0YW50X3Bvb2wsIHMzOTBfYnVpbGRfdmFfbGlzdCwKCXMzOTBfZnVuY3Rpb25fcHJvZmlsZXIsIHMzOTBfb3V0cHV0X21pX3RodW5rKTogVXNlIElTTyBDIHN5bnRheAoJZm9yIGZ1bmN0aW9uIHBvaW50ZXIgY2FsbHMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqbmVnZGkyXzMxIik6IExpa2V3aXNlLgoKMjAwMy0wOC0yMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb21iaW5lLmMgKGFwcGx5X2Rpc3RyaWJ1dGl2ZV9sYXcpOiBDb3JyZWN0IGNvbW1lbnQuCgoyMDAzLTA4LTIzICBKYXNvbiBFY2toYXJkdCAgPGpsZUByaWNlLmVkdT4KCgkqIGNvbmZpZy9pODYwL2k4NjAuaDogUmVtb3ZlIGNvbW1lbnQgbWVudGlvbmluZyBMSUJHQ0NfTkVFRFNfRE9VQkxFLgoKMjAwMy0wOC0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBjb25maWcvaTg2MC9pODYwLmMgKGk4NjBfYnVpbGRfdmFfbGlzdCk6IENyZWF0ZSB0aGUgdmFfZGVjbAoJZGVjbGFyYXRpb24uICBEb2N1bWVudCB0aGUgdmFfbGlzdCBzdHJ1Y3R1cmUuCgkoaTg2MF92YV9zdGFydCk6IEluaXRpYWxpemUgdGhlIHZhX2xpc3Qgc3RydWN0dXJlLgoJKGk4NjBfdmFfYXJnKTogUmV3cml0ZSBjb21wbGV0ZWx5LgoJKiBjb25maWcvaTg2MC9pODYwLmggKExJQkdDQ19ORUVEU19ET1VCTEUpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9pODYwL3ZhcmFyZ3MuYXNtOiBEbyBub3QgYWxsb2NhdGUgb3IgaW5pdGlhbGl6ZQoJYSB2YV9saXN0LiAgUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciBzYXZlIGFyZWEuCgoyMDAzLTA4LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLm1kOiBMaWtld2lzZS4KCjIwMDMtMDgtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmM6IExpa2V3aXNlLgoKMjAwMy0wOC0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBjb25maWcvaTg2MC9pODYwLmMgKG91dHB1dF9tb3ZlX2RvdWJsZSk6IERvbid0IHNldCBsYXRlaGFsZgoJdG8gemVybyBmb3IgQ09OU1RfSU5UIChzaW5jZSBpdCBjb3VsZCBiZSwgZS5nLiwgLTEpLgoKCSogY29uZmlnL2k4NjAvaTg2MC5oIChSRU1TSTNfTElCQ0FMTCk6IFJlcGxhY2UgdGhpcyBtYWNyby4uLgoJKE1PRFNJM19MSUJDQUxMKTogLi4ud2l0aCB0aGlzIG9uZS4KCShVUkVNU0kzX0xJQkNBTEwpOiBSZXBsYWNlIHRoaXMgbWFjcm8uLi4KCShVTU9EU0kzX0xJQkNBTEwpOiAuLi53aXRoIHRoaXMgb25lLgoKMjAwMy0wOC0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBjb25maWcvaTg2MC9pODYwLXByb3Rvcy5oIChvdXRwdXRfZGVsYXlfaW5zbik6IFJlbW92ZSBwcm90b3R5cGUuCgkob3V0cHV0X2RlbGF5ZWRfYnJhbmNoKTogUmVtb3ZlIHByb3RvdHlwZS4KCShzaW5nbGVfaW5zbl9zcmNfcCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGNvbmZpZy9pODYwL2k4NjAuYyAoc2luZ2xlX2luc25fc3JjX3ApOiBSZW1vdmUgZnVuY3Rpb24uCgkob3V0cHV0X2RlbGF5ZWRfYnJhbmNoKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKG91dHB1dF9kZWxheV9pbnNuKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKHZhX3N0YXJ0KTogUmVtb3ZlIHVuY29uZGl0aW9uYWwgdGVzdCBhbmQgZGVhZCBjb2RlLCByZS1mb3JtYXQuCglGaXggY29kaW5nIHN0eWxlIGFuZCBzcGVsbGluZyBwcm9ibGVtcyBpbiB2YXJpb3VzIGNvbW1lbnRzLgoJKiBjb25maWcvaTg2MC9pODYwLm1kIChVTlNQRUNWX0JMT0NLQUdFKTogRGVmaW5lIGNvbnN0YW50Li4uCgkoYmxvY2thZ2UgcGF0dGVybik6IC4uLmFuZCB1c2UgaXQgaGVyZS4KCShhbGwgZGVmaW5lX3BlZXBob2xlIHBhdHRlcm5zIHJlbGF0ZWQgdG8gZGVsYXllZCBicmFuY2hlcyk6IFJlbW92ZS4KCUZpeCBjb2Rpbmcgc3R5bGUgYW5kIHNwZWxsaW5nIHByb2JsZW1zIGluIHZhcmlvdXMgY29tbWVudHMuCgoyMDAzLTA4LTIyICBKYXNvbiBFY2toYXJkdCAgPGpsZUByaWNlLmVkdT4KCgkqIGNvbmZpZy9pODYwL2k4NjAuYzogUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ0dOVSBDQycgd2l0aCAnR0NDJy4KCVJlbW92ZSBhbGwgdXNlcyBvZiB0aGUgUEFSQU1TIG1hY3JvLiAgUmVtb3ZlIHN1cGVyZmxvdXMgcHJvdG90eXBlcy4KCUNvbnZlcnQgYWxsIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZyb20gdHJhZGl0aW9uYWwgdG8gSVNPIEM5MCBzeW50YXguCgkqIGNvbmZpZy9pODYwL2k4NjAtcHJvdG9zLmg6IFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mICdHTlUgQ0MnCgl3aXRoICdHQ0MnLiAgUmVtb3ZlIGFsbCB1c2VzIG9mIHRoZSBQQVJBTVMgbWFjcm8uCgkqIGNvbmZpZy9pODYwL2k4NjAuaDogUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ0dOVSBDQycgd2l0aCAnR0NDJy4KCSogY29uZmlnL2k4NjAvaTg2MC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pODYwL3N5c3Y0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTg2MC92YXJhcmdzLmFzbTogTGlrZXdpc2UuCgoyMDAzLTA4LTIyICBKYXNvbiBFY2toYXJkdCAgPGpsZUByaWNlLmVkdT4KCgkqIGNvbmZpZy9pODYwL2k4NjAtcHJvdG9zLmggKGk4NjBfdmFfc3RhcnQpOiBSZW1vdmUgJ3N0ZGFyZ19wJwoJYXJndW1lbnQuCgkodGRlc2Nfc2VjdGlvbik6IEFkZCBwcm90b3R5cGUuCglVcGRhdGUgY29weXJpZ2h0IGRhdGVzLgoJKiBjb25maWcvaTg2MC9pODYwLmM6IEluY2x1ZGUgY29yZXR5cGVzLmgsIHRtLmgsIGFuZCB0b3BsZXYuaC4KCShUQVJHRVRfQVNNX0ZVTkNUSU9OX1BST0xPR1VFKTogTW92ZSBkZWZpbml0aW9uIHRvIGVuZCBvZiBmaWxlLgoJKFRBUkdFVF9BU01fRlVOQ1RJT05fRVBJTE9HVUUpOiBMaWtld2lzZS4KCSh0YXJnZXRtKTogTGlrZXdpc2UuCgkoaTg2MF9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBTdWJzdGl0dXRlIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDCglmb3IgJyVkJyB3aGVyZSBuZWNlc3NhcnkuCgkoaTg2MF92YV9zdGFydCk6IFJlbW92ZSAnc3RkYXJnX3AnIGFyZ3VtZW50LiAgTWFrZSBjb25kaXRpb25hbCBjaGVja3MKCW9uICdzdGRhcmdfcCcgdW5jb25kaXRpb25hbC4gIERpdmlkZSBjdXJyZW50X2Z1bmN0aW9uX2FyZ3NfaW5mby5pbnRzCglieSBVTklUU19QRVJfV09SRCB3aGVuIHJlZmVyZW5jaW5nIChsaWtld2lzZSBmb3IgLmZsb2F0cykuCgkoSTg2MF9TVlI0X1ZBUkFSR1MpOiBSZW5hbWUuLi4KCShJODYwX1NWUjRfVkFfTElTVCk6IC4uLnRvIHRoaXMuCglDYWxsIGJ1aWxkKCkgd2l0aCAndCcgcmF0aGVyIHRoYW4gJ2ZpZWxkJy4KCShpODYwX3J0eF9jb3N0cyk6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfUlRYX0NPU1RTKTogRGVmaW5lLgoJKGk4NjBfaW50ZXJuYWxfbGFiZWwpOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX0FTTV9JTlRFUk5BTF9MQUJFTCk6IERlZmluZS4KCShpODYwX2ZpbGVfc3RhcnQpOiBOZXcgZnVuY3Rpb24uCglVcGRhdGUgY29weXJpZ2h0IGRhdGVzLgoJKiBjb25maWcvaTg2MC9pODYwLmggKENQUF9QUkVERUZJTkVTKTogUmVtb3ZlLgoJKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lLgoJKEVYUEFORF9CVUlMVElOX1ZBX1NUQVJUKTogUmVtb3ZlICdzdGRhcmcnIGFyZ3VtZW50LgoJKENPTlNUX0NPU1RTKTogUmVtb3ZlIChhbmQgbW92ZSBjb2RlIHRvIGk4NjBfcnR4X2Nvc3RzKS4KCShBU01fRklMRV9TVEFSVCk6IFJlbW92ZS4KCShBU01fRklMRV9TVEFSVF8xKTogUmVtb3ZlLgoJKEFTTV9HTE9CQUxJWkVfTEFCRUwpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCk6IFJlbW92ZS4KCShBU01fT1VUUFVUX0NBU0VfTEFCRUwpOiBSZXBsYWNlIGNhbGwgb2YgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTAoJd2l0aCB0YXJnZXRtLmFzbV9vdXQuaW50ZXJuYWxfbGFiZWwuCglVcGRhdGUgY29weXJpZ2h0IGRhdGVzLgoJKiBjb25maWcvaTg2MC9zeXN2NC5oIChVU0VSX0xBQkVMX1BSRUZJWCk6IERlZmluZS4KCShDUFBfUFJFREVGSU5FUyk6IFJlbW92ZS4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lLgoJKEdMT0JBTF9BU01fT1ApOiBEZWZpbmUuCgkoQVNNX0ZJTEVfU1RBUlQpOiBSZW1vdmUuCgkoVEFSR0VUX0FTTV9GSUxFX1NUQVJUX0ZJTEVfRElSRUNUSVZFKTogRGVmaW5lLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVCk6IERlZmluZS4KCVVwZGF0ZSBjb3B5cmlnaHQgZGF0ZXMuCgoyMDAzLTA4LTIyICBKYXNvbiBFY2toYXJkdCAgPGpsZUByaWNlLmVkdT4KCgkqIGdjYy9jb25maWcuZ2NjIChpODYwLSotc3lzdjQqKTogQWRkIHRhcmdldC4KCSogY29uZmlnL2k4NjAvaTg2MC1wcm90b3MuaDogTmV3LgoJKiBjb25maWcvaTg2MC9pODYwLmM6IE5ldy4KCSogY29uZmlnL2k4NjAvaTg2MC5oOiBOZXcuCgkqIGNvbmZpZy9pODYwL2k4NjAubWQ6IE5ldy4KCSogY29uZmlnL2k4NjAvc3lzdjQuaDogTmV3LgoJKiBjb25maWcvaTg2MC92YXJhcmdzLmFzbTogTmV3LgoJKiBjb25maWcvaTg2MC94LXN5c3Y0OiBOZXcuCgoyMDAzLTA4LTIyICBKYXNvbiBFY2toYXJkdCAgPGpsZUByaWNlLmVkdT4KCgkqIGNvbmZpZy9wYS9wYS5jOiBSZXBsYWNlICdHTlUgQ0MnIHdpdGggJ0dDQycuCglSZW1vdmUgYWxsIHVzZXMgb2YgUEFSQU1TIG1hY3JvLgoJQ29udmVydCBhbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnMgdG8gSVNPIEM5MCBzeW50YXguCgkqIGNvbmZpZy9wYS9lbGYuaDogUmVwbGFjZSAnR05VIENDJyB3aXRoICdHQ0MnLgoJKiBjb25maWcvcGEvZnB0ci5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL2xpYjJmdW5jcy5hc206IExpa2V3aXNlLgoJKiBjb25maWcvcGEvbG9uZ19kb3VibGUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9taWxsaTY0LlM6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtNjQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS1ocHV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtaHB1eDEwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtaHB1eDExLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtbGludXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtb3NmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtcHJvLWVuZC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhMzItbGludXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYTY0LWxpbnV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGE2NC1ocHV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGE2NC1yZWdzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcXVhZGxpYi5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3J0ZW1zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtcHJvdG9zLmg6IFJlcGxhY2UgJ0dOVSBDQycgd2l0aCAnR0NDJyBhbmQgcmVtb3ZlCglhbGwgdXNlcyBvZiB0aGUgUEFSQU1TIG1hY3JvLgoJKiBjb25maWcvcGEvcGEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9zb20uaDogTGlrZXdpc2UuCgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5jOiBSZXBsYWNlICdHTlUgQ0MnIHdpdGggJ0dDQycuCglSZW1vdmUgYWxsIHVzZXMgb2YgUEFSQU1TIG1hY3JvLgoJQ29udmVydCBhbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnMgdG8gSVNPIEM5MCBzeW50YXguCgkqIGNvbmZpZy9pcTIwMDAtcHJvdG9zLmg6IFJlcGxhY2UgJ0dOVSBDQycgd2l0aCAnR0NDJy4KCVJlbW92ZSBhbGwgdXNlcyBvZiBQQVJBTVMgbWFjcm8uCgkqIGNvbmZpZy9pcTIwMDAuaDogUmVtb3ZlIGFsbCB1c2VzIG9mIFBBUkFNUyBtYWNyby4KCSogY29uZmlnL2lxMjAwMC9pcTIwMDAubWQ6IFJlcGxhY2UgJ0dOVSBDQycgd2l0aCAnR0NDJy4KCjIwMDMtMDgtMjMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfb3V0cHV0X3Bvb2xfZW50cnkpOiBEZWNsYXJlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKGdlbl9jb25zdHRhYmxlKTogUmVtb3ZlLgoJKHMzOTBfZHVtcF9wb29sKTogVXNlIFVOU1BFQ1ZfUE9PTF9FTlRSWSBmb3IgcG9vbCBlbnRyeSBpbnNucy4KCShzMzkwX291dHB1dF9wb29sX2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChVTlNQRUNWX1BPT0xfUUksIFVOU1BFQ1ZfUE9PTF9ISSwKCVVOU1BFQ1ZfUE9PTF9TSSwgVU5TUEVDVl9QT09MX0RJLCBVTlNQRUNWX1BPT0xfVEksCglVTlNQRUNWX1BPT0xfU0YsIFVOU1BFQ1ZfUE9PTF9ERik6IFJlbW92ZSwgcmVwbGFjZSBieSAuLi4KCShVTlNQRUNWX1BPT0xfRU5UUlkpOiAuLi4gdGhpcyBuZXcgY29uc3RhbnQuCgkoImNvbnN0dGFibGVfcWkiLCAiY29uc3R0YWJsZV9oaSIsICJjb25zdHRhYmxlX3NpIiwgImNvbnN0dGFibGVfZGkiLAoJImNvbnN0dGFibGVfdGkiLCAiY29uc3R0YWJsZV9zZiIsICJjb25zdHRhYmxlX2RmIik6IFJlbW92ZSAuLi4KCSgiKnBvb2xfZW50cnkiKTogLi4uIGFuZCByZXBsYWNlIGJ5IHRoaXMgbmV3IGluc24uCgkoImxpdGVyYWxfcG9vbF8zMSIpOiBEbyBub3QgZW1pdCBhbmNob3IgbGFiZWwgaWYgcG9vbCBlbXB0eS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgc2F2ZV9yZXR1cm5fYWRkcl9wLgoJKHMzOTBfb3B0aW1pemVfcHJvbG9nKTogU2F2ZSBSRVRVUk5fUkVHTlVNIGlmIHNhdmVfcmV0dXJuX2FkZHJfcC4KCShzMzkwX2ZpeHVwX2Nsb2JiZXJlZF9yZXR1cm5fcmVnKTogUmVtb3ZlLgoJKHMzOTBfcmVvcmcpOiBEb24ndCBjYWxsIHMzOTBfZml4dXBfY2xvYmJlcmVkX3JldHVybl9yZWcuCgkoczM5MF9yZXR1cm5fYWRkcl9ydHgpOiBBbHdheXMgcmV0cmlldmUgcmV0dXJuIGFkZHJlc3MgZnJvbSBzYXZlIGFyZWEKCXNsb3QuICBVc2Ugc2F2ZV9yZXR1cm5fYWRkcl9wIHRvIGZvcmNlIHNsb3QgdG8gYmUgZmlsbGVkLgoJKHMzOTBfZW1pdF9wcm9sb2d1ZSk6IFJlbW92ZSBoYXNfaGFyZF9yZWdfaW5pdGlhbF92YWwgdGVzdC4KCjIwMDMtMDgtMjIgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1BU0tfRklYX1NCMSwgVEFSR0VUX0ZJWF9TQjEpOiBOZXcgZGVmaW5lcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1maXgtc2IxIGFuZCAtbW5vLWZpeC1zYjEuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGRpdmRmMywgZGl2c2YzLCBzcXJ0ZGYyLCBzcXJ0c2YyKTogV29yawoJYXJvdW5kIFNCLTEgZXJyYXRhIGlmIFRBUkdFVF9GSVhfU0IxIGlzIHNldC4KCShyZWNpcC5kIGluc24sIHJlY2lwLnMgaW5zbiwgcnNxcnQuZCBpbnNuLCByc3FydC5zIGluc24pOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBNSVBTIC1tZml4LXNiMSBhbmQgLW1uby1maXgtc2IxLgoKMjAwMy0wOC0yMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBoYXNodGFibGUuYyAoaHRfZXhwYW5kKTogQXZvaWQgY2FsY3VsYXRpbmcgcmVoYXNoIGZvciB0aGUgY29tbW9uCgljYXNlIHRoYXQgdGhlIGZpcnN0IHByb2JlIGhpdHMgYW4gZW1wdHkgaGFzaCB0YWJsZSBzbG90LgoKMjAwMy0wOC0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2hwdXguaCAoU1VQUE9SVFNfSU5JVF9QUklPUklUWSk6IERlZmluZSB0byAwLgoKMjAwMy0wOC0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKCpwdHJfZXh0ZW5kX3BsdXNfMSk6IFJlbmFtZSB0byAuLi4KCShwdHJfZXh0ZW5kX3BsdXNfaW1tKTogLi4uIHRoaXMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoYWRkcDRfb3B0aW1pemVfb2spOiBEbyBub3QgZGlzYWJsZSBhZGRwNAoJb3B0aW1pemF0aW9uIGluIEMrKy4KCShpYTY0X291dHB1dF9taV90aHVuayk6IFN1cHBvcnQgSUxQMzIgbW9kZS4KCjIwMDMtMDgtMjIgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGdjYy9jb25maWcvbTY4ay9tNjhrLmMgKG02OGtfY29mZl9hc21fbmFtZWRfc2VjdGlvbik6IHJlbW92ZSB1bnVzZWQKCWZ1bmN0aW9uLgoJKiBnY2MvY29uZmlnL202OGsvbTY4ay5jICgtbTY4a19zdnIzX2FzbV9vdXRfY29uc3RydWN0b3IpOiBsaWtld2lzZS4KCjIwMDMtMDgtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGNvbnN0X2ludF8xX29wZXJhbmQpOiBTaW1wbGlmeSBhbgoJaW50ZWdlciBjb21wYXJpc29uLgoKMjAwMy0wOC0yMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9mcC1iaXQuYzogU3BlY2lmeSBjb25maWcvIGRpciBmb3IgaW5jbHVkZSBvZiBmcC1iaXQuaC4KCSogY29uZmlnL3JzNjAwMC9wcGM2NC1mcC5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjZmdjbGVhbnVwLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogb3B0YWJzLmM6IExpa2V3aXNlLgoJKiByYS1idWlsZC5jOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jOiBMaWtld2lzZS4KCSogdHJlZS5oOiBMaWtld2lzZS4KCjIwMDMtMDgtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWRlY2wuYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY2ZncnRsLmM6IExpa2V3aXNlLgoJKiBjb21iaW5lLmM6IExpa2V3aXNlLgoJKiBjb252ZXJ0LmM6IExpa2V3aXNlLgoJKiBkb21pbmFuY2UuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogTGlrZXdpc2UuCgkqIGV4cG1lZC5jOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCSogZ2Nvdi5jOiBMaWtld2lzZS4KCSogZ2VuYXR0cnRhYi5jOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jOiBMaWtld2lzZS4KCSogcmVnbW92ZS5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidWlsdGluLWF0dHJzLmRlZjogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogYy1wcmV0dHktcHJpbnQuYzogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuaDogTGlrZXdpc2UuCgkqIGxhbmdob29rcy5oOiBMaWtld2lzZS4KCSogcmVjb2cuYzogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jOiBMaWtld2lzZS4KCSogdHJlZS5kZWY6IExpa2V3aXNlLgoKMjAwMy0wOC0yMiAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaDogQ29udmVydCB0byBJU08gQzkwLgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IExpa2V3aXNlLgoKMjAwMy0wOC0yMSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoJICAgIFBhdWwgRGFsZSAgPHBhdWxpQHNuYXBnZWFyLmNvbT4KCSAgICBQZXRlciBCYXJhZGEgPHBldGVyQGJhcmFkYXMub3JnPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX3J0eF9jb3N0cyk6IEFkanVzdCBtdWwvZGl2IGNvc3RzIGZvcgoJQ29sZEZpcmUgY29yZXMuCgoyMDAzLTA4LTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKElOQ0xVREVTKTogUmVtb3ZlIC1JJChzcmNkaXIpL2NvbmZpZy4KCSogY29uZmlnLmdjYyAoKi0qLW9wZW5ic2QpOiBEb24ndCBzZXQgdG1fZmlsZS4KCShhbHBoYSotKi1vcGVuYnNkLCBhcm0qLSotY29mZiosIGFybSotd2luY2UtcGUqLAoJYXJtLSotcGUqLCBhdnItKi0qLCBoODMwMC0qLXJ0ZW1zKiwgaDgzMDAtKi1lbGYqLAoJaDgzMDAtKi0qLCBocHBhKi0qLW9zZiosIGhwcGEqLSotYnNkKiwgaHBwYSotKi1ocHV4KiwKCWkzNzAtKi1vcGVuZWQqLCBpMzcwLSotbXZzKiwgaTM3MC0qLWxpbnV4KiwgaT84Ni0qLW9wZW5ic2QqLAoJaT84Ni0qLWx5bnhvcywgaT84Ni0qLW50by1xbngqLCBpcTIwMDAqLSotZWxmKiwgbTY4MDAwLWhwLWhwdXgqLAoJbTY4ay1ocC1ocHV4KiwgbTY4ay0qLWFvdXQqLCBtNjhrLSotY29mZiosIG02ODAyMC0qLWVsZiosCgltNjhrLSotZWxmKiwgbTY4ayotKi1uZXRic2QqLCBtNjhrKi0qLW9wZW5ic2QqLCBtNjhrLSotc3lzdjQqLAoJbTY4ay0qLWxpbnV4KiwgbTY4ay0qLXJ0ZW1zKiwgbWNvcmUtKi1wZSosIG1pcHMqLSotbmV0YnNkKiwKCW1pcHMqLSotb3BlbmJzZCosIHJzNjAwMC0qLWx5bnhvcyosIHNoKi0qLWVsZiosIHNoKi0qLWthLAoJc2gtKi1ydGVtc2VsZiwgc3BhcmMtKi1vcGVuYnNkKiwgc3Ryb25nYXJtLSotcGUsIHZheC0qLW9wZW5ic2QqLAoJeHNjYWxlLSotY29mZik6IFVzZSBleHBsaWNpdCBhbmQgY29tcGxldGUgbGlzdHMgb2YgdGFyZ2V0IGhlYWRlcnMKCXRvIGluY2x1ZGUuICBNb3ZlIGRlZmluaXRpb25zIHRvIHRtX2RlZmluZXMgd2hlcmUgYXBwcm9wcmlhdGUuCgkoaHBwYSotKi1vcGVuYnNkKiwgcG93ZXJwYy0qLW9wZW5ic2QqKTogQ29tbWVudCBvdXQgc3RhbnphIGZvcgoJbm90LXlldC1jb250cmlidXRlZCBjb25maWd1cmF0aW9uLgoKCSogY29uZmlnL2x5bnguaCwgY29uZmlnL2FscGhhL29wZW5ic2QuaCwgY29uZmlnL2FybS9jb2ZmLmgKCSogY29uZmlnL2F2ci9hdnIuaCwgY29uZmlnL2Zydi9mcnYuaCwgY29uZmlnL2g4MzAwL2VsZi5oCgkqIGNvbmZpZy9pMzcwL2xpbnV4LmgsIGNvbmZpZy9pMzcwL212cy5oLCBjb25maWcvaTM3MC9vZS5oCgkqIGNvbmZpZy9pMzg2L250by5oLCBjb25maWcvaXEyMDAwL2lxMjAwMC5oLAoJKiBjb25maWcvbTY4ay9jb2ZmLmgsIGNvbmZpZy9tNjhrL2hwMzEwLmgsIGNvbmZpZy9tNjhrL2hwMzIwLmgKCSogY29uZmlnL202OGsvbGludXguaCwgY29uZmlnL202OGsvbTY4ay1hb3V0LmgKCSogY29uZmlnL202OGsvbTY4ay1ub25lLmgsIGNvbmZpZy9tNjhrL202OGt2NC5oCgkqIGNvbmZpZy9tNjhrL25ldGJzZC5oLCBjb25maWcvbTY4ay9vcGVuYnNkLmgKCSogY29uZmlnL202OGsvc2dzLmgsIGNvbmZpZy9tY29yZS9tY29yZS1wZS5oLAoJKiBjb25maWcvbWlwcy9uZXRic2QuaCwgY29uZmlnL21pcHMvb3BlbmJzZC5oLCBjb25maWcvcGEvcGEuaCwKCSogY29uZmlnL3JzNjAwMC9seW54LmgsIGNvbmZpZy9zaC9lbWJlZC1lbGYuaCwgY29uZmlnL3NwYXJjL29wZW5ic2QuaDoKCVJlbW92ZSBpbmNsdWRlcyBvZiBvdGhlciB0YXJnZXQgY29uZmlnIGhlYWRlcnMsIGFuZAoJZGVmaW5pdGlvbnMgb2YgbWFjcm9zIG1vdmVkIHRvIHRtX2RlZmluZXMgbGlzdHMuICBBZGQgI3VuZGVmcwoJd2hlcmUgbm93IG5lY2Vzc2FyeSB0byBwcmV2ZW50IHJlZGVmaW5pdGlvbiB3YXJuaW5ncy4KCgkqIGNvbmZpZy9oODMwMC9jb2ZmLmg6IE5ldyBmaWxlIHNwbGl0IG91dCBvZi4uLgoJKiBjb25maWcvaDgzMDAvZWxmLmg6IC4uLmhlcmUuCgkqIGNvbmZpZy9tNjhrL2hwMzIwYmFzZS5oOiBOZXcgZmlsZSBzcGxpdCBvdXQgb2YuLi4KCSogY29uZmlnL202OGsvaHAzMjAuaDogLi4uaGVyZS4KCSogY29uZmlnL3JzNjAwMC9seW54YmFzZS5oOiBOZXcgZmlsZSBzcGxpdCBvdXQgb2YuLi4KCSogY29uZmlnL3JzNjAwMC9seW54Lmg6IC4uLmhlcmUuCgoJKiBjb25maWcvbTY4ay9ocDMxMGcuaCwgY29uZmlnL202OGsvaHAzMjBnLmgsIGNvbmZpZy9tNjhrL2hwdXg3LmgKCSogY29uZmlnL202OGsvbTY4ay1jb2ZmLmgsIGNvbmZpZy9taXBzL29wZW5ic2QtYmUuaDogRGVsZXRlIGZpbGUuCgoJKiBjb25maWcvc29sMi5oOiBSZW1vdmUgI2lmIDAtZWQgI2luY2x1ZGUgb2Ygc3lzL21tYW4uaC4KCSogY29uZmlnL202OGsvbTY4a2VsZi5oOiBSZW1vdmUgY29tbWVudGVkIG91dCAjaW5jbHVkZSBvZiBtNjhrL3Nncy5oLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaDogRG9uJ3QgaW5jbHVkZSBod2ludC5oIG5vciBtYWNobW9kZS5oLgoJUmVtb3ZlIHVubmVjZXNzYXJ5ICNpZm5kZWYuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaDogUHJlZml4ICNpbmNsdWRlIG9mIHMzOTAvZml4ZGZkaS5oCglbdW5kZXIgSU5fTElCR0NDMl0gd2l0aCBjb25maWcvLgoKMjAwMy0wOC0yMSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBjcHBmaWxlcy5jIChzdGFja19maWxlKTogIENvcnJlY3RseSBwYXNzIHJldHVybl9hdF9lb2YgcGFyYW1ldGVyCgl0byBjcHBfcHVzaF9idWZmZXIuCgkqIGNwcGxleC5jIChfY3BwX2dldF9mcmVzaF9saW5lKTogIERvbid0IGJ1ZmZlci0+cHJldiAtIGhhbmRsZWQKCWJ5IHJldHVybl9hdF9lb2YgY2hlY2suICBBbHdheXMgY2FsbCBfY3BwX3BvcF9idWZmZXIgYXQgZW5kLgoKMjAwMy0wOC0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiB0YXJnZXQvMTE4MDUKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICh0d28gYW5vbnltb3VzIHBhdHRlcm5zKTogUmVtb3ZlLgoKMjAwMy0wOC0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNVVNUX1BBU1NfSU5fU1RBQ0spOiBSZW1vdmUgQkxLbW9kZSBjbGF1c2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogTmV2ZXIgcmV0dXJuCgl0cnVlIGZvciBuMzIgJiBuNjQuCgoyMDAzLTA4LTIxICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGaXggYnVnIGluIChBICYgQykgPT0gRCB3aGVyZSBEICYgfkMgIT0gMAoJYW5kIHNpbWlsYXJseSBpbiAoQSB8IEMpID09IEQgd2hlcmUgQyAmIH5EICE9IDAuCgoyMDAzLTA4LTIwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiA4MTgwCgkqIGNvbmZpZ3VyZS5pbjogV2hlbiB0ZXN0aW5nIHdpdGhfbGlicyBhbmQgd2l0aF9oZWFkZXJzLCB0cmVhdAoJJ25vJyBhcyB1bnNldC4gIEJhc2VkIG9uIGEgcGF0Y2ggYnkgRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDgtMjAgIFBldGVyIEJhcmFkYSA8cGV0ZXJAYmFyYWRhcy5vcmc+CgoJKiBsb25nbG9uZy5oICh1bXVsX3BwbW0pOiBBZGQgQ29sZEZpcmUgc3VwcG9ydC4KCjIwMDMtMDgtMjAgIFBldGVyIEJhcmFkYSA8cGV0ZXJAYmFyYWRhcy5vcmc+CgkgICAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay1ub25lLmg6IEludHJvZHVjZSBuZXcgQ29sZEZpcmUgYXJjaHMuCgkqIGNvbmZpZy9tNjhrL202OGsuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL2xiMXNmNjguYXNtOiBSZW5hbWUgX19tY2Y1MjAwX18gdG8gX19tY29sZGZpcmVfXy4KCSogY29uZmlnL202OGsvY29mZi5oOiBSZW5hbWUgVEFSR0VUXzUyMDAgdG8gVEFSR0VUX0NPTERGSVJFLgoJKiBjb25maWcvbTY4ay9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5jOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGtlbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL3QtbTY4a2VsZjogQWRkIG11bHRpbGliIHRhcmdldHMgZm9yIG5ldyBDb2xkRmlyZSBhcmNocy4KCjIwMDMtMDgtMjAgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYzogU3RyaXAgYXdheSBjb2RlIGRlcGVuZGluZyBvbiBOT19BRERTVUJfUSBkZWZpbml0aW9uLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBMaWtld2lzZS4KCjIwMDMtMDgtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgamF2YS8xMTk5NgoJUmV2ZXJ0IHRoaXMgY2hhbmdlOgoJMjAwMy0wOC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCSogYy1jb21tb24uYyAoY19jb21tb25fc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBDb3JyZWN0bHkgaGFuZGxlCgl0eXBlcyB3aXRoIHByZWNpc2lvbnMgb3RoZXIgdGhhbiB0aG9zZSBnaXZlbiBieSBuYXRpdmUgbWFjaGluZQoJbW9kZXMuCgoyMDAzLTA4LTIwICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChhbm9ueW1vdXMgZGVmaW5lX2luc24pOiByZW1vdmUgb2Jzb2xldGUgY29kZQoJc2VsZWN0ZWQgYnkgRlNHTE1VTF9VU0VfUyBhbmQgRlNHTERJVl9VU0VfUwoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG91dHB1dF9tb3ZlX2hpbW9kZSk6IHJlbW92ZSBTR1NfTk9fTEkgY2hlY2sKCSogY29uZmlnL202OGsvbTY4ay5tZCAoYW5vbnltb3VzIGRlZmluZV9pbnNuKTogTGlrZXdpc2UKCSogY29uZmlnL202OGsvbTY4ay5tZCAoYW5vbnltb3VzIGRlZmluZV9pbnNuKTogcmVtb3ZlIElTSV9PViBjaGVjawoJKiBjb25maWcvbTY4ay9tNjhrLmMgKHN0YW5kYXJkXzY4ODgxX2NvbnN0YW50X3ApOiByZW1vdmUgb2Jzb2xldGUKCWNvZGUgc2VsZWN0ZWQgYnkgTk9fQVNNX0ZNT1ZFQ1IKCjIwMDMtMDgtMjAgIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAob3V0cHV0X21vdmVfY29uc3RfaW50b19kYXRhX3JlZywKCW91dHB1dF9tb3ZlX2hpbW9kZSk6IHVuaWZ5IE1PVE9ST0xBL01JVCBoYW5kbGluZyBvZiBtb3ZlcQoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChtb3ZzaV9jb25zdDAsIGFub255bW91cyBkZWZpbmVfaW5zbik6CglMaWtld2lzZQoKMjAwMy0wOC0yMCAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IHVzZSAlVSBpbgoJbGFiZWwgbmFtZQoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogcmVwbGFjZQoJSE9TVF9XSURFX0lOVF9QUklOVF9ERUMgd2l0aCAld2QKCjIwMDMtMDgtMjAgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKEFTTV9PVVRQVVRfTUFYX1NLSVBfQUxJR04pOiBIYW5kbGUKCXJlZGVmaW5lIHdhcm5pbmcuCgoyMDAzLTA4LTIwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzExOTg0CgkqIGZvbGQtY29uc3QuYyAoZm9sZCA8UExVU19FWFBSPik6IENoZWNrIGZvciBpbnRlZ2VyIGNvbnN0YW50CglvcGVyYW5kcyBiZWZvcmUgY2FsbGluZyB0cmVlX2ludF9jc3RfbHQgd2hlbiBwZXJmb3JtaW5nIGFzc29jaWF0aXZlCgl0cmFuc2Zvcm1hdGlvbnMuCgoyMDAzLTA4LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAoSVNfRVhQUl9DT0RFX0NMQVNTKTogQWxzbyBpbmNsdWRlICdyJyBhbmQgJ3MnLgoJKEVYUFJfQ0hFQ0spOiBEb24ndCBjaGVjayBmb3IgJ3InIG9yICdzJyBpZiB3ZSdyZQoJY2hlY2tpbmcgSVNfRVhQUl9DT0RFX0NMQVNTLgoJKiBjYWxscy5jIChjYWxsc19mdW5jdGlvbl8xKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGl0ZXJhdGl2ZV9oYXNoX2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYyAod2Fsa190cmVlLCBjb3B5X3RyZWVfcik6IExpa2V3aXNlLgoKMjAwMy0wOC0yMCAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9taV90aHVuayk6IGRlbGV0ZSBvYnNvbGV0ZSBjb2RlCglkZXBlbmRpbmcgb24gTU9UT1JPTEFfQlNSCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKGFub255bW91cyBkZWZpbmVfaW5zbik6IExpa2V3aXNlCgoyMDAzLTA4LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IFVzZSBnZXRfY2FsbGVlX2ZuZGVjbC4KCShleHBhbmRfYnVpbHRpbl9tYXRoZm4yLCBleHBhbmRfYnVpbHRpbiwgYnVpbHRpbl9tYXRoZm5fY29kZSwKCWZvbGRfdHJ1bmNfdHJhbnNwYXJlbnRfbWF0aGZuLCBmb2xkX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogZG9qdW1wLmMgKGRvX2p1bXApOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3AsIGZvbGQpOiBMaWtld2lzZS4KCSh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IExpa2V3aXNlLgoKCSogc3Rvci1sYXlvdXQuYyAoZG9fdHlwZV9hbGlnbik6IE9ubHkgY29weSBERUNMX1VTRVJfQUxJR04gZnJvbQoJVFlQRV9VU0VSX0FMSUdOIGZvciBGSUVMRF9ERUNMcy4KCgkqIGF0dHJpYnMuYyAoZGVjbF9hdHRyaWJ1dGVzKTogUmVidWlsZCB0aGUgZnVuY3Rpb24gcG9pbnRlciB0eXBlIGFmdGVyCgljaGFuZ2luZyB0aGUgdGFyZ2V0IHR5cGUuCgkqIHRyZWUuYyAoZ2V0X3F1YWxpZmllZF90eXBlKTogQWxzbyBjaGVjayB0aGF0IHRoZSBhdHRyaWJ1dGVzIG1hdGNoLgoKMjAwMy0wOC0xOSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKFNUQUdFU1RVRkYpOiBNb3ZlIGNjMW9iaiQoZXhlZXh0KSBmcm9tIGhlcmUgLi4uCgkqIG9iamMvY29uZmlnLWxhbmcuaW4gKHN0YWdlc3R1ZmYpOiAuLi4gdG8gaGVyZS4KCjIwMDMtMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzExOTQ2CgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogVXNlIENPTlZFUlRfRVhQUiAoaW5zdGVhZCBvZgoJTk9QX0VYUFIpIHdoZW4gbmVjZXNzYXJ5LgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9zaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6IENvcnJlY3RseSBoYW5kbGUKCXR5cGVzIHdpdGggcHJlY2lzaW9ucyBvdGhlciB0aGFuIHRob3NlIGdpdmVuIGJ5IG5hdGl2ZSBtYWNoaW5lCgltb2Rlcy4KCjIwMDMtMDgtMTkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY3BwcGNoLmMgKGNwcF92YWxpZF9zdGF0ZSk6IFJlLWFkZCB3YXJuaW5nIGFib3V0IFBDSCBub3QgdXNlZAoJYmVjYXVzZSBzb21lIG1hY3JvIGlzIGRlZmluZWQuCgoJKiBjb25maWcvZGFyd2luLmggKExJTktfQ09NTUFORF9TUEVDKTogQWRkIC1hcmNoIGFuZCAtYXJjaF9vbmx5CglvcHRpb25zLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoQVNNX1NQRUMpOiBOZXcuCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChBU01fU1BFQyk6IE5ldy4KCShTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBOZXcuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3Qgc2V0IENST1NTIG9yIFNZU1RFTV9IRUFERVJfRElSIHdoZW4gYnVpbGRpbmcKCWEgY3Jvc3MtY29tcGlsZXIgYmV0d2VlbiB0d28gZGlmZmVyZW50IHByb2Nlc3NvcnMgb24gRGFyd2luLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnVpbHRpbnMuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGMtY29tbW9uLmM6IExpa2V3aXNlLgoJKiBjLWRlY2wuYzogTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50LmM6IExpa2V3aXNlLgoJKiBjZmdidWlsZC5jOiBMaWtld2lzZS4KCSogY2ZnbGF5b3V0LmM6IExpa2V3aXNlLgoJKiBjZmdsb29wYW5hbC5jOiBMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jOiBMaWtld2lzZS4KCSogY3BwZmlsZXMuYzogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoJKiBnZ2MtcGFnZS5jOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYzogTGlrZXdpc2UuCgkqIHByZXR0eS1wcmludC5jOiBMaWtld2lzZS4KCSogdHJlZS5jOiBMaWtld2lzZS4KCSogdHJlZS5oOiBMaWtld2lzZS4KCSogdmFsdWUtcHJvZi5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWRlY2wuYzogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBjcHBmaWxlcy5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWNvbW1vbi5jOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjLWNvbW1vbi5oOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjcHBpbml0LmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuaDogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmM6IExpa2V3aXNlLgoJKiBpbnB1dC5oOiBMaWtld2lzZS4KCSogbGluZS1tYXAuaDogTGlrZXdpc2UuCgkqIG9wdHMuYzogTGlrZXdpc2UuCgkqIG9wdHMuaDogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMTkgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogdW53aW5kLWMuYzogQWRkIGxpYmdjYy1zdHlsZSBleGNlcHRpb24uCgkqIHVud2luZC1kdzIuYzogTGlrZXdpc2UuCgkqIHVud2luZC1wZS5oOiBMaWtld2lzZS4KCSogdW53aW5kLXNqbGouYzogTGlrZXdpc2UuCgkqIHVud2luZC5pbmM6IExpa2V3aXNlLgoKMjAwMy0wOC0xOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYy81NTgyIFBSIGMrKy8xMDUzOAoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9kZWNsX3VuaW5pdCk6IERlY2xhcmUuCgkoTEFOR19IT09LU19ERUNMX1VOSU5JVCk6IE5ldyBtYWNyby4KCShMQU5HX0hPT0tTX0lOSVRJQUxJWkVSKTogQWRqdXN0LgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3MpOiBBZGQgbmV3IGZpZWxkCglkZWNsX3VuaW5pdC4KCSogbGFuZ2hvb2tzLmMgKGxoZF9kZWNsX3VuaW5pdCk6IERlZmluZS4KCSogYy1jb21tb24uYyAoY19kZWNsX3VuaW5pdF8xKTogTmV3IGZ1bmN0aW9uLgoJKGNfZGVjbF91bmluaXQpOiBOZXcgZnVuY3Rpb24uCgkod2Fybl9pbml0X3NlbGYpOiBEZWZpbmUuCgkqIGMtY29tbW9uLmggKGNfZGVjbF91bmluaXQpOiBEZWNsYXJlLgoJKHdhcm5faW5pdF9zZWxmKTogRGVjbGFyZS4KCSogYy5vcHQ6IEludHJvZHVjZSAtV2luaXQtc2VsZi4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb25zKTogU2V0IHdhcm5faW5pdF9zZWxmLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19ERUNMX1VOSU5JVCk6IERlZmluZS4KCSogb2JqYy9vYmpjLWxhbmcuYyAgKExBTkdfSE9PS1NfREVDTF9VTklOSVQpOiBEZWZpbmUuCgkqIGZ1bmN0aW9uLmMgKHVuaW5pdGlhbGl6ZWRfdmFyc193YXJuaW5nKTogQ2FsbCB0aGUgbGFuZ3VhZ2UgaG9vay4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtV2luaXQtc2VsZi4KCjIwMDMtMDgtMTkgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBBZGp1c3QgU0ktbW9kZSAidHJhcF9pZiIgaW5zdHJ1Y3Rpb24KCXRvIHVzZSBiZXR0ZXIgcHJlZGljYXRlcyBhbmQgY29uc3RyYWludHMuICBEZWZpbmUgbmV3CglpbnN0cnVjdGlvbiB0byBoYW5kbGUgInRyYXBfaWYiIHdpdGggREktbW9kZSBhcmd1bWVudHMuCgkoY29uZGl0aW9uYWxfdHJhcCk6IEZBSUwgaWYgdHJhcCBjb2RlIGlzIG5vdCAwLgoKMjAwMy0wOC0xOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGxlZ2l0aW1hdGVfcGljX2FkZHJlc3NfZGlzcF9wKTogQ2hhbmdlIHRoZQoJc3Ryc3RyIHdpdGggJHBiIHRvIGEgc3RyY29tcGFyZSB3aXRoICI8cGljIGJhc2U+IgoJKGl4ODZfb3V0cHV0X2FkZHJfZGlmZl9lbHQpOiBPdXRwdXQgdGhlIHJlYWwgcGljIGJhc2UuCgoyMDAzLTA4LTE5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19JTklUSUFMSVpFX0RJQUdOT1NUSUNTKTogRml4IHNwZWxsaW5nLgoJKExBTkdfSE9PS1NfSU5JVElBTElaRVIpOiBDb3JyZWN0LgoJKiBjLWxhbmcuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoY2dyYXBoX21hcmtfbmVlZGVkX25vZGUpOiBDYWxsIG5vdGljZV9nbG9iYWxfc3ltYm9sLgoJKGNncmFwaF92YXJwb29sX21hcmtfbmVlZGVkX25vZGUpOiBMaWtld2lzZS4KCSogY2dyYXBoLmggKG5vdGljZV9nbG9iYWxfc3ltYm9sKTogRGVjbGFyZQoJKiB2YXJhc20uYyAobm90aWNlX2dsb2JhbF9zeW1ib2wpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShhc3NlbWJsZV9zdGFydF9mdW5jdGlvbik6IC4uLiBoZXJlOyB1cGRhdGUgZm9yIHZhcmlhYmxlcy4KCShhc3NlbWJsZV92YXJpYWJsZSk6IFVzZSBub3RpY2VfZ2xvYmFsX3N5bWJvbC4KCjIwMDMtMDgtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc192YV9hcmcpOiBJZiBFQUJJX0ZMT0FUX1ZBUkFSR1NfUCwKCWV4cGVjdCBTRm1vZGUgYW5kIERGbW9kZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIEZQUnMsCglyZWdhcmRsZXNzIG9mIHRoZSB1bmRlcmx5aW5nIHR5cGUuCgoyMDAzLTA4LTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzExOTI0CgkqIGNvbmZpZy9taXBzL21pcHMuYyAoSU5URVJOQUxfU1lNQk9MX1ApOiBOZXcgbWFjcm8uCgkobWlwc19jbGFzc2lmeV9zeW1ib2wsIG0xNl91c3ltOF80LCBtMTZfdXN5bTVfNCk6IFVzZSBpdC4KCjIwMDMtMDgtMTggIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCglQUiBjLzExMjA3CgkqIGMtdHlwZWNrLmMgKHNldF9pbml0X2luZGV4KTogQ2hlY2sgZm9yIG5lZ2F0aXZlIGluZGV4LgoKMjAwMy0wOC0xOCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvY3J0aS5hc20gKF9pbml0LCBfZmluaSk6IEFkZCBhbHRlcm5hdGUgY29kZSBmb3IgbmV3CgljYWxsMCBBQkkuCgkqIGNvbmZpZy94dGVuc2EvY3J0bi5hc20gKF9pbml0LCBfZmluaSk6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL2xpYjFmdW5jcy5hc20gKF9fbXVsc2kzLCBfX3VkaXZzaTMsIF9fZGl2c2kzLAoJX191bW9kc2kzLCBfX21vZHNpMyk6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL3QteHRlbnNhIChjcnRpLm8sIGNydG4ubyk6IEFkZCAkKEdDQ19DRkxBR1MpIGFuZAoJJChJTkNMVURFUykuCgoyMDAzLTA4LTE4ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoIipuYWJzc2YyX2dwciIpOiBOZXcuCgoyMDAzLTA4LTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBRdW90ZSBDIGNvZGUgaW4gYnJhY2VzLiAgUmVtb3ZlIHVzZSBvZgoJZmFrZSBjb25zdDBfcnR4IG9wZXJhbmRzLiAgUmVtb3ZlIGRvdWJsZSBiYWNrc2xhc2hlcy4gIFVzZSBcOy4KCVJlbW92ZSB3b3JrYXJvdW5kcyBmb3IgYm9ndXMgd2FybmluZ3MuCgoyMDAzLTA4LTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChtdWxkZjMsIG11bHNmMyk6IERvbid0IGNhbGwgYSBnZW5fKiBmdW5jdGlvbi4KCShtdWxkZjNfaW50ZXJuYWwsIG11bGRmM19yNDMwMCk6IFNlbGVjdCBiYXNlZCBvbiBUQVJHRVRfNDMwMF9NVUxfRklYCglyYXRoZXIgdGhhbiBUQVJHRVRfTUlQUzQzMDAuCgkobXVsc2YzX2ludGVybmFsLCBtdWxzZjNfcjQzMDApOiBMaWtld2lzZS4KCjIwMDMtMDgtMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFJlbnVtYmVyIHVuc3BlY3MuICBDbGVhbiB1cCBjb21tZW50cy4KCjIwMDMtMDgtMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKGFzc29jaWF0aXZlX2NvbnN0YW50X3ApOiBOZXcgZnVuY3Rpb24gdG8gdGVzdAoJd2hldGhlciBhbiBSVFggZXhwcmVzc2lvbiBpcyBhbiBpbW1lZGlhdGUgY29uc3RhbnQuCgkoc2ltcGxpZnlfYXNzb2NpYXRpdmVfb3BlcmF0aW9uKTogTmV3IGZ1bmN0aW9uIHRvIHBlcmZvcm0gc29tZQoJcmVhc3NvY2lhdGlvbiBvcHRpbWl6YXRpb25zIG9mIGFzc29jaWF0aXZlIGJpbmFyeSBleHByZXNzaW9ucy4KCShzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKTogVXNlIHNpbXBsaWZ5X2Fzc29jaWF0aXZlX29wZXJhdGlvbgoJdG8gc2ltcGxpZnkgUExVUywgTVVMVCwgQU5ELCBJT1IsIFhPUiwgU01JTiwgU01BWCwgVU1JTiBhbmQgVU1BWC4KCUZsb2F0aW5nIHBvaW50IGV4cHJlc3Npb25zIGFyZSBvbmx5IHJlYXNzb2NpYXRlZCB3aGVuIHVuc2FmZQoJbWF0aCBvcHRpbWl6YXRpb25zIGFyZSBwZXJtaXR0ZWQuCgoyMDAzLTA4LTE3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQ6IFJlbW92ZSB1c2FnZSBvZiBQQVJBTVMuCgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaDogQ29udmVydCBLJlIgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBjb25maWcvaTM4Ni9pMzg2LWludGVyaXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3dpbm50LmM6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9jeWd3aW4yLmM6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLmM6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLWMuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLmg6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jOiBMaWtld3NlCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LWMuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYzogQ29udmVydCB0byBJU08gQy4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaDogRG9uJ3QgdXNlIHRoZSBQQVJBTVMgbWFjcm8uCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMTYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzExNTEyCgkqIHN0bXQuYyAoZXhwYW5kX2V4cHJfc3RtdF92YWx1ZSk6IERvbid0IHdhcm4gYWJvdXQgYW55IHZvaWQKCXR5cGVkIGV4cHJlc3Npb24uCgoyMDAzLTA4LTE2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZm50eXBlX3JlZ3Bhcm0pOiBSZW5hbWUgZnJvbSAuLi4KCShpeDg2X2Z1bmN0aW9uX3JlZ3Bhcm0pOiAuLi4gdGhpcyBvbmU7IGFkZCBmYXN0Y2FsbCBhbmQgbG9jYWwKCWZ1bmN0aW9ucy4KCShpeDg2X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogVXBkYXRlLgoJKGl4ODZfcmV0dXJuX3BvcHNfYXJncyk6IExpa2V3aXNlLgoJKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogTGlrZXdpc2UuCgkoeDg2X2Nhbl9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmcpOiBGaXggZm9ybWF0aW5nLgoJKHg4Nl90aGlzX3BhcmFtZXRlcik6IEZpeCBmYXN0Y2FsbC4KCSh4ODZfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgoJKiBjZ3JhcGguYyAoY2dyYXBoX21hcmtfbmVlZGVkX25vZGUpOiBEbyBub3QgbWFyayBmdW5jdGlvbnMgd2l0aG91dAoJYm9keSBhcyByZWFjaGFibGU7IG1hcmsgbmVzdGVkIGZ1bmN0aW9ucyBhcyBuZWVkZWQgdG9vLgoJKGR1bXBfY2dyYXBoKTogRG8gbm90IG91dHB1dCBnbG9iYWwuY2FsbHMuCgkqIGNncmFwaC5oIChjZ3JhcGhfZ2xvYmFsX2luZm8pOiBLaWxsLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IEVucXVldWUgbmVlZGVkIGZ1bmN0aW9ucy4KCShyZWNvcmRfY2FsbF8xKTogU3BlZWR1cC4KCShjZ3JhcGhfYW5hbHl6ZV9mdW5jdGlvbik6IEJyZWFrIG91dCBmcm9tIC4uLjsgY29tcHV0ZSBpbmxpbmluZwoJcGFyYW1ldGVycy4KCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCk6IC4uLiBoZXJlLgoJKGNncmFwaF9tYXJrX2lubGluZSk6IEtpbGwgY29tcHV0YXRpb24gb2YgY2FsbHMuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZyk6IERvIG5vdCBjb21wdXRlIG1vc3Qgb2YgaW5pdGlhbCB2YWx1ZXMuCgoyMDAzLTA4LTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobmVnYXRlX2V4cHJfcCk6IE1VTFRfRVhQUnMgYW5kIFJESVZfRVhQUnMgYXJlIGVhc3kKCXRvIG5lZ2F0ZSBpZiBlaXRoZXIgb3BlcmFuZCBpcyBlYXN5IHRvIG5lZ2F0ZSwgaWYgd2UgZG9uJ3QgY2FyZQoJYWJvdXQgc2lnbi1kZXBlbmRlbnQgcm91bmRpbmcuCgkobmVnYXRlX2V4cHIpOiBNYWtlIHRoZSBsb2dpYyB0byBuZWdhdGUgYSBSRUFMX0NTVCBleHBsaWNpdC4KCUF0dGVtcHQgdG8gbmVnYXRlIGEgTVVMVF9FWFBSIG9yIFJESVZfRVhQUiBieSBuZWdhdGluZyBhbiBvcGVyYW5kCgl0aGF0J3MgZWFzeSB0byBuZWdhdGUsIGlmIHdlIGRvbid0IGhvbm9yIHNpZ24tZGVwZW5kZW50IHJvdW5kaW5nLgoJKGZvbGQgPE1VTFRfRVhQUj4pOiBPcHRpbWl6ZSAtQSAqIEIgYXMgQSAqIC1CIGlmIEIgaXMgZWFzeSB0bwoJbmVnYXRlLCBhbmQgdGhlIHN5bW1ldHJpYyBBICogLUIgYXMgLUEgKiBCIGlmIEEgaXMgZWFzeSB0byBuZWdhdGUuCgkoZm9sZCA8UkRJVl9FWFBSPik6IExpa2V3aXNlLCBvcHRpbWl6ZSAtQS9CIGFuZCBDLy1EIGFzIEEvLUIgYW5kCgktQy9EIGlmIEIgYW5kIEMgYXJlIGNoZWFwIHRvIG5lZ2F0ZS4gIEFkZCBhbiBleHBsaWNpdCBydWxlIHRvCglvcHRpbWl6ZSBYLy0xLjAgYXMgLVggd2hlbiB3ZSBkb24ndCBjYXJlIGFib3V0IHNpZ25hbGluZyBOYU5zLgoKMjAwMy0wOC0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0bV9maWxlKTogUmVuYW1lIHRtX2luY2x1ZGVfbGlzdC4KCSh0bV9wX2ZpbGUpOiBSZW5hbWUgdG1fcF9pbmNsdWRlX2xpc3QuCgkoYnVpbGRfeG1fZmlsZSk6IFJlbmFtZSBidWlsZF94bV9pbmNsdWRlX2xpc3QuCgkoaG9zdF94bV9maWxlKTogUmVuYW1lIGhvc3RfeG1faW5jbHVkZV9saXN0LgoJKHhtX2ZpbGUpOiBSZW5hbWUgeG1faW5jbHVkZV9saXN0LgoJKHhtX2ZpbGVfbGlzdCk6IEFkZCB0byBiZSBzdWJzdGl0dXRlZC4KCShjcy1jb25maWcuaCwgY3MtYmNvbmZpZy5oLCBjcy10Y29uZmlnLmgsIGNzLXRtLmgsIGNzLXRtX3AuaCk6CglVcGRhdGUgdG8gbWF0Y2guCgkoYnQtbG9hZC5vKTogQWRkIG1pc3NpbmcgZGVwZW5kZW5jeSBvbiAkKFRNX0gpLgoJKiBjb25maWd1cmUuaW46IFByZWZpeCB2YWx1ZSBvZiBFWFRSQV9NT0RFU19GSUxFIHdpdGggY29uZmlnLy4KCUZvciBlYWNoIG9mIHRtX2ZpbGUsIHRtX3BfZmlsZSwgeG1fZmlsZSwgaG9zdF94bV9maWxlLCBhbmQKCWJ1aWxkX3htX2ZpbGUsIGdlbmVyYXRlIGJvdGggKl9maWxlX2xpc3QgYW5kICpfaW5jbHVkZV9saXN0Cgl2YWx1ZXMgZnJvbSBpdC4gICh4bV9maWxlX2xpc3Qgd2FzIGZvcm1lcmx5IG5vdCBiZWluZyBnZW5lcmF0ZWQuKQoJSW4gKl9pbmNsdWRlX2xpc3QsIHByZWZpeCB0aGUgbmFtZXMgb2YgYWxsIGhlYWRlcnMgZm91bmQgaW4KCSQoc3JjZGlyKS9jb25maWcgd2l0aCBjb25maWcvLiAgSW4gZWFjaCBsb29wLCBjb25zaWRlciBvbmx5Cgl0aGUgc3BlY2lhbCBjYXNlIGZpbGVzIHRoYXQgY2FuIGFjdHVhbGx5IGFwcGVhciBpbiB0aGF0IGxpc3QuCglBQ19TVUJTVCBhbGwgKl9maWxlX2xpc3QgYW5kIGFsbCAqX2luY2x1ZGVfbGlzdCB2YXJpYWJsZXM7IGRvCglub3QgQUNfU1VCU1QgdGhlIHBsYWluICpfZmlsZSB2YXJpYWJsZXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDgtMTQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZy5jIChkdW1wX2VkZ2VfaW5mbyk6IEFkZCBuYW1lIG9mIGxvb3BfZXhpdCBlZGdlIGZsYWcuCgoyMDAzLTA4LTE0ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAocGFfYWRqdXN0X2luc25fbGVuZ3RoKTogRGVsZXRlIGFkanVzdG1lbnQgZm9yIGRlbGF5IHNsb3QgaW4KCWRpcmVjdCBjYWxscy4KCShhdHRyX2xlbmd0aF9jYWxsKTogSW5jbHVkZSBpdCBoZXJlLiAgSW1wcm92ZSBsZW5ndGggZXN0aW1hdGUgZm9yCglsb2NhbCBjYWxscy4KCShvdXRwdXRfY2FsbCk6IFVzZSB0YXJnZXRtLmJpbmRzX2xvY2FsX3AuCgoyMDAzLTA4LTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChDQVNFX01BVEhGTik6IE5ldyBoZWxwZXIgbWFjcm8uCgkobWF0aGZuX2J1aWx0X2luKTogU2ltcGxpZnkgYW5kIHNvcnQuCgoJKiBwcm90b2l6ZS5jIChzdWJzdHIpOiBEZWxldGUsIGNhbGxlcnMgY2hhbmdlZCB0byBgc3Ryc3RyJy4KCjIwMDMtMDgtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjIChpcTIwMDAqLSotZWxmKik6IERvbid0IHNldCB4bV9maWxlLgoJKiBjb25maWcvaXEyMDAwL3htLWlxMjAwMC5oOiBEZWxldGUgZmlsZS4KCjIwMDMtMDgtMTMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2VuZ3R5cGUuYyAod2Fsa190eXBlKTogUHJvY2VzcyBhIHN1Ym9iamVjdCBiZWZvcmUgcHJvY2Vzc2luZwoJdGhlIHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gdGhlIHN1Ym9iamVjdC4KCjIwMDMtMDgtMTMgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogcmVnY2xhc3MuYyAoaW5pdF9yZWdfbW9kZXMpOiAgTWFrZSBub24tc3RhdGljLgoJUmVuYW1lIHRvIGluaXRfcmVnX21vZGVzX29uY2UgcGVyIG5ldyBuYW1pbmcgY29udmVudGlvbi4KCShpbml0X3JlZ3MpOiAgRG9uJ3QgY2FsbCBpbml0X3JlZ19tb2RlcyBoZXJlLgoJKiBlbWl0LXJ0bC5jIChpbml0X2VtaXRfb25jZSk6ICBDYWxsIGluaXRfcmVnX21vZGVzX29uY2UgaGVyZSBpbnN0ZWFkLgoJKiBydGwuaCAoaW5pdF9yZWdfbW9kZXNfb25jZSk6ICBOZXcgZGVjbGFyYXRpb24uCgkqIHRvcGxldi5jIChiYWNrZW5kX2luaXQpOiAgQ2FsbCBpbml0X3JlZ3MgYWZ0ZXIgaW5pdF9lbWl0X29uY2UuCgoyMDAzLTA4LTEzICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9saW51eC5oIChEQlhfUkVHSVNURVJfTlVNQkVSKTogRGVmaW5lIHNvIHRvIG1hcCBhCglzcGVjaWFsIGluZGV4IGZvciBNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IgdG8gaXRzZWxmLgoKMjAwMy0wOC0xMyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5jIChzaF9nZXRfcHJfaW5pdGlhbF92YWwpOiBBbHdheXMgd3JhcCBpbiB1bnNwZWMgZm9yIFRBUkdFVF9TSDEuCgkqIHNoLm1kIChsb2FkX3JhKTogQ2hhbmdlIGluc24gcHJlZGljYXRlIHRvIFRBUkdFVF9TSDEuCgoyMDAzLTA4LTEzICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoY3Ryc2ksIGN0cmRpKTogIFJlZW5hYmxlCgloYW5kbGluZyBvZiBkZWNyZW1lbnQtYW5kLWJyYW5jaCBmYXJ0aGVyIHRoYW4gMzIgYml0cy4KCjIwMDMtMDgtMTIgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogY29uZmlndXJlLmluIChtYWtlX2NvbXBhcmVfdGFyZ2V0KTogTW92ZSB0ZXN0IHRvIC4uLgoJKiBhY2xvY2FsLm00IChnY2NfQUNfUFJPR19DTVBfSUdOT1JFX0lOSVRJQUwpOiBoZXJlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9pcmlzNi5oOiBDb252ZXJ0IHRvIEM5MCBwcm90b3R5cGVzLgoJKiBjb25maWcvbWlwcy9pcml4Ni1saWJjLWNvbXBhdC5jOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTEyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCglmaXhpbmMvaW5jbGhhY2suZGVmIChzdnI0X2tybmwpOiBSZW5hbWUgZnJvbSBzdnI0X2tlcm5lbC4gIEVuYWJsZQoJZm9yIHNlbGVjdGVkIG1hY2hpbmVzLiAgQ29tbWVudCBoZWF2aWx5LgoJZml4aW5jL2ZpeGluY2wueDogUmVidWlsZC4KCWZpeGluYy90ZXN0cy9iYXNlL2ZzL3Jmcy9yZl9jYWNoZS5oOiBOZXcgZmlsZS4KCjIwMDMtMDgtMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaDogVHdlYWsgdmFyaW91cyBjb21tZW50cy4KCSogY29uZmlnL21pcHMvbWlwcy5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMTEgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHR1bGlwdHJlZS5vcmc+CgoJUFIgb3B0aW1pemF0aW9uLzExMzE5CglQUiB0YXJnZXQvMTAwMjEKCSogYWxpYXMuYyAoZmluZF9iYXNlX3ZhbHVlLCBjYXNlIFJFRyk6IFJldHVybiAwIG5vdCBzcmMgaWYgbm8gYmFzZQoJZm91bmQuCgoyMDAzLTA4LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnY3NlLmMgKGdtYWxsb2MpOiBGaXggbGFzdCBjaGFuZ2UuCgoyMDAzLTA4LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKTogUmVwbGFjZSBjYWxscyB0bwoJZ2VuX3J0eF9ORUcgYW5kIGdlbl9ydHhfTk9UIHdpdGggY2FsbHMgdG8gc2ltcGxpZnlfZ2VuX3VuYXJ5LAoJYW5kIGNhbGxzIHRvIGdlbl9ydHhfUExVUywgZ2VuX3J0eF9NVUxULCBnZW5fcnR4X0xTSElGVFJULAoJZ2VuX3J0eF9BU0hJRlQgYW5kIGdlbl9ydHhfQU5EIHdpdGggY2FsbHMgdG8gc2ltcGxpZnlfZ2VuX2JpbmFyeS4KCjIwMDMtMDgtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IElmIGFuIEFCU19FWFBSIGhhcyBhIGNvbXBsZXggdHlwZSwgYWJvcnQuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQ09NUExFWF9UWVBFIGlzIG5vdCBhIHZhbGlkCgl0eXBlY29kZSBmb3IgYW4gQUJTX0VYUFIuCgoJKiBkb2MvYy10cmVlLnRleGk6IERvY3VtZW50IEFCU19FWFBSLgoKMjAwMy0wOC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBPcHRpbWl6ZSBhbnkgYXNzb2NpYXRpdmUgZmxvYXRpbmcgcG9pbnQKCW9wZXJhdG9yIHdpdGggLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25zLCBub3QganVzdCBNVUxUX0VYUFIuCgoyMDAzLTA4LTExICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChfX3VkaXZkaTMpOiBBZGQgLnR5cGUgYW5kIC5zaXplCglpbmZvcm1hdGlvbiBpbiBTSG1lZGlhIGNhc2UgdG9vLgoJKF9fZGl2ZGkzLCBfX3Vtb2RkaTMsIF9fbW9kZGkzLCBfX2luaXRfdHJhbXBvbGluZSwgX19pY19pbnZhbGlkYXRlKToKCUxpa2V3aXNlLgoJKF9fc2V0X2Zwc2NyKTogVXNlIGFuIGFjY2VzcyB2aWEgR09UIGZvciBQSUMgY2FzZS4KCjIwMDMtMDgtMTEgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogY29uZmlndXJlLmluIChpbnRlcm1vZHVsZSk6IE1ha2Ugc3dpdGNoIHRlc3QgbW9yZSBwb3J0YWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOC0xMSAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY2xlYW5zdHJhcCk6IFBhc3MgQk9PVF9DRkxBR1MgdG8gYm9vdHN0cmFwLgoJKHJlc3RyYXApOiBMaWtld2lzZS4KCjIwMDMtMDgtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdjc2UuYyAoZ21hbGxvYyk6IEFyZ3VtZW50IGlzIGEgc2l6ZV90LiAgQWRkIEFUVFJJQlVURV9NQUxMT0MuCgkoZ3JlYWxsb2MpOiBTaXplIGFyZ3VtZW50IGlzIGEgc2l6ZV90LgoJKGdjYWxsb2MpOiBOZXcgZnVuY3Rpb24uICBVc2UgdGhyb3VnaG91dCBpbiBsaWV1IG9mCglnbWFsbG9jL21lbXNldC4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9pbml0X29uY2UpOiBVc2UgeGNhbGxvYyBpbiBsaWV1IG9mCgl4bWFsbG9jL21lbXNldC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3Jlb3JnKTogTGlrZXdpc2UuCgkqIGNvbmZsaWN0LmMgKGNvbmZsaWN0X2dyYXBoX25ldyk6IExpa2V3aXNlLgoJKiBmaXhpbmMvZml4aW5jbC5jIChydW5fY29tcGlsZXMpOiBMaWtld2lzZS4KCSogZ2VuYXR0cnRhYi5jIChvcHRpbWl6ZV9hdHRycyk6IExpa2V3aXNlLgoJKiBnZW5yZWNvZy5jIChuZXdfZGVjaXNpb24pOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfYmxvY2spOiBMaWtld2lzZS4KCSogaGFzaHRhYmxlLmMgKGh0X2NyZWF0ZSk6IExpa2V3aXNlLgoKMjAwMy0wOC0xMSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvbGliMmZ1bmNzLlM6IEZpeCB3aGl0ZXNwYWNlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5tZCAoYWxsIGluc25zIGFuZCBleHBhbmRlcnMpOiBVc2UgYnJhY2UgYmxvY2sKCXN5bnRheCB3aGVyZSBhcHByb3ByaWF0ZS4gIFJlbW92ZSB1bm5lY2Vzc2FyeSBiYWNrc2xhc2ggZXNjYXBlcy4KCVJlZm9ybWF0IGNvbW1lbnRzIGFuZCBmaXggc29tZSBjb2RlIGZvcm1hdHRpbmcuCgkoZXh0ZW5kcWlzaTIpOiBSZWFycmFuZ2UgY29uZGl0aW9uYWwuCgkoKmJ0cnVlLCAqYmZhbHNlLCAqdWJ0cnVlLCAqdWJmYWxzZSwgKmJpdHRydWUsICpiaXRmYWxzZSwgKm1hc2t0cnVlLAoJKm1hc2tmYWxzZSwgbW92c2ljY19pbnRlcm5hbDAsIG1vdnNmY2NfaW50ZXJuYWwwKTogQ2FsbCBhYm9ydCBpbnN0ZWFkCglvZiBmYXRhbF9pbnNuLgoKMjAwMy0wOC0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jOiBWYXJpb3VzIGZvcm1hdHRpbmcgZml4ZXMuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFJlc3luYyAtbXR1bmUgaGFuZGxpbmcgd2l0aCBnYXMuCgkobWlwc19pc3N1ZV9yYXRlKTogUmVhcnJhbmdlIGxpa2UgbWlwc191c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZS4KCSogY29uZmlnL21pcHMvbWlwcy5oOiBNb3JlIGZvcm1hdHRpbmcgZml4ZXMuCgkobWlwc19hYmkpOiBNb3ZlIGRlY2xhcmF0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChleGNlcHRpb25fcmVjZWl2ZXIpOiBBZGQgbW9kZSB0bwoJdW5zcGVjX3ZvbGF0aWxlLgoKMjAwMy0wOC0xMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoc3BlX2luaXRfYnVpbHRpbnMpOiBIYW5kbGUgZXZzcGxhdGkgYW5kCglldnNwbGF0ZmkgaGVyZS4KCShiZGVzY18xYXJnKTogUmVtb3ZlIGV2c3BsYXRpIGFuZCBldnNwbGF0ZmkuCgoyMDAzLTA4LTExICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGR3YXJmMmFzbS5jIChkdzJfb3V0cHV0X2luZGlyZWN0X2NvbnN0YW50XzEpOiBUYWtlIHVzZXJfbGFiZWxfcHJlZml4CglpbnRvIGFjY291bnQuCgoyMDAzLTA4LTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJjYXQpOiBPcHRpbWl6ZSBjb25zdGFudCBzdHJpbmdzLgoKMjAwMy0wOC0xMCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBwcmV0dHktcHJpbnQuYyAocHBfYmFzZV9pbmRlbnQpOiBSZW5hbWUgZnJvbSBwcF9pbmRlbnQuCgkqIGMtcHJldHR5LXByaW50LmggKHBwX2NfcHJldHR5X3ByaW50X2ZsYWcpczogTmV3IGRhdGF0eXBlLgoJKHN0cnVjdCBjX3ByZXR0eV9wcmludF9pbmZvKTogQWRkIG1vcmUgZmllbGRzLgoJKHBwX2NfbGVmdF9wYXJlbik6IE1vdmUgdG8gYy1wcmV0dHktcHJpbnQuYy4KCShwcF9jX3JpZ2h0X3BhcmVuKTogTGlrZXdpc2UuCgkocHBfY19sZWZ0X2JyYWNlKTogTGlrZXdpc2UuCgkocHBfY19yaWdodF9icmFjZSk6IExpa2V3aXNlLgoJKHBwX2NfbGVmdF9icmFja2V0KTogTGlrZXdpc2UuCgkocHBfY19yaWdodF9icmFja2V0KTogTGlrZXdpc2UuCgkocHBfY19kZWNsYXJhdG9yKTogRGVjbGFyZS4KCShwcF9jX2RpcmVjdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19zcGVjaWZpZXJfcXVhbGlmaWVyX2xpc3QpOiBMaWtld2lzZS4KCShwcF9jX3R5cGVfaWQpOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19jdl9xdWFsaWZpZXIpOiBDaGFuZ2UgcHJvb3R5cGUuIFJld29yay4uCgkocHBfY190eXBlX3F1YWxpZmllcl9saXN0KTogTmV3LgoJKHBwX2NfcG9pbnRlcik6IExpa2V3aXNlLgoJKHBwX2NfcGFyYW1ldGVyX3R5cGVfbGlzdCk6IExpa2V3aXNlLgoJKHBwX2NfZnVuY3Rpb25fZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKHBwX2NfaWRfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2Nfc2ltcGxlX3R5cGVfc3BlY2lmaWVyKTogVGlkeS4KCShwcF9jX3VuYXJ5X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX3ByZXR0eV9wcmludGVyX2luaXQpOiBMaWtld2lzZS4KCShwcF9jX3NwZWNpZmllcl9xdWFsaWZpZXJfbGlzdCk6IFJld29yay4uCgkocHBfY19hYnN0cmFjdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19wb3N0Zml4X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX3ByaW1hcnlfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfY2FzdF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19kaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2Nfc3RvcmFnZV9jbGFzc19zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShwcF9jX2Z1bmN0aW9uX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKHBwX2NfZGVjbGFyYXRpb25fc3BlY2lmaWVycyk6IExpa2V3aXNlLgoJKHBwX2NfZGlyZWN0X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShwcF9jX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShwcF9jX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkocHBfY19zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShwcF9jX2ludGVnZXJfY29uc3RhbnQpOiBSZW5hbWUgZnJvbSBwcF9jX2ludGVnZXJfbGl0ZXJhbC4KCShwcF9jX2NoYXJhY3Rlcl9jb25zdGFudCk6IFJlbmFtZSBmcm9tIHBwX2NfY2hhcmFjdGVyX2xpdGVyYWwuCgkocHBfY19ib29sX2NvbnN0YW50KTogUmVuYW1lIGZyb20gcHBfY19ib29sX2xpdGVyYWwuCgkocHBfY19lbnVtZXJhdGlvbl9jb25zdGFudCk6IFJlbmFtZSBmcm9tIHBwX2NfZW51bWVyYXRvci4KCShwcF9jX2Zsb2F0aW5nX2NvbnN0YW50KTogUmVuYW1lIGZyb20gcHBfY19yZWFsX2xpdGVyYWwuCgkocHBfY19jb25zdGFudCk6IFJlbmFtZSBmcm9tIHBwX2NfbGl0ZXJhbC4KCSogYy1sYW5nLmM6IEluY2x1ZGUgZGlhZ25vc3RpYy5oIGFuZCBjLXByZXR0eS1wcmludC5oCgkoTEFOR19IT09LU19JTklUSUFMSVpFX0RJQUdOT1NUSVRDUyk6IERlZmluZS4KCShjX2luaXRpYWxpemVfZGlhZ25vc3RpY3MpOiBOZXcuCgkqIE1ha2VmaWxlLmluIChjLWxhbmcubyk6IFVwZGF0ZSBkZXBlbmRlbmN5LgoKMjAwMy0wOC0xMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGRpZ2VzdF9pbml0KTogQWRkIGNvbnZlcnNpb24gZm9yIFZFQ1RPUl9UWVBFcy4KCjIwMDMtMDgtMTAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19ub19taXBzMTZfc3RyaW5nKTogUmVtb3ZlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBEb24ndCBoYW5kbGUgLW1pcHMxNiBhcyBwYXJ0IG9mIC1taXBzTi4KCSogY29uZmlnL21pcHMvbWlwcy5oIChtaXBzX25vX21pcHMxNl9zdHJpbmcpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1taXBzMTYgYW5kIC1tbm8tbWlwczE2IGVudHJpZXMuCgkoVEFSR0VUX09QVElPTlMpOiBSZW1vdmUgLW1uby1taXBzMTYuCgoyMDAzLTA4LTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChjb3Byb2Nlc3Nvcl9vcGVyYW5kKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGNvcHJvY2Vzc29yMl9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoU1RBQl9DT0RFX1RZUEUpOiBSZW1vdmUuCgkobG9va3VwX25hbWUpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoYWJvcnRfd2l0aF9pbnNuKTogUmVtb3ZlLiAgUmVwbGFjZSBhbGwgdXNlcyB3aXRoIGZhdGFsX2luc24uCgkobWlwczE2LCBtaXBzX2FiaWNhbGxzKTogUmVtb3ZlLgoJKG1pcHNfY2hhcl90b19jbGFzcyk6IFJlbW92ZSBpbml0aWFsaXNlcjogYWxsIGVudHJpZXMgYXJlIE5PX1JFR1MuCgkoYXJpdGgzMl9vcGVyYW5kLCBsYXJnZV9pbnQsIHRydWVfcmVnX29yXzBfb3BlcmFuZCk6IFJlbW92ZS4KCShjb3Byb2Nlc3Nvcl9vcGVyYW5kLCBjb3Byb2Nlc3NvcjJfb3BlcmFuZCk6IFJlbW92ZS4KCShvdmVycmlkZV9vcHRpb25zKTogRG9uJ3Qgc2V0IG1pcHMxNiBvciBtaXBzX2FiaWNhbGxzLgoJKHByaW50X29wZXJhbmQpOiBEb24ndCBleHBlY3QgU0lHTl9FWFRFTkQgb3BlcmFuZHMuCgkobWlwc19zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogTGlrZXdpc2UuCgkobWlwc19vdXRwdXRfY29uZGl0aW9uYWxfYnJhbmNoKTogUmVtb3ZlIGRpc2FibGVkIGxvbmctYnJhbmNoIGNvZGUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoY2FsbF91c2VkX3JlZ3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkobWF5X2NhbGxfYWxsb2NhKTogTGlrZXdpc2UuCgkobWlwc19jcHVfYXR0ciwgbWlwc19hYmljYWxsc190eXBlLCBtaXBzX2FiaWNhbGxzX2F0dHIpOiBSZW1vdmUuCgkobWlwc19hYmljYWxscywgbWlwczE2KTogUmVtb3ZlIGRlY2xhcmF0aW9ucy4KCShBU01fRklOQUxfU1BFQywgTElCX1NQRUMpOiBSZW1vdmUuCgkoQ0MxX1NQRUMpOiBSZW1vdmUgb3V0ZGF0ZWQgY29tbWVudC4KCShNSVBTX1ZFUlNJT04sIE1BQ0hJTkVfVFlQRSk6IFJlbW92ZS4KCShUQVJHRVRfVkVSU0lPTl9JTlRFUk5BTCwgVEFSR0VUX1ZFUlNJT04pOiBSZW1vdmUuCgkoUENfUkVHTlVNLCBTVEFDS19QT0lOVEVSX09GRlNFVCk6IFJlbW92ZSBkaXNhYmxlZCBkZWZpbml0aW9ucy4KCShTVFJVQ1RfVkFMVUVfUkVUVVJOX1JFR05VTSwgU1RBQ0tfRFlOQU1JQ19PRkZTRVQpOiBMaWtld2lzZS4KCShQVVNIX1JPVU5ESU5HKTogTGlrZXdpc2UuCgkoQVNTRU1CTEVSX1NDUkFUQ0hfUkVHTlVNKTogUmVtb3ZlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBSZXBsYWNlIG1pcHNfY3B1X2F0dHIgd2l0aCBtaXBzX3R1bmUKCWFuZCBtaXBzMTYgd2l0aCBUQVJHRVRfTUlQUzE2LgoKMjAwMy0wOC0wOSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBjcHBpbml0LmMgKGNwcF9yZWFkX21haW5fZmlsZSk6ICBTcGxpdCBvdXQgc291cmNlLWluZGVwZW5kZW50Cglpbml0aWFsaXphdGlvbiB0byBzZXBhcmF0ZSBmdW5jdGlvbiAuLi4KCShjcHBfcG9zdF9vcHRpb25zKTogIE5ldyBmdW5jdGlvbi4KCSogY3BwZmlsZXMuYyAoY3BwX3N0YWNrX2ZpbGUpOiAgUmVuYW1lIHB1YmxpYyBuYW1lIHRvIC4uLgoJKF9jcHBfc3RhY2tfZmlsZSk6ICBOZXcgaW50ZXJuYWwgZnVuY3Rpb24gbmFtZS4KCSogY3BwbGliLmg6ICBVcGRhdGUgYWNjb3JkaW5nbHkuCgkqIGNwcGluaXQuYzogIChjcHBfY3JlYXRlX3JlYWRlcik6ICBJbml0aWFsaXplIGNwcF9yZWFkZXJzIGxpbmUgaGVyZS4KCShjcHBfcmVhZF9tYWluX2ZpbGUpOiAgRG9uJ3QgaW5pdGlhbGl6ZSBsaW5lIGhlcmUuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiAgQ2FsbCBjcHBfcG9zdF9vcHRpb25zLgoJKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiAgQ2FsbCBjcHBfcmVhZF9tYWluX2ZpbGUsIG5vdCBjcHBfc3RhY2tfZmlsZS4KCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6ICBDYWxsIGNwcF9wb3N0X29wdGlvbnMuCgoyMDAzLTA4LTA5ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGMtZGVjbC5jIChTQ09QRV9MSVNUX0FQUEVORCk6ICBSZW1vdmUgYm9ndXMgbGluZSBjb250aW51YXRpb24uCgoyMDAzLTA4LTA5ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAocGFfYXNtX291dHB1dF9taV90aHVuayk6IEZpeCB0eXBvLgoKMjAwMy0wOC0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCVBSIHByZXByb2Nlc3Nvci8xMTgzOQoJKiBjcHBmaWxlcy5jIChvcGVuX2ZpbGUpOiBIYW5kbGUgRU5PVERJUi4KCjIwMDMtMDgtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTE2OTkKCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogUmVqZWN0IC1tYWJpPWVhYmkgLW1hYmljYWxscy4KCjIwMDMtMDgtMDggIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5tZCAoZXh0enYsIGV4dHYsIGluc3YpOiBGaXggb3BlcmFuZCBsaW1pdCBjaGVja3MuICBGYWlsIGlmCglzb3VyY2UvZGVzdGluYXRpb24gaXMgbm90IGEgcmVnaXN0ZXIgb3BlcmFuZC4KCjIwMDMtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzExNTM1CgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IFJlbW92ZQoJUkVUVVJOX0FERFJFU1NfUE9JTlRFUl9SRUdOVU0uCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBEb24ndCBmcm9iIGl0LgoJKGlhNjRfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoaWE2NF9yZXR1cm5fYWRkcl9ydHgpOiBOZXcuCgkoaWE2NF9zcGxpdF9yZXR1cm5fYWRkcl9ydHgpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChGSVJTVF9QU0VVRE9fUkVHSVNURVIpOiBEZWNyZW1lbnQuCgkoUkVUVVJOX0FERFJFU1NfUE9JTlRFUl9SRUdOVU0pOiBSZW1vdmUuCgkoR0VORVJBTF9SRUdOT19QKTogRG9uJ3QgY2hlY2sgaXQuCgkoQVJfKl9SRUdOVU0pOiBSZW51bWJlci4KCShGSVhFRF9SRUdJU1RFUlMpOiBSZW1vdmUgUkVUVVJOX0FERFJFU1NfUE9JTlRFUl9SRUdOVU0uCgkoQ0FMTF9VU0VEX1JFR0lTVEVSUywgQ0FMTF9SRUFMTFlfVVNFRF9SRUdJU1RFUlMpOiBMaWtld2lzZS4KCShSRUdfQUxMT0NfT1JERVIsIFJFR19DTEFTU19DT05URU5UUyk6IExpa2V3aXNlLgoJKEVMSU1JTkFCTEVfUkVHUywgUkVHSVNURVJfTkFNRVMpOiBMaWtld2lzZS4KCShSRVRVUk5fQUREUl9SVFgpOiBVc2UgaWE2NF9yZXR1cm5fYWRkcl9ydHguCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKFVOU1BFQ19SRVRfQUREUik6IE5ldy4KCShtb3ZkaV9yZXRfYWRkcik6IE5ldy4KCjIwMDMtMDgtMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnLmdjYyAocG93ZXJwYy0qLWRhcndpbiopOiBEb24ndCBidWlsZCBhIHNvZnQtZmxvYXQgbXVsdGlsaWIuCgoyMDAzLTA4LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUuaCAoZ2V0X2lkZW50aWZpZXIpIERlZmluZSBhIG1hY3JvIGZvcm0gb2YgZ2V0X2lkZW50aWZpZXIKCXRoYXQgY2FsbHMgZ2V0X2lkZW50aWZpZXJfd2l0aF9sZW5ndGggd2hlbiB0aGUgc3RyaW5nIGlzIGNvbnN0YW50LgoJKGdldF9pZGVudGlmaWVyX3dpdGhfbGVuZ3RoKTogQ2hhbmdlIHR5cGUgb2Ygc2Vjb25kIGFyZ3VtZW50IHRvCglzaXplX3QgaW4gcHJvdG90eXBlLgoJKiBzdHJpbmdwb29sLmMgKGdldF9pZGVudGlmaWVyKTogVW5kZWZpbmUgdGhlIG1hY3JvIGJlZm9yZSBnaXZpbmcKCXRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLgoJKGdldF9pZGVudGlmaWVyX3dpdGhfbGVuZ3RoKTogQ2hhbmdlICB0eXBlIG9mIHNlY29uZCBhcmd1bWVudCB0bwoJc2l6ZV90IGluIGZ1bmN0aW9uIGRlZmluaXRpb24uCgkqIGhhc2h0YWJsZS5jIChjYWxjX2hhc2gpOiBDaGFuZ2UgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQgdG8gc2l6ZV90LgoJKGh0X2xvb2t1cCk6IENoYW5nZSB0eXBlIG9mIHRoaXJkIGFyZ3VtZW50IHRvIHNpemVfdC4gIFJlb3JnYW5pemUKCXRvIHNwZWVkLXVwIHRoZSBjYXNlcyB3aGVyZSB0aGUgaGFzaCB0YWJsZSBzbG90IGlzIGVtcHR5LCBvciB0aGUKCWZpcnN0IHByb2JlIG1hdGNoZXMgKGkuZS4gdGhlcmUgaXNuJ3QgYSBjb2xsaXNpb24pLgoJKiBoYXNodGFibGUuaCAoaHRfbG9va3VwKTogQWRqdXN0IGZ1bmN0aW9uIHByb3RvdHlwZS4KCjIwMDMtMDgtMDggIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCglQUiB0YXJnZXQvOTY5NwoJUFIgdGFyZ2V0LzExNzc3CgkqIGxvbmdsb25nLmggKGNvdW50X2xlYWRpbmdfemVyb3MpOiBFeGNsdWRlIG9uIF9fbWNwdTMyX18uCgoyMDAzLTA4LTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb21tb24ub3B0OiBBZGQgZGVidWcgc3dpdGNoZXMuCgkqIGZsYWdzLmggKHVzZV9nbnVfZGVidWdfaW5mb19leHRlbnNpb25zKTogQm9vbGlmeS4KCSogb3B0cy5jICh3cml0ZV9zeW1ib2xzLCBkZWJ1Z19pbmZvX2xldmVsLAoJdXNlX2dudV9kZWJ1Z19pbmZvX2V4dGVuc2lvbnMpOiBNb3ZlIGZyb20gdG9wbGV2LmMuCgkoc2V0X2RlYnVnX2xldmVsKTogTmV3LgoJKGNvbW1vbl9oYW5kbGVfb3B0aW9ucyk6IEhhbmRsZSBkZWJ1ZyBzd2l0Y2hlcy4KCShwcmludF9oZWxwKTogRGlzcGxheSB0YXJnZXQgb3B0aW9ucyBkaXJlY3RseS4KCSogdG9wbGV2LmMgKGRlYnVnX2hvb2tzKTogRG9uJ3QgaW5pdGlhbGl6ZS4KCSh3cml0ZV9zeW1ib2xzLCBkZWJ1Z19pbmZvX2xldmVsLAoJdXNlX2dudV9kZWJ1Z19pbmZvX2V4dGVuc2lvbnMpOiBNb3ZlIHRvIG9wdHMuYy4KCShkZWJ1Z19hcmdzLCBkaXNwbGF5X2hlbHAsIGRlY29kZV9nX29wdGlvbik6IFJlbW92ZS4KCShwcm9jZXNzX29wdGlvbnMpOiBTZXQgbm8gZGVidWcgaWYgbGV2ZWwgemVybyBoZXJlLAoJYW5kIG5vLWRlYnVnLWhvb2tzLiAgRXJyb3IgaGVyZSBpZiBpbXBvc3NpYmxlIGRlYnVnIGZvcm1hdCBzZWxlY3RlZC4KCSogdG9wbGV2LmggKGRpc3BsYXlfaGVscCwgZGVjb2RlX2dfb3B0aW9uKTogUmVtb3ZlLgoKMjAwMy0wOC0wOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogdHJlZS5jIChnZXRfZmlsZV9mdW5jdGlvbl9uYW1lX2xvbmcpOiBGaXggc2l6ZSBvZiBhbGxvY2EoKSBhcmVhLgoKMjAwMy0wOC0wOCAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKGdjY19jdl9wcm9nX2NtcF9za2lwKTogRmxpcGZsb3AgbWFrZV9jb21wYXJlX3RhcmdldAoJYW5kIGdjY19jdl9wcm9nX2NtcF9za2lwLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTA4ICBTdGFuIENveCAgPHNjb3hAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pcTIwMDA6IE5ldyBwb3J0LgoJKiBjb25maWcuZ2NjIChpcTIwMDAtKi1lbGYpOiBBZGRlZC4KCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMpOiAgQWRkIGlxMjAwMCBkZXNjcmlwdGlvbi4KCjIwMDMtMDgtMDggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW4gKGdjY19jdl9hc19pYTY0X2x0b2ZmeF9sZHhtb3ZfcmVsb2NzKTogRml4IHF1b3RpbmcKCWFuZCBpbnNlcnQgbWlzc2luZyBlbXB0eSBhcmd1bWVudC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOC0wNyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKHVwZGF0ZV90b3RhbF9jb2RlX2J5dGVzKTogVXNlIG5ldyBtYWNybyBJTl9OQU1FRF9TRUNUSU9OX1AuCgkoYXR0cl9sZW5ndGhfbWlsbGljb2RlX2NhbGwpOiBMaWtld2lzZS4KCShhdHRyX2xlbmd0aF9jYWxsKTogTGlrZXdpc2UuICBSZXZpc2Ugc29tZSBtYXhpbXVtIGluc24gbGVuZ3Rocy4KCShhdHRyX2xlbmd0aF9pbmRpcmVjdF9jYWxsKTogTGlrZXdpc2UuCgkob3V0cHV0X2NhbGwpOiBGaXggdGhpbmtvIHRoYXQgYWRkZWQgZXh0cmEgbm9wLgoJKiBwYS5oIChJTl9OQU1FRF9TRUNUSU9OX1ApOiBEZWZpbmUuCgoJUFIgYysrLzExNzEyCgkqIHBhLWhwdXguaCwgcGEtaHB1eDEwLmgsIHBhLWhwdXgxMS5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lCglfX1NURENfRVhUX18gd2hlbiB1c2luZyBDKysgZGlhbGVjdC4KCjIwMDMtMDgtMDcgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guYyAoY2FsY19saXZlX3JlZ3MpOiBJZiB0aGUgcmV0dXJuIGFkZHJlc3MgcG9pbnRlciBpcyBsaXZlLAoJZm9yY2UgcHIgbGl2ZS4KCShzaDVfc2NoZWR1bGVfc2F2ZXMpOiBFeGNsdWRlIFBSX01FRElBX1JFRyBmcm9tIGJlaW5nIGEgdGVtcCByZWdpc3RlcgoJZm9yIHNhdmVzIC8gcmVzdG9yZXMuCgkoc2hfZXhwYW5kX2VwaWxvZ3VlKTogSWYgc2hfbWVkaWFfcmVnaXN0ZXJfZm9yX3JldHVybiByZXR1cm5zIGEKCXJlZ2lzdGVyIG51bWJlciwgZmxhZyB0aGUgaW5zdHJ1Y3Rpb25zIHRoYXQgcmVzdG9yZXMgUFJfTUVESUFfUkVHCglhcyBwb3NzaWJseSBkZWFkLgoJUmVtb3ZlIGRlYWQgdXBkYXRlIG9mIG9mZnNldC4KCShzaF9nZXRfcHJfaW5pdGlhbF92YWwpOiBVc2UgVU5TUEVDX1JBIGlmIHdlIGRvbid0IGtub3cgeWV0IGlmCgl3ZSBjYW4gdXNlIHRoZSByZXN1bHQgb2YgZ2V0X2hhcmRfcmVnX2luaXRpYWxfdmFsLgoJKiBzaC5tZCAoVU5TUEVDX1JBKTogTmV3IGNvbnN0YW50LgoJKG1vdnNpX2lfbG93cGFydCsxKTogQ2hhbmdlZCBpbnRvIGEgZGVmaW5lX2luc25fYW5kX3NwbGl0LCBuYW1lZDoKCShsb2FkX3JhKS4gIEhhbmRsZSBVTlNQRUNfUkEuCgkoc2liY2FsbF9tZWRpYSk6IFVzZSBQUl9NRURJQV9SRUcuCgoJKiBzaC5oIChDQUxMX1VTRURfUkVHSVNURVJTKTogSW5jbHVkZSBQUl9SRUcgYW5kIFBSX01FRElBX1JFRy4KCSogc2guYyAoY2FsY19saXZlX3JlZ3MpOiBVc2Ugc2hfcHJfbl9zZXRzIHRvIGRldGVybWluZSBpZiBwcgoJbmVlZHMgc2F2aW5nIG9uIFNIbWVkaWEuCgoyMDAzLTA4LTA3ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kOiBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiBcXHQgd2l0aCBcdC4KCjIwMDMtMDgtMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGxvY2FsLWFsbG9jLmMgKGNvbWJpbmVfcmVncyk6IEZpeCBjb21tZW50IHR5cG8uCgoyMDAzLTA4LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKGJ1aWx0aW5fZGVjbHMpOiBSZXBsYWNlIHdpdGggZmlyc3RfYnVpbHRpbl9kZWNsCglhbmQgbGFzdF9idWlsdGluX2RlY2wuCgkoY19pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgYm90aC4KCShjX3Jlc2V0X3N0YXRlKTogSXRlcmF0ZSBmcm9tIGZpcnN0X2J1aWx0aW5fZGVjbCB0bwoJbGFzdF9idWlsdGluX2RlY2wgaW5jbHVzaXZlIHRvIHJlaW50cm9kdWNlIGJ1aWx0aW5zLgoKMjAwMy0wOC0wNiAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEZ1bmN0aW9uIEF0dHJpYnV0ZXMpOiBEb2N1bWVudCB0aGUgSUEtNjQgdmVyc2lvbgoJb2YgdGhlICJtb2RlbCIgYXR0cmlidXRlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChTWU1CT0xfRkxBR19TTUFMTF9BRERSKTogTmV3IG1hY3JvLgoJKFNZTUJPTF9SRUZfU01BTExfQUREUl9QKTogRGl0dG8uCgkoUFJFRElDQVRFX0NPREVTKTogTWVudGlvbiAic21hbGxfYWRkcl9zeW1ib2xpY19vcGVyYW5kIi4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9oYW5kbGVfbW9kZWxfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgoJKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKGlhNjRfYXR0cmlidXRlX3RhYmxlKTogQWRkICJtb2RlbCIgYXR0cmlidXRlLgoJKFRBUkdFVF9FTkNPREVfU0VDVElPTl9JTkZPKTogRGVmaW5lLgoJKHNtYWxsX2FkZHJfc3ltYm9saWNfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShnb3Rfc3ltYm9saWNfb3BlcmFuZCk6IFJldHVybiAwIGZvciBhIHN5bWJvbHJlZiB0byBhbiBvYmplY3QKCWluIHRoZSBzbWFsbCBhZGRyZXNzIGFyZWEuCgkoZW51bSBpYTY0X2FkZHJfYXJlYSk6IE5ldyB0eXBlLgoJKHNtYWxsX2lkZW50MSk6IE5ldyB2YXJpYWJsZS4KCShzbWFsbF9pZGVudDIpOiBMaWtld2lzZS4KCShpbml0X2lkZW50cyk6IE5ldyBmdW5jdGlvbi4KCShpYTY0X2dldF9hZGRyX2FyZWEpOiBMaWtld2lzZS4KCShpYTY0X2VuY29kZV9hZGRyX2FyZWEpOiBMaWtld2lzZS4KCShpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCShpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MpOiBGb3Igc3ltYm9saWMgcmVmZXJlbmNlcyB0byBvYmplY3RzIGluCgl0aGUgc21hbGwtYWRkcmVzcy1hcmVhLCBsb2FkIHRoZSBhZGRyZXNzIHZpYSBnZW5fcnR4X1NFVCgpICh3aGljaCwKCWV2ZW50dWFsbHksIHdpbGwgZXhwYW5kIGludG8gImFkZGwiKS4KCjIwMDMtMDgtMDYgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogbGluZS1tYXAuaCAoZmlsZWxpbmUpOiAgTmV3IHR5cGVkZWYuCgkoc3RydWN0IGxpbmVfbWFwLCBsaW5lbWFwX2FkZCwgbGluZW1hcF9sb29rdXApOiAgVXNlIGl0LgoJKiBpbnB1dC5oIChzdHJ1Y3QgbG9jYXRpb25fcyk6ICBDb21tZW50IG5vdGVzIHRoYXQgbG9uZy10ZXJtIHdlIHdhbnQKCXRvIHJlcGxhY2UgaXQgYnkgZmlsZWxpbmUuCgoyMDAzLTA4LTA2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCglGaXggU0hjb21wYWN0IGV4Y2VwdGlvbiBoYW5kbGluZzoKCSogc2guYyAoc2hfZ2V0X3ByX2luaXRpYWxfdmFsKTogSWYgUFIgaXMgb3IgbWlpZ2h0IGJlIGNsb2JiZXJlZAoJYnkgdGhlIHByb2xvZ3VlLCByZXR1cm4gYSBNRU0gd2l0aCByZXR1cm5fYWRkcmVzc19wb2ludGVyX3J0eAoJYXMgYWRkcmVzcy4KCSogc2guaCAoSEFSRF9SRUdOT19NT0RFX09LKTogUFIgaXMgT0sgZm9yIFNJbW9kZS4KCShSRVRVUk5fQUREUl9PRkZTRVQpOiBEb24ndCBkZWZpbmUuCgkoU0hfREJYX1JFR0lTVEVSX05VTUJFUik6IFVzZSBTSG1lZGlhIG51bWJlcnMgZm9yIFNIbWVkaWEKCXJlZ2lzdGVycyB0aGF0IGFyZSB2aXNpYmxlIGluIGNvbXBhY3QgbW9kZS4gIFNob3cgdGhhdCBTSG1lZGlhCglyZWdpc3RlcnMgc3RpbGwgZXhpc3QgaW4gY29tcGFjdCBtb2RlLCBldmVuIGlmIHRoZXJlIGFyZSBub3QKCXJlYWRpbHkgYWNjZXNzaWJsZS4KCShBU01fUFJFRkVSUkVEX0VIX0RBVEFfRk9STUFUKTogU3VwcGx5IERXX0VIX1BFX2luZGlyZWN0CglpZiBHTE9CQUwuICBVc2UgRFdfRUhfUEVfdGV4dHJlbCAobm9taW5hbGx5KSBmb3IgQ09ERSwKCWFuZCBEV19FSF9QRV9wY3JlbCBmb3IgcGljIGRhdGEuCgkoQVNNX01BWUJFX09VVFBVVF9FTkNPREVEX0FERFJfUlRYKTogSWYgRFdfRUhfUEVfdGV4dHJlbCwKCXNldCBTWU1CT0xfRkxBR19GVU5DVElPTiBpbiBzeW1ib2wsIGFuZCBhY3R1YWxseSB1c2UKCURXX0VIX1BFX3BjcmVsIC8gRFdfRUhfUEVfYWJzcHRyIGVuY29kaW5nLgoJKEFMTE9DQVRFX0lOSVRJQUxfVkFMVUUpOiBQdXQgUFIgb24gc3RhY2sgaWYgcHJvbG9ndWUgY2xvYmJlcnMgaXQuCgkqIHNoLm1kIChtb3ZzaV9tZWRpYS0xKTogTmV3IHNwbGl0dGVyLgoKMjAwMy0wOC0wNiAgR3JhZW1lIFBldGVyc29uIDxncEBxbnguY29tPgoKCSogY29uZmlnL2kzODYvbnRvLmg6IE5ldy4KCSogY29uZmlnL2kzODYvdC1udG86IE5ldy4KCSogY29uZmlnLmdjYyAoaVszNDU2N104Ni0qLW50by1xbngqKTogTmV3LgoKMjAwMy0wOC0wNiAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi0qLXNvbGFyaXMyKik6ICBSZWZpbmUgY29uZmlndXJlIGluc3RydWN0aW9ucy4KCjIwMDMtMDgtMDYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjYWxscy5jIChsb2FkX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiBBcnJhbmdlIGZvciBjYWxsX2Z1c2FnZSB0bwoJcmVwb3J0IHRoZSB3aG9sZSByZWdpc3RlciBhcyB1c2VkIHdoZW4gc2hpZnRpbmcgdG8gdGhlIG1zYi4KCjIwMDMtMDgtMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBXaGVuIG5vdCBvcHRpbWl6aW5nLCBjYWxsIHRoZSBsaWJyYXJ5CglmdW5jdGlvbiBmb3IgYWxsIGJ1aWx0aW5zIHRoYXQgaGF2ZSBsaWJyYXJ5IGZ1bmN0aW9ucyAoZXhjZXB0IGFsbG9jYSkuCgoyMDAzLTA4LTA1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMub3B0OiBJbnRyb2R1Y2UgLWZ3b3JraW5nLWRpcmVjdG9yeS4KCSogZG9jL2NwcC50ZXhpLCBkb2MvaW52b2tlLnRleGksIGRvYy9jcHBvcHRzLnRleGk6IERvY3VtZW50IGl0LgoJKiBjLWNvbW1vbi5oIChmbGFnX3dvcmtpbmdfZGlyZWN0b3J5KTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAoZmxhZ193b3JraW5nX2RpcmVjdG9yeSk6IERlZmluZS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb25zKTogU2V0IGl0LgoJKHNhbml0aXplX2NwcF9vcHRzKTogU2V0Li4uCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiAuLi4gd29ya2luZ19kaXJlY3Rvcnkgb3B0aW9uLgoJKHN0cnVjdCBjcHBfY2FsbGJhY2tzKTogQWRkIGRpcl9jaGFuZ2UuCgkqIGNwcGluaXQuYyAocmVhZF9vcmlnaW5hbF9maWxlbmFtZSk6IENhbGwuLi4KCShyZWFkX29yaWdpbmFsX2RpcmVjdG9yeSk6IE5ldy4gIExvb2sgZm9yICMgMSAiZGlyZWN0b3J5Ly8iCglhbmQgcHJvY2VzcyBpdC4KCShjcHBfcmVhZF9tYWluX2ZpbGUpOiBDYWxsIGRpcl9jaGFuZ2UgY2FsbGJhY2sgaWYgd29ya2luZ19kaXJlY3RvcnkKCW9wdGlvbiBpcyBzZXQuCgkqIGdjYy5jIChjcHBfdW5pcXVlX29wdGlvbnMpOiBQYXNzIC1nKi4KCSogYy1sZXguYyAoY2JfZGlyX2NoYW5nZSk6IE5ldy4KCShpbml0X2NfbGV4KTogU2V0IGRpcl9jaGFuZ2UgY2FsbGJhY2suCgkqIHRvcGxldi5jIChzcmNfcHdkKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShzZXRfc3JjX3B3ZCwgZ2V0X3NyY19wd2QpOiBOZXcgZnVuY3Rpb25zLgoJKiB0b3BsZXYuaCAoZ2V0X3NyY19wd2QsIHNldF9zcmNfcHdkKTogRGVjbGFyZS4KCSogZGJ4b3V0LmMgKGRieG91dF9pbml0KTogQ2FsbCBnZXRfc3JjX3B3ZCgpIGluc3RlYWQgb2YgZ2V0cHdkKCkuCgkqIGR3YXJmMm91dC5jIChnZW5fY29tcGlsZV91bml0X2RpZSk6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfY29tcGlsZV91bml0X2RpZSwgZHdhcmZvdXRfaW5pdCk6IExpa2V3aXNlLgoKMjAwMy0wOC0wNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBwcmV0dHktcHJpbnQuaCAocHBfc2V0X2xpbmVfbWF4aW11bV9sZW5ndGgpOiBNYWtlIG1hY3JvLgoJKHBwX3NldF9wcmVmaXgpOiBMaWtld2lzZS4KCShwcF9kZXN0cm95X3ByZWZpeCk6IExpa2V3aXNlLgoJKHBwX3JlbWFpbmluZ19jaGFyYWN0ZXJfY291bnRfZm9yX2xpbmUpOiBMaWtld2lzZS4KCShwcF9jbGVhcl9vdXRwdXRfYXJlYSk6IExpa2V3aXNlLgoJKHBwX2Zvcm1hdHRlZF90ZXh0KTogTGlrZXdpc2UuCgkocHBfbGFzdF9wb3NpdGlvbl9pbl90ZXh0KTogTGlrZXdpc2UuCgkocHBfZW1pdF9wcmVmaXgpOiBMaWtld2lzZS4KCShwcF9hcHBlbmRfdGV4dCk6IExpa2V3aXNlLgoJKHBwX2ZsdXNoKTogTGlrZXdpc2UuCgkocHBfZm9ybWF0X3RleHQpOiBMaWtld2lzZS4KCShwcF9mb3JtYXRfdmVyYmF0aW0pOiBMaWtld2lzZS4KCShwcF90cmVlX2lkZW50aWZpZXIpOiBUaWR5LgoJKiBwcmV0dHktcHJpbnQuYyAocHBfYmFzZV9mb3JtYXRfdGV4dCk6IFJlbmFtZSBmcm9tIHBwX2Zvcm1hdF90ZXh0LgoJKHBwX2Jhc2VfZm9ybWF0X3ZlcmJhdGltKTogUmVuYW1lIGZyb20gcHBfZm9ybWF0X3ZlcmJhdGltLgoJKHBwX2Jhc2VfZmx1c2gpOiBSZW5hbWUgZnJvbSBwcF9mbHVzaC4KCShwcF9iYXNlX3NldF9saW5lX21heGltdW1fbGVuZ3RoKTogUmVuYW1lIGZyb20KCXBwX3NldF9saW5lX21heGltdW1fbGVuZ3RoLgoJKHBwX2Jhc2VfY2xlYXJfb3V0cHV0X2FyZWEpOiBSZW5hbWUgZnJvbSBwcF9jbGVhcl9vdXRwdXRfYXJlYS4KCShwcF9iYXNlX3NldF9wcmVmaXgpOiBSZW5hbWUgZnJvbSBwcF9zZXRfcHJlZml4LgoJKHBwX2Jhc2VfZGVzdHJveV9wcmVmaXgpOiBSZW5hbWUgZnJvbSBwcF9kZXN0cm95X3ByZWZpeC4KCShwcF9iYXNlX2VtaXRfcHJlZml4KTogUmVuYW1lIGZyb20gcHBfZW1pdF9wcmVmaXguCgkocHBfYmFzZV9hcHBlbmRfdGV4dCk6IFJlbmFtZSBmcm9tIHBwX2FwcGVuZF90ZXh0LgoJKHBwX2Jhc2VfZm9ybWF0dGVkX3RleHQpOiBSZW5hbWUgZnJvbSBwcF9mb3JtYXR0ZWRfdGV4dC4KCShwcF9iYXNlX2xhc3RfcG9zaXRpb25faW5fdGV4dCk6IFJlbmFtZSBmcm9tIHBwX2xhc3RfcG9zaXRpb25faW5fdGV4dC4KCShwcF9iYXNlX3JlbWFpbmluZ19jaGFyYWN0ZXJfY291bnRfZm9yX2xpbmUpOiBSZW5hbWUgZnJvbQoJcHBfcmVtYWluaW5nX2NoYXJhY3Rlcl9jb3VudF9mb3JfbGluZS4KCSogZGlhZ25vc3RpYy5oIChkaWFnbm9zdGljX2Zvcm1hdF9kZWNvZGVyKTogVGlkeS4KCShkaWFnbm9zdGljX2ZsdXNoX2J1ZmZlcik6IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5oOiAocHBfY19zdHJpbmdfbGl0ZXJhbCk6IERlY2xhcmUuCgkocHBfY19yZWFsX2xpdGVyYWwpOiBMaWtld2lzZS4KCShwcF9jX2ludGVnZXJfbGl0ZXJhbCk6IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX2NoYXIpOiBVc2UgcHBfc3RyaW5nIGluIGxpZXUgb2YKCXBwX2lkZW50aWZpZXIuCgkocHBfY19jaGFyYWN0ZXJfbGl0ZXJhbCk6IFRpZHkuCgkocHBfY19zdHJpbmdfbGl0ZXJhbCk6IE1ha2UgcHVibGljLgoJKHBwX2NfYm9vbF9saXRlcmFsKTogTGlrZXdpc2UuCgkocHBfY19pbnRlZ2VyX2xpdGVyYWwpOiBMaWtld2lzZS4KCShwcF9jX3JlYWxfbGl0ZXJhbCk6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW4gKENfUFJFVFRZX1BSSU5UX0gpOiBOZXcgdmFyaWFibGUuCgkoYy1wcmV0dHktcHJpbnQubyk6IFVwZGF0ZSBkZXBlbmRlbmNlLgoKMjAwMy0wOC0wNSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGZpeF90cnVuY2Rmc2kyX21hY3JvKTogUHJvcGVybHkgcmVzdG9yZQoJIi5zZXQgbm9tYWNybyIgc3RhdGUuCgkoZml4X3RydW5jc2ZzaTJfbWFjcm8pOiBMaWtld2lzZS4KCjIwMDMtMDgtMDUgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIHRyZWUuaCAoRElEX0lOTElORV9GVU5DKTogUmVtb3ZlIG1hY3JvLgoJKERFQ0xfREVDTEFSRURfSU5MSU5FX1ApOiBNb3ZlIGZyb20gYy10cmVlLmggYW5kIGNwL2NwLXRyZWUuaCwKCWFkZCB0cmVlIGNoZWNrIGZvciBGVU5DVElPTl9ERUNMLgoJKERFQ0xfRVNUSU1BVEVEX0lOU05TKTogTW92ZSBmcm9tIGMtY29tbW9uLmggYW5kIGphdmEvamF2YS10cmVlLmguCgkoc3RydWN0IHRyZWVfZGVjbCk6IFJlbmFtZSBpbmxpbmVkX2Z1bmN0aW9uX2ZsYWcgdG8KCWRlY2xhcmVkX2lubGluZV9mbGFnLgoJKiBjLWNvbW1vbi5oIChjX2xhbmdfZGVjbCk6IFJlbW92ZS4KCShERUNMX0VTVElNQVRFRF9JTlNOUyk6IFJlbW92ZS4KCSogYy10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2wpOiBEb24ndCBpbmNsdWRlIGNfbGFuZ19kZWNsLgoJKERFQ0xfREVDTEFSRURfSU5MSU5FX1ApOiBSZW1vdmUuCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVwZGF0ZSBjb21tZW50LiAgV2l0aCAtZmlubGluZS1mdW5jdGlvbnMsCglkbyBub3QgcmVzZXQgREVDTF9ERUNMQVJFRF9JTkxJTkVfUC4gIERvbid0IHVzZSBESURfSU5MSU5FX0ZVTkMuCgkoZmluaXNoX2Z1bmN0aW9uKTogTWFrZSB1bmlubGluYWJsZSBhIGJvb2wuICBGaXh1cCBjYWxsIHRvCgl0cmVlX2lubGluYWJsZV9mdW5jdGlvbl9wKCkgYW5kIGZpeCBzb21lIGNvZGUgc3R5bGUgaXNzdWVzLgoJKiBjZ3JhcGguaCAoZGlzZ3JlYWRfaW5saW5lX2xpbWl0cyk6IEZpeCBzcGVsbGluZzogYGRpc3JlZ2FyZCcuCgkqIGNncmFwaC5jIChkdW1wX2NncmFwaCk6IExpa2V3aXNlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBMaWtld2lzZQoJKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogTGlrZXdpc2UuCglBbHNvIHVwZGF0ZSBjYWxsIHRvIHRyZWVfaW5saW5hYmxlX2Z1bmN0aW9uX3AoKS4KCShjZ3JhcGhfZGVmYXVsdF9pbmxpbmVfcCk6IERvbid0IHVzZSBESURfSU5MSU5FX0ZVTkMuICBJbnN0ZWFkCglsb29rIGF0IERFQ0xfREVDTEFSRURfSU5MSU5FIGFuZCByZXZlcnNlIGxvZ2ljLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2lubGluaW5nKTogRG9uJ3QgdXNlIERJRF9JTkxJTkVfRlVOQy4KCSogdHJlZS1pbmxpbmUuaCAodHJlZV9pbmxpbmFibGVfZnVuY3Rpb25fcCk6IE1ha2UgYSBib29sLiAgVXBkYXRlCglwcm90b3R5cGUuCgkqIHRyZWUtaW5saW5lLmMgKGlubGluYWJsZV9mdW5jdGlvbl9wKTogU3BsaXQgdXAgaW4gdGhpcyBmdW5jdGlvbiB0bwoJY2hlY2sgZm9yIGJhc2ljIGlubGluaW5nIGluaGliaXRpbmcgY29uZGl0aW9ucywgYW5kIG5ldwoJbGltaXRzX2FsbG93X2lubGluaW5nKCkgZnVuY3Rpb24uICBXYXJuIGlmIGlubGluaW5nIGlzIGltcG9zc2libGUKCWJlY2F1c2UgdGhlIGlubGluZSBjYW5kaWRhdGUgY2FsbHMgYWxsb2NhIG9yIHVzZXMgc2psaiBleGNlcHRpb25zLgoJKGxpbWl0c19hbGxvd19pbmxpbmluZyk6IHRoaXMgbmV3IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBpbmxpbmluZwoJbGltaXRzIGFyZSBzYXRpc2ZpZWQuICBUaHJvdHRsZSBmcm9tIGN1cnJmbl9tYXhfaW5saW5lX2luc25zLCBub3QgZnJvbQoJTUFYX0lOTElORV9JTlNOU19TSU5HTEUuICBUaGUgbGF0dGVyIG9ubHkgbWFrZXMgc2Vuc2UgaWYKCU1BWF9JTkxJTkVfSU5TTlNfQVVUTyBhbmQgTUFYX0lOTElORV9JTlNOU19TSU5HTEUgYXJlIGVxdWFsLgoJVXBkYXRlIHByb3RvdHlwZXMuCgkodHJlZV9pbmxpbmFibGVfZnVuY3Rpb25fcCk6IE1ha2UgYSBib29sLiAgVXBkYXRlIGNhbGwgdG8KCWlubGluYWJsZV9mdW5jdGlvbl9wCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogVXNlIGxpbWl0c19hbGxvd19pbmxpbmluZygpIHdoZW4gbm90IGluCgl1bml0LWF0LWEtdGltZSBtb2RlIHRvIGRlY2lkZSBvbiBpbmxpbmluZy4gIERvbid0IHVzZSBESURfSU5MSU5FX0ZVTkMsCglpbnN0ZWFkIHNlZSBpZiB0aGUgZnVuY3Rpb24gd2FzIGRlY2xhcmVkIGBpbmxpbmUnLgoKMjAwMy0wOC0wNSAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZ2NzZS5jICh0cnlfcmVwbGFjZV9yZWcpOiBGaXggdXBkYXRpbmcgb2Ygbm90ZS4KCjIwMDMtMDgtMDQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTE3NzEKCSogZm9sZC1jb25zdC5jIChuZWdhdGVfZXhwcl9wIDxNSU5VU19FWFBSPik6IENoYW5nZSB0byBtYXRjaCB0aGUKCWxvZ2ljIGluIG5lZ2F0ZV9leHByLCBpLmUuIHdlIGRvbid0IGludmVydCAoQS1CKSBmb3IgZmxvYXRpbmcKCXBvaW50IHR5cGVzIHVubGVzcyBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMuCgoyMDAzLTA4LTA0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCA8UExVU19FWFBSPik6IFRyYW5zZm9ybSB4K3ggaW50byB4KjIuMC4KCU9wdGltaXplIHgqYyt4IGFuZCB4K3gqYyBpbnRvIHgqKGMrMSkgYW5kIHgqYzEreCpjMiBpbnRvIHgqKGMxK2MyKQoJZm9yIGZsb2F0aW5nIHBvaW50IGV4cHJlc3Npb25zIHdpdGggLWZmYXN0LW1hdGguCgkoZm9sZCA8TVVMVF9FWFBSPik6IERvbid0IHRyYW5zZm9ybSB4KjIuMCBpbnRvIHgreC4KCSogZXhwbWVkLmMgKGV4cGFuZF9tdWx0KTogV3JhcCBsb25nIGxpbmUuICBFeHBhbmQgeCoyLjAgYXMgeCt4LgoKMjAwMy0wOC0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjLWNvbW1vbi5jIChmbGFnX25vbmlzb19kZWZhdWx0X2Zvcm1hdF9hdHRyaWJ1dGVzKTogRGVsZXRlLgoJKGJ1aWx0X2luX2F0dHJpYnV0ZSk6IERvbid0IGRlZmluZS91bmRlZmluZSBERUZfRk5fQVRUUi4KCShjX2F0dHJzX2luaXRpYWxpemVkKTogRGVsZXRlLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERvbid0IHRlc3QgY19hdHRyc19pbml0aWFsaXplZCwKCWFsd2F5cyBjYWxsIGNfaW5pdF9hdHRyaWJ1dGVzLgoJKGNfaW5pdF9hdHRyaWJ1dGVzKTogRG9uJ3QgZGVmaW5lL3VuZGVmaW5lIERFRl9GTl9BVFRSLiAgRG9uJ3QKCXNldCBjX2F0dHJzX2luaXRpYWxpemVkIHdoZW4gZG9uZS4KCShjX2NvbW1vbl9pbnNlcnRfZGVmYXVsdF9hdHRyaWJ1dGVzKTogRGVsZXRlLgoJKiBjLWNvbW1vbi5oIChmbGFnX25vbmlzb19kZWZhdWx0X2Zvcm1hdF9hdHRyaWJ1dGVzKTogRGVsZXRlLgoJKGNfY29vbW9uX2luc2VydF9kZWZhdWx0X2F0dHJpYnV0ZXMpOiBEZWxldGUgcHJvdG90eXBlLgoJKiBjLW9wdHMuYyAoc2V0X3N0ZF9jODksIHNldF9zdGRfYzk5LCBzZXRfc3RkX2N4eDk4KTogRG9udCBzZXQKCWZsYWdfbm9uaXNvX2RlZmF1bHRfZm9ybWF0X2F0dHJpYnV0ZXMuCgoJKiBjLWRlY2wuYyAoY19pbnNlcnRfZGVmYXVsdF9hdHRyaWJ1dGVzKTogRGVsZXRlLgoJKiBjLXRyZWUuaCAoY19pbnNlcnRfZGVmYXVsdF9hdHRyaWJ1dGVzKTogRGVsZXRlIHByb3RvdHlwZS4KCgkqIGF0dHJpYnMuYyAoZGVjbF9hdHRyaWJ1dGVzKTogRG9uJ3QgY2FsbCBpbnNlcnRfZGVmYXVsdF9hdHRyaWJ1dGVzCglsYW5naG9vay4gIFVwZGF0ZSBmdW5jdGlvbiBkZXNjcmlwdGlvbiBjb21tZW50LgoJKiBsYW5naG9va3MuaCAobGFuZ19ob29rcyk6IFJlbW92ZSBpbnNlcnRfZGVmYXVsdF9hdHRyaWJ1dGVzIGZpZWxkLgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfSU5TRVJUX0RFRkFVTFRfQVRUUklCVVRFUyk6IERlbGV0ZS4KCSogYy1sYW5nLmMgKExBTkdfSE9PS1NfSU5TRVJUX0RFRkFVTFRfQVRUUklCVVRFUyk6IERvbid0IGRlZmluZS4KCSogc3lzdGVtLmg6IFBvaXNvbiBMQU5HX0hPT0tTX0lOU0VSVF9ERUZBVUxUX0FUVFJJQlVURVMgbWFjcm8uCgoJKiBvYmpjL29iamMtbGFuZy5jIChMQU5HX0hPT0tTX0lOU0VSVF9ERUZBVUxUX0FUVFJJQlVURVMpOiBEb24ndAoJZGVmaW5lLgoKMjAwMy0wOC0wNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBEaXNhYmxlIC1HIG9uIHRhcmdldHMgdGhhdAoJaGF2ZSBubyAuc2VjdGlvbiBzdXBwb3J0LgoJKG1pcHNfc2VsZWN0X3NlY3Rpb24pOiBVc2UgZGVmYXVsdF9zZWxlY3Rfc2VjdGlvbiBmb3Igc3VjaCB0YXJnZXRzLgoKMjAwMy0wOC0wNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdnI0X3VuZGVjbGFyZWRfZ2V0cm5nZSk6IEludHJvZHVjZSBhbmQgZW5hYmxlLgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdGF0aWNfZ2V0cm5nZSk6IFJlbW92ZSBkaXNhYmxlZCBoYWNrLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWJ1aWxkLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9yZWdleHAuaDogTmV3IHRlc3QuCgoyMDAzLTA4LTA0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtcHBvdXRwdXQuYyAoY2JfbGluZV9jaGFuZ2UpOiBEb24ndCBza2lwIGxpbmUgY2hhbmdpbmcgd2hpbGUKCXBhcnNpbmcgbWFjcm8gYXJndW1lbnRzIGluIHRoZSB0b3AtbGV2ZWwgY29udGV4dC4KCjIwMDMtMDgtMDQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy5pbjogUmVtb3ZlIEhBVkVfTFNUQVQuCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBEb24ndCB0ZXN0IGZvciBsc3RhdC4KCjIwMDMtMDgtMDMgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IERvIGxhbmd1YWdlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGZvcgoJdGhlIGdsb2JhbCBkaWFnbm9zdGljIGNvbnRleHQuCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX2luaXRpYWxpemVfZGlhZ25vc3RpY3MpOiBEZWNsYXJlLgoJKExBTkdfSE9PS1NfSU5JVElBTElaRV9ESUFHTk9TVElUQ1MpOiBOZXcgbWFjcm8uCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6IEFkanVzdC4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogQWRkIG5ldyBmaWVsZAoJaW5pdGlhbGl6ZV9kaWFnbm9zdGljcy4KCSogbGFuZ2hvb2tzLmMgKGxoZF9pbml0aWFsaXplX2RpYWdub3N0aWNzKTogRGVmaW5lLgoKMjAwMy0wOC0wMyAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBwcmV0dHktcHJpbnQuaDogICBBZGp1c3QgbWFjcm8gZGVmaW5pdGlvbnMuCgkqIHByZXR0eS1wcmludC5jIChwcF9uZXdsaW5lKTogUmVuYW1lIHRvIHBwX2Jhc2VfbmV3bGluZS4KCShwcF9jaGFyYWN0ZXIpOiBSZW5hbWUgdG8gcHBfYmFzZV9jaGFyYWN0ZXIuCgkocHBfc3RyaW5nKTogUmVuYW1lIHRvIHBwX2Jhc2Vfc3RyaW5nLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9idWZmZXIpOiBNb3ZlIHRvIHByZXR0eS1wcmludC5oCgkocHBfbmV3bGluZSk6ICBMaWtld2lzZS4gIEFkanVzdC4KCShwcF9jX2NoYXIpOiBBZGp1c3QuCgoyMDAzLTA4LTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0FCUywgQlVJTFRfSU5fSU1BWEFCUywgQlVJTFRfSU5fTEFCUywKCUJVSUxUX0lOX0xMQUJTKTogTW92ZSB0byBtaXNjZWxsYW5lb3VzIHNlY3Rpb24uCgoyMDAzLTA4LTAzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJUFIgcHJlcHJvY2Vzc29yLzExNTM0CgkqIGNwcGV4cC5jIChwYXJzZV9kZWZpbmVkKTogV2FybiBvbmx5IGlmIC1wZWRhbnRpYy4KCjIwMDMtMDgtMDMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2ZpbGUpOiBVc2UgZmlsZSBwYXRoLgoKMjAwMy0wOC0wMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfU1NJWkUpOiBOZXcgcHJpbWl0aXZlIHR5cGUuCgkoQlRfRk5fSU5UX1BUUl9DT05TVF9TVFJJTkdfVkFMSVNUX0FSRywKCUJUX0ZOX1NUUklOR19DT05TVF9TVFJJTkdfQ09OU1RfU1RSSU5HX0lOVCwKCUJUX0ZOX1NJWkVfU1RSSU5HX1NJWkVfQ09OU1RfU1RSSU5HX0NPTlNUX1BUUiwKCUJUX0ZOX1NTSVpFX1NUUklOR19TSVpFX0NPTlNUX1NUUklOR19WQVIpOiBOZXcgZnVuY3Rpb24gdHlwZXMuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRENHRVRURVhULCBCVUlMVF9JTl9ER0VUVEVYVCwKCUJVSUxUX0lOX0ZTQ0FORiwgQlVJTFRfSU5fR0VUVEVYVCwgQlVJTFRfSU5fU1RSRk1PTiwKCUJVSUxUX0lOX1NUUkZUSU1FLCBCVUlMVF9JTl9WRlBSSU5URiwgQlVJTFRfSU5fVkZTQ0FORik6IE5ldyBidWlsdGlucy4KCSogYnVpbHRpbi1hdHRycy5kZWY6IFJlbW92ZSBERUZfRk5fQVRUUiBjb25zdHJ1Y3QgYW5kIHRoZSBsYXN0CglmZXcgZnVuY3Rpb25zIHRoYXQgZGVmaW5lIGRlZmF1bHQgYXR0cmlidXRlcyB1c2luZyBpdC4KCSogYy1jb21tb24uYyAoY19jb21tb25faW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyk6IERvIG5vdGhpbmcuCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IHRoZXNlICJuZXciIGJ1aWx0aW5zLgoKMjAwMy0wOC0wMiAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGludXguaCAoU1VCVEFSR0VUX0xJTktfU1BFQyk6IERvbid0IHNldCBycGF0aC4KCShMSUJfU1BFQyk6IFNldCAtbHB0aHJlYWQgYWx3YXlzIHdoZW4gLXB0aHJlYWQgc2V0LiAgU2V0IC1saWVlZQoJd2hlbiAtbWllZWUtZnAgc2V0IGFuZCAtc2hhcmVkIG5vdCBzZXQuCgkoU0hfRkFMTEJBQ0tfRlJBTUVfRkxPQVRfU1RBVEUpOiBEb24ndCBkZWZpbmUgZm9yIFNINS4KCjIwMDMtMDgtMDIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGZpbGVzLmMgKHN0cnVjdCBfY3BwX2ZpbGUpOiBSZW5hbWUgb25jZV9vbmx5X25leHQgdG8KCW5leHRfZmlsZS4gIFJlbW92ZSBpbXBvcnQgYW5kIHByYWdtYV9vbmNlLCBhZGQgb25jZV9vbmx5LgoJKGZpbmRfZmlsZSk6IEFkZCBuZXcgZmlsZSBzdHJ1Y3R1cmVzIHRvIHRoZSBhbGxfZmlsZXMgbGlzdC4KCShzaG91bGRfc3RhY2tfZmlsZSk6IE1hcmsgI2ltcG9ydC1lZCBmaWxlcyBvbmNlLW9ubHksIGFuZAoJZG9uJ3Qgc3RhY2sgdGhlbSBpZiB0aGUgZmlsZSBoYXMgYWxyZWFkeSBiZWVuIHN0YWNrZWQuCgkoX2NwX21hcmtfZmlsZV9vbmNlX29ubHkpOiBTaW1wbGlmeS4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbmFtZSBvbmNlX29ubHlfZmlsZXMKCXRvIGFsbF9maWxlcy4gIFJlbmFtZSBzYXdfcHJhZ21hX29uY2UgdG8gc2Vlbl9vbmNlX29ubHkuCgkoX2NwcF9tYXJrX2ZpbGVfb25jZV9vbmx5KTogVXBkYXRlIHByb3RvdHlwZS4KCSogY3BwbGliLmMgKGRvX3ByYWdtYV9vbmNlKTogVXBkYXRlLgoKMjAwMy0wOC0wMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY3BwZmlsZXMuYyAoRU5PVERJUik6IFJlbW92ZS4KCShvcGVuX2ZpbGVfaW5fZGlyKTogUmVuYW1lIGZpbmRfZmlsZV9pbl9kaXIuICBIYW5kbGUgZXJyb3JzCglvdGhlciB0aGFuIEVOT0VOVCBoZXJlLgoJKG9uY2Vfb25seV9maWxlX3ApOiBSZW5hbWUgc2hvdWxkX3N0YWNrX2ZpbGUuCgkoZmluZF9maWxlLCBvcGVuX2ZpbGVfZmFpbGVkLCByZWFkX2ZpbGVfZ3V0cyk6IFJlcG9ydCBlcnJvcnMKCXdpdGggZnVsbCBwYXRoIG5hbWUuCgkocmVhZF9maWxlKTogTW92ZSBwY2ggaGFuZGxpbmcgdG8gc2hvdWxkX3N0YWNrX2ZpbGUuCgkoc2hvdWxkX3N0YWNrX2ZpbGUpOiBIYW5kbGUgUENIIGFuZCBvbmNlLW9ubHkgaXNzdWVzLCBhbmQKCXJlYWRpbmcgdGhlIGZpbGUuCgkoc3RhY2tfZmlsZSk6IERvbid0IGRvIGZpbGUgcmVhZHMuCgoyMDAzLTA4LTAyICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBsaWJnY292LmMgKGdjb3ZfZXhpdCk6IENsZWFudXAgYW5kIGZpeC4KCSogcHJvZmlsZS5jIChjb21wdXRlX3ZhbHVlX2hpc3RvZ3JhbXMpOiBEb24ndCB0cnkgdG8gcmVhZCBwcm9maWxlcwoJdGhhdCBhcmUgbm90IHByZXNlbnQuCgoyMDAzLTA4LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5kZWY6IENhdGVnb3JpemUuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0NBQlMsIEJVSUxUX0lOX0NBQlNGLCBCVUlMVF9JTl9DQUJTTCk6CglNaW5kIGZwIHJvdW5kaW5nLgoJKEJVSUxUX0lOX0ZGU0wpOiBVc2UgREVGX0VYVF9MSUJfQlVJTFRJTi4KCjIwMDMtMDgtMDIgIEFuZHJlYXMgVG9ibGVyICA8YS50b2JsZXJAc2Nod2Vpei5jaD4KCgkqIGNvbmZpZy5nY2M6IEVuYWJsZSBwb3NpeCB0aHJlYWRzIGJ5IGRlZmF1bHQgb24gZGFyd2luLgoKMjAwMy0wOC0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjZmdjbGVhbnVwLmMgKG91dGdvaW5nX2VkZ2VzX21hdGNoKTogQ2hlY2sgUkVHX0VIX1JFR0lPTiBub3RlcwoJZXZlbiBpZiBuZWhlZGdlczEgaXMgMC4KCjIwMDMtMDgtMDEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMsIGZpeGluYy9maXhsaWIuYywgZml4aW5jL2ZpeGxpYi5oLAoJZml4aW5jL2ZpeHRlc3RzLmMsIGZpeGluYy9wcm9jb3Blbi5jLCBmaXhpbmMvc2VydmVyLmMsCglmaXhpbmMvc2VydmVyLmgsIGZpeGluYy9maXhpbmNsLmM6IEFOU0lmeSBmdW5jdGlvbiBwcm90b3R5cGVzCglhbmQgZGVmaW50aW9ucy4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGJyb2tlbl9jYWJzKTogTWFrZSBtYXRjaGluZyBtb3JlIGdlbmVyb3VzLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9tYXRoLmg6IFJlZ2VuZXJhdGUgdG8gbWF0Y2ggdGVzdF90ZXh0IGNoYW5nZS4KCjIwMDMtMDgtMDEgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZ2djLWNvbW1vbi5jIChndF9wY2hfcmVzdG9yZSk6IENhc2UgTUFQX0ZBSUxFRCB0byB2b2lkICouCgoyMDAzLTA4LTAxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhjZXB0LmMgKHNqbGpfZW1pdF9kaXNwYXRjaF90YWJsZSk6IFVzZSBwdHJfbW9kZSwgbm90IFBtb2RlLAoJZm9yIGFjY2Vzc2VzIHRvIGV4Y19wdHIuCgoyMDAzLTA4LTAxICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChGcm9udCBFbmQgRGlyZWN0b3J5KTogRG9uJ3QgbWFrZSByZWZlcmVuY2VzCgl0byBsaWJzdWJkaXIsIGl0J3Mgbm90IHBhcnQgb2YgdGhlIGludGVyZmFjZSB0byBmcm9udGVuZHMuCgkqIGRvYy9pbnN0YWxsLnRleGkgKENvbmZpZ3VyYXRpb24pOiBIZWxwIHVzZXJzIHJlYWQgZmFzdGVyIGJ5IHNheWluZwoJdGhhdCBHQ0MncyBjb25maWd1cmUgb3B0aW9ucyBhcmUgdGhlIHN0YW5kYXJkIGF1dG9jb25mIG9uZXMuCglNZW50aW9uIC0tbGliZGlyLiAgVXBkYXRlIHRoZSBkZWZhdWx0IHJ1bGVzIGZvciBmaW5kaW5nIHRoZQoJYXNzZW1ibGVyLiAgRG9uJ3QgdXNlIGxpYnN1YmRpciBzaW5jZSB3ZSBoYXZlbid0IHNhaWQgd2hhdCBpdCBtZWFucy4KCShTcGVjaWZpYyk6IEluIHRoZSBTb2xhcmlzIDcgbm90ZXMsIHVwZGF0ZSB0aGUgcGxhY2UgdG8gcHV0IHRoZQoJYXNzZW1ibGVyLgoJKiBkb2MvaW52b2tlLnRleGk6IFVwZGF0ZSBsaWIvZ2NjLWxpYiB0byBsaWIvZ2NjLgoJKiBkb2MvY3BwLnRleGkgKFNlYXJjaCBQYXRoKTogQWN0dWFsbHksIHRoZSBzZWFyY2ggcGF0aAoJZGVwZW5kcyBvbiBsaWJkaXIsIHdoaWNoIGNhbiByZWxvY2F0ZSB3aXRoIGNwcC4KCSogZG9jL3RtLnRleGkgKERyaXZlcik6IERvbid0IGRvY3VtZW50IFNUQU5EQVJEX0VYRUNfUFJFRklYLCBpdCdzCglub3cgYSBwcml2YXRlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBNYWtlZmlsZSBhbmQgdGhlIGRyaXZlci4KCjIwMDMtMDgtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzeXN0ZW0uaDogUG9pc29uIEFTTV9TSU1QTElGWV9EV0FSRl9BRERSLgoKCSogdmFyYXNtLmMgKGxvb2t1cF9jb25zdGFudF9kZWYpOiBOZXcgZnVuY3Rpb24uCgkqIHJ0bC5oIChsb29rdXBfY29uc3RhbnRfZGVmKTogRGVjbGFyZSBpdC4KCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSk6IFVzZSBpdC4KCVVzZSB0YXJnZXRtLmRlbGVnaXRpbWl6ZV9hZGRyZXNzLCBub3QgQVNNX1NJTVBMSUZZX0RXQVJGX0FERFIuCgoyMDAzLTA4LTAxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKGdldHRhZ3MsIHB1c2hkZWNsX2Z1bmN0aW9uX2xldmVsKTogRGVsZXRlLgoJKGxhc3RfZnVuY3Rpb25fcGFybV92YXJzKTogUmVuYW1lIGxhc3RfZnVuY3Rpb25fcGFybV9vdGhlcnMuCgkoY3VycmVudF9mdW5jdGlvbl9wYXJtX3ZhcnMpOiBSZW5hbWUgY3VycmVudF9mdW5jdGlvbl9wYXJtX290aGVycy4KCShzdHJ1Y3QgY19zY29wZSk6IFJld3JpdGUgY29tbWVudCBleHBsYWluaW5nIHRoaXMgZGF0YSBzdHJ1Y3R1cmUuCglBZGQgbmFtZXNfbGFzdCwgYmxvY2tzX2xhc3QsIHBhcm1zX2xhc3QgZmllbGRzLiAgUmVuYW1lCglpbmNvbXBsZXRlX2xpc3QgdG8gaW5jb21wbGV0ZS4KCShTQ09QRV9MSVNUX0FQUEVORCwgU0NPUEVfTElTVF9DT05DQVQpOiBOZXcgbWFjcm9zLgoJKHBvcGxldmVsKTogSWdub3JlIHNlY29uZCBhcmd1bWVudC4gIE5vIG5lZWQgdG8gbnJldmVyc2UKCWFueXRoaW5nLiAgUmVzdHJ1Y3R1cmUgc3VjaCB0aGF0IGVhY2ggbGlzdCBpcyBwcm9jZXNzZWQKCWV4YWN0bHkgb25jZS4gIFVzZSAnY29uc3QgbG9jYXRpb25fdCAqbG9jdXMnIHN5bnRhY3RpYyBzdWdhcgoJdmFyaWFibGUgd2hlcmUgdXNlZnVsLiAgSXNzdWUgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmdzCglvdXJzZWx2ZXMsIGRvIG5vdCByZWx5IG9uIGZ1bmN0aW9uLmMuCgkoaW5zZXJ0X2Jsb2NrLCBwdXNoZGVjbCwgYmluZF9sYWJlbCk6IFVzZSBTQ09QRV9MSVNUX0FQUEVORC4KCShwdXNoZGVjbF90b3BfbGV2ZWwpOiBMaWtld2lzZS4gIERvbid0IGNhbGwgZHVwbGljYXRlX2RlY2xzLgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IGRlY2wgY2Fubm90IGJlIGVycm9yX21hcmtfbm9kZS4KCSh1bmRlY2xhcmVkX3ZhcmlhYmxlKTogTWFuaXB1bGF0ZSBzY29wZSBzdHJ1Y3R1cmUgZGlyZWN0bHkuCgkoY19tYWtlX2ZuYW1lX2RlY2wpOiBMaWtld2lzZS4KCShnZXRkZWNscywgY19pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEZpeCBjb21tZW50LgoJKG1hcmtfZm9yd2FyZF9wYXJtX2RlY2xzKTogVXNlIFNDT1BFX0xJU1RfQ09OQ0FULiAgTm8gbmVlZAoJZm9yICdsYXN0JyB2YXJpYWJsZS4KCShncm9rcGFybXMpOiBObyBuZWVkIHRvIG5yZXZlcnNlIHBhcm1zIGxpc3QuCgkoc3RvcmVfcGFybV9kZWNsc19uZXdzdHlsZSk6IFNldCB1cCB0aGUgcGFybXNfbGFzdCBhbmQKCW5hbWVzX2xhc3QgZmllbGRzIG9mIHRoZSBuZXcgc2NvcGUgdG9vLgoJKHN0b3JlX3Bhcm1fZGVjbHNfb2xkc3R5bGUpOiBDYW4gYXNzdW1lIERFQ0xfV0VBSyBpcyBub3Qgc2V0CglvbiBwYXJtcyB0byBiZWdpbiB3aXRoOyBjaGVjayB0aGlzIHVuZGVyIEVOQUJMRV9DSEVDS0lORy4gIFNldAoJdXAgcGFybXNfbGFzdC4KCShjaGVja19mb3JfbG9vcF9kZWNscyk6IFJlZmVyIGRpcmVjdGx5IHRvIGN1cnJlbnRfc2NvcGUtPnRhZ3MuCglVc2UgY29uc2lzdGVudCBxdW90ZSBzdHlsZSBpbiBkaWFnbm9zdGljcy4KCShjX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBUaGUgbmFtZXMgbGlzdCBpcyBub3QgYmFja3dhcmQuCgoJKiBjLWNvbW1vbi5oOiBEb24ndCBwcm90b3R5cGUgZ2V0dGFncy4KCSogYy1wYXJzZS5pbjogQ2FsbCBwb3BsZXZlbCB3aXRoIHNlY29uZCBhcmd1bWVudCAwIGFsd2F5cy4KCjIwMDMtMDgtMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmRlZjogUmVzb3J0IGJ1aWx0aW5zLgoKMjAwMy0wOC0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmIChERUZfR0NDX0JVSUxUSU4sIERFRl9MSUJfQlVJTFRJTiwKCURFRl9FWFRfTElCX0JVSUxUSU4sIERFRl9DOTlfQlVJTFRJTiwgREVGX0M5OV9DOTBSRVNfQlVJTFRJTik6CglQcmVwZW5kICJfX2J1aWx0aW5fIiBvbnRvIE5BTUUgd2l0aCBzdHJpbmcgY29uY2F0ZW5hdGlvbi4gIFJlbW92ZQoJZXhwbGljaXQgIl9fYnVpbHRpbl8iIGZyb20gZWFjaCBtYWNybyBjYWxsLgoKCVJlZm9ybWF0IGVudGlyZSBmaWxlLgoKMjAwMy0wOC0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmIChBVFRSX01BVEhGTl9FUlJOTywgQVRUUl9NQVRIRk5fRlBST1VORElORywKCUFUVFJfTUFUSEZOX0ZQUk9VTkRJTkdfRVJSTk8pOiBOZXcgbWFjcm9zLiAgVXNlIHRocm91Z2hvdXQuCgoyMDAzLTA4LTAxICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3NlbGVjdF9jY21vZGUpOiBEbyBub3QgYXR0ZW1wdCB0byB1c2UgQ0NMLAoJQ0NMMSwgb3IgQ0NMMiBtb2RlcyB3aXRoIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMuCgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmFkZHNmM19jYyIsICIqYWRkc2YzX2Njb25seSIsICIqYWRkZGYzX2NjIiwKCSIqYWRkZGYzX2Njb25seSIsICIqc3Vic2YzX2NjIiwgIipzdWJzZjNfY2Nvbmx5IiwgIipzdWJkZjNfY2MiLAoJIipzdWJkZjNfY2Nvbmx5Iik6IE5ldyBpbnNucy4KCSgiKm5lZ2Fic3NpMiIsICIqbmVnYWJzZGkyIiwgIipuZWdhYnNkZjIiLCAiKm5lZ2Fic3NmMiIpOiBMaWtld2lzZS4KCjIwMDMtMDgtMDEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2VmaWxlLmluOiBSZWZpbmUgZGVwZW5kZW5jaWVzLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IERvIG5vdGhpbmcgZm9yIC1XaW1wb3J0LgoJKiBjLm9wdDogVXBkYXRlIGhlbHAgZm9yIC1XaW1wb3J0LgoJKiBjcHBmaWxlcy5jOiBJbmNsdWRlIGhhc2h0YWIuaC4gIFVwZGF0ZSBjb21tZW50cy4KCShzdGFja19maWxlKTogUmVhZCB0aGUgZmlsZSBiZWZvcmUgdXBkYXRpbmcgZGVwZW5kZW5jaWVzLgoJKG9uY2Vfb25seV9maWxlX3ApOiBCZSBzbWFydGVyIGFib3V0IG1hcmtpbmcgb25jZS1vbmx5IGZpbGVzLgoJKF9jcHBfbWFya19maWxlX29uY2Vfb25seSk6IENvcnJlY3QgdGhlIGNoZWNrIGZvciBleGlzdGVuY2Ugb24KCXRoZSBsaXN0LgoJKG9wZW5fZmlsZV9mYWlsZWQpOiBVc2UgbmFtZSBub3QgcGF0aCwgd2hpY2ggaXMgTlVMTC4KCSogY3BwaGFzaC5oOiBEb24ndCBpbmNsdWRlIGhhc2h0YWIuaC4KCShzdHJ1Y3QgX2NwcF9maWxlKTogUmVtb3ZlLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogVXBkYXRlLgoJKiBjcHBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyKTogRG9uJ3QgaW5pdGlhbGl6ZSB3YXJuX2ltcG9ydC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbW92ZSB3YXJuX2ltcG9ydC4KCShjcHBfc2ltcGxpZnlfcGF0aCk6IFJlbW92ZS4KCjIwMDMtMDgtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzExMjk1CgkqIGRvYy9leHRlbmQudGV4aSAoU3RhdGVtZW50IEV4cHJlc3Npb25zKTogRG9jdW1lbnQgQysrIHNlbWFudGljcy4KCjIwMDMtMDctMzEgIFNVR0lPS0EgVG9zaGlub2J1ICA8c3VnaW9rYUBpdG9uZXQuY28uanA+CgoJKiBjb25maWcuZ2NjIChzaC0qLWxpbnV4Kik6IERvIG5vdCBvdmVycmlkZSBzaC90LWxpbnV4IHdpdGggc2gvdC1sZS4KCjIwMDMtMDctMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmOiBVc2UgYExPTkdET1VCTEUnIGluc3RlYWQgb2YgYExPTkdfRE9VQkxFJwoJdGhyb3VnaG91dC4KCSogYnVpbHRpbnMuZGVmOiBMaWtld2lzZS4KCjIwMDMtMDctMzEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGJ1YmJsZXN0cmFwKTogRG9uJ3QgcmVxdWlyZSBhIHByZXZpb3VzIGZ1bGwKCWJvb3RzdHJhcC4KCgkqIGV4cHIuYyAobW9zdGx5X3plcm9zX3ApOiBObyBsb25nZXIgc3RhdGljLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgkqIHN0bXQuYyAocmVzb2x2ZV9hc21fb3BlcmFuZF9uYW1lcyk6IERvbid0IGNvcHkgdGhlIHBhdHRlcm4KCXVubGVzcyB3ZSBuZWVkIHRvIGRvIHN1YnN0aXR1dGlvbnMuCgoyMDAzLTA3LTMxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCA8TVVMVF9FWFBSPik6IE9wdGltaXplIGJvdGggeCpwb3coeCxjKSBhbmQKCXBvdyh4LGMpKnggYXMgcG93KHgsYysxKSBmb3IgY29uc3RhbnQgdmFsdWVzIGMuICBPcHRpbWl6ZSB4KngKCWFzIHBvdyh4LDIuMCkgd2hlbiB0aGUgbGF0dGVyIHdpbGwgYmUgZXhwYW5kZWQgYmFjayBpbnRvIHgqeC4KCShmb2xkIDxSRElWX0VYUFI+KTogT3B0aW1pemUgcG93KHgsYykveCBhcyBwb3coeCxjLTEpLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9wb3cpOiBJZ25vcmUgZmxhZ19lcnJub19tYXRoIGFzCglwb3cgY2FuIG5ldmVyIHNldCBlcnJubyB3aGVuIHVzZWQgd2l0aCBhbiBpbnRlZ2VyIGV4cG9uZW50LgoJQWx3YXlzIHVzZSBleHBhbmRfcG93aSB3aGVuIGV4cG9uZW50IGlzIC0xLCAwLCAxIG9yIDIuCgkoZm9sZF9idWlsdGluKTogRG9uJ3QgcmV3cml0ZSBwb3coeCwyLjApIGFzIHgqeCBub3IgcG93KHgsLTIuMCkKCWFzIDEuMC8oeCp4KS4gIFRoaXMgYXZvaWRzIHVuYm91bmRlZCByZWN1cnNpb24gYXMgd2Ugbm93IHByZWZlcgoJdGhlIHBvdyBmb3JtcyBvZiB0aGVzZSBleHByZXNzaW9ucy4KCjIwMDMtMDctMzEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxpYmV4ZWNkaXIpOiBOZXcuCgkobGlic3ViZGlyKTogVXNlIGdjYyBpbnN0ZWFkIG9mIGdjYy1saWIuCgkobGliZXhlY3N1YmRpcik6IE5ldy4KCShPUkRJTkFSWV9GTEFHU19UT19QQVNTKTogQWRkIGxpYmV4ZWNzdWJkaXIuCgkoRFJJVkVSX0RFRklORVMpOiBBZGQgU1RBTkRBUkRfTElCRVhFQ19QUkVGSVgsIHVzZSBnY2MgaW5zdGVhZCBvZgoJZ2NjLWxpYi4KCShpbnN0YWxsZGlycyk6IE1ha2UgbGliZXhlY3N1YmRpci4KCShpbnN0YWxsLWNvbW1vbik6IFB1dCBleGVjdXRhYmxlcyBpbiBsaWJleGVjc3ViZGlyLgoJKGl0b29sc2Rpcik6IFVzZSBsaWJleGVjc3ViZGlyLgoJKGl0b29sc2RhdGFkaXIpOiBOZXcuCgkoaW5zdGFsbC1ta2hlYWRlcnMpOiBTZXBhcmF0ZSBkYXRhIGZpbGVzIGFuZCBleGVjdXRhYmxlcy4KCShpbnN0YWxsLWNvbGxlY3QyKTogUHV0IGV4ZWN1dGFibGVzIGluIGxpYmV4ZWNzdWJkaXIuCgkodW5pbnN0YWxsKTogUmVtb3ZlIGxpYmV4ZWNzdWJkaXIuCgkqIG1raGVhZGVycy5pbjogVXBkYXRlIGZvciBuZXcgYXJyYW5nZW1lbnQgb2YgZmlsZXMuCgkobGliZXhlY2Rpcik6IE5ldy4KCShsaWJleGVjc3ViZGlyKTogTmV3LgoJKGl0b29sc2Rpcik6IFVzZSBsaWJleGVjc3ViZGlyLgoJKGl0b29sc2RhdGFkaXIpOiBOZXcuCgkqIGdjYy5jIChnY2NfbGliZXhlY19wcmVmaXgpOiBOZXcuCgkoU1RBTkRBUkRfTElCRVhFQ19QUkVGSVgpOiBVc2UgZ2NjIGluc3RlYWQgb2YgZ2NjLWxpYi4KCShzdGFuZGFyZF9leGVjX3ByZWZpeF8xKTogVXNlIGxpYmV4ZWMuCgkoc3RhbmRhcmRfZXhlY19wcmVmaXhfMik6IE5ldy4KCShzdGFuZGFyZF9saWJleGVjX3ByZWZpeCk6IE5ldy4KCShwcm9jZXNzX2NvbW1hbmQpOiBVcGRhdGUgZm9yIG5ldyBhcnJhbmdlbWVudCBvZiBmaWxlcy4gIENvbXB1dGUKCWdjY19saWJleGVjX3ByZWZpeC4gIFVwZGF0ZSBmb3IgY2hhbmdlIGZyb20gZ2NjLWxpYiB0byBnY2MuCgoyMDAzLTA3LTMxICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGluY2xoYWNrLmRlZiAoc3RkaW9fdmFfbGlzdCk6IEF2b2lkIGJvZ3VzIHJlcGxhY2VtZW50IHdoaWNoCgl0cmlnZ2VycyBvbiBJbnRlcml4LgoJKiBmaXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTMxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobGVnaXRpbWF0ZV9waWNfYWRkcmVzc19kaXNwX3ApOiBEaXNhbGxvdyBUTFMKCVNZTUJPTF9SRUZzIG5vdCBpbnNpZGUgVU5TUEVDIGV2ZW4gaW4gUExVUyBydHguCgoyMDAzLTA3LTMxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSwgY2FzZSBDT05TVFJVQ1RPUik6IE5ldyBjYXNlLgoKMjAwMy0wNy0zMSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBvcHRzLmMgKGluX2ZuYW1lcywgbnVtX2luX2ZuYW1lcyk6ICBNb3ZlZCBoZXJlIGZyb20gYy1vcHRzLgoJKGFkZF9pbnB1dF9maWxlbmFtZSk6ICBOZXcgZnVuY3Rpb24uCgkoaGFuZGxlX29wdGlvbnMpOiAgQ2FsbCBhZGRfaW5wdXRfZmlsZW5hbWUgZGlyZWN0bHkgaW5zdGVhZCBvZgoJd2l0aCBhIGxhbmcgaG9vay4KCSogb3B0cy5oIChpbl9mbmFtZXMsIG51bV9pbl9mbmFtZXMpOiAgTW92ZWQgaGVyZS4KCShhZGRfaW5wdXRfZmlsZW5hbWUpOiAgRGVjbGFyZS4KCSogYy1kZWNsLmM6ICBOZWVkIHRvICNpbmNsdWRlIG9wdHMuaC4KCSogTWFrZWZpbGUuaW4gKGMtZGVjbC5vKTogIEFsc28gZGVwZW5kcyBvbiBvcHRzLmguCgkqIGMtb3B0cy5jIChpbl9mbmFtZXMsIG51bV9pbl9mbmFtZXMpOiAgTW92ZWQgdG8gb3B0cy5jLgoJKGNfY29tbW9uX2hhbmRsZV9maWxlbmFtZSk6ICBSZXBsYWNlZCBieSBhZGRfaW5wdXRfZmlsZW5hbWUuCgkqIGMtY29tbW9uLmggKGluX2ZuYW1lcywgbnVtX2luX2ZuYW1lcywgY19jb21tb25faGFuZGxlX2ZpbGVuYW1lKToKCVJlbW92ZS4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogIFJlbW92ZSBoYW5kbGVfZmlsZW5hbWUgaG9vay4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0hBTkRMRV9GSUxFTkFNRSk6ICBSZW1vdmUgbWFjcm8uCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6ICBSZW1vdmUgdXNlIG9mIExBTkdfSE9PS1NfSEFORExFX0ZJTEVOQU1FLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19IQU5ETEVfRklMRU5BTUUpOiAgUmVtb3ZlIG1hY3JvLgoKMjAwMy0wNy0zMSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IFNldCBKVU1QX0xBQkVMIGZvciBuZXdseSBjcmVhdGVkCgl1bmNvbmRpdGlvbmFsIGp1bXAuCgoyMDAzLTA3LTMxICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGb2xkIHNvbWUgY29tcGFyaXNvbnMgb2YgYml0IG9wZXJhdGlvbnMuCgoyMDAzLTA3LTMxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoY3JlYXRlX2VkZ2UpOiBGaXggdHlwby4KCSogaTM4Ni5jIChwaWNfc3ltYm9saWNfb3BlcmFuZCk6IFJlb3JkZXIgdGVzdHMuCgoyMDAzLTA3LTMxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2djb3YudGV4aSAoSW52b2tpbmcgR2Nvdik6IERlc2NyaWJlIG91dHB1dCBuYW1lIG1hbmdsaW5nCgltb3JlIGZ1bGx5LgoJKEdjb3YgRGF0YSBGaWxlcyk6IFVwZGF0ZS4KCjIwMDMtMDctMzEgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnLmdjYyAoYWxwaGEqLWRlYy1vc2ZbNDVdKik6IEVuYWJsZSBQT1NJWCB0aHJlYWQgc3VwcG9ydCBieQoJZGVmYXVsdC4KCgkqIGd0aHItcG9zaXguYzogTmV3IGZpbGUuCgkqIGd0aHItcG9zaXguaDogRGVmaW5lIF9SRUVOVFJBTlQgaWYgbWlzc2luZy4KCU1ha2UgX0xJQk9CSkMgI3ByYWdtYSB3ZWFrIHZpc2libGUgd2l0aCBfTElCT0JKQ19XRUFLLgoKCSogY29uZmlnL2FscGhhL3Qtb3NmNCAoU0hMSUJfTElOSyk6IEhpZGUgZHVtbXkgZnVuY3Rpb25zIHByb3ZpZGVkCglieSBndGhyLXBvc2l4Lm8uCgkqIGNvbmZpZy9hbHBoYS90LW9zZi1wdGhyZWFkOiBOZXcgZmlsZS4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGFscGhhX3B0aHJlYWQpOiBOZXcgZml4LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9wdGhyZWFkLmggW0FMUEhBX1BUSFJFQURfQ0hFQ0tdOiBOZXcgdGVzdGNhc2UuCgoJKiBkb2MvaW5zdGFsbC50ZXhpIChhbHBoYSotZGVjLW9zZiopOiBSZW1vdmUgLS1lbmFibGUtdGhyZWFkcwoJd2FybmluZy4KCUZpeGVzIFBSIGJvb3RzdHJhcC85MzMwLgoKMjAwMy0wNy0zMSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWd1cmUuaW4gKGdjY19jdl9sZF9oaWRkZW4pOiBBbHNvIGRpc2FibGUgb24gbWlwcy1zZ2ktaXJpeDUqCgl3aXRob3V0IEdOVSBsZC4KCVVwZGF0ZSBjb21tZW50LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTMxICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV8yKTogUHJldmVudCBpbnRlcmJsb2NrIG1vdmUgb2YgQ0MwCglzZXR0ZXIuCgoyMDAzLTA3LTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmRlZjogQWxwaGFiZXRpemUuCgoyMDAzLTA3LTMwICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBkb2MvYy10cmVlLnRleGk6IE5vcm1hbGl6ZSBzcGVsbGluZ3Mgb2YgImxvd2VyY2FzZSIgYW5kCgkidXBwZXJjYXNlIi4KCSogZG9jL2NwcC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL21kLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvcnRsLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aTogTGlrZXdpc2UuCgoyMDAzLTA3LTMwICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy5zdGFnZTEsIG9iamMuc3RhZ2UyLCBvYmpjLnN0YWdlMykKCShvYmpjLnN0YWdlNCwgb2JqYy5zdGFnZXByb2ZpbGUsIG9iamMuc3RhZ2VmZWVkYmFjayk6IFJlbW92ZSBtb3ZlcwoJb2YgY2Mxb2JqLgoKMjAwMy0wNy0zMCAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoU0laRV9UWVBFLCBQVFJESUZGX1RZUEUpOiBVbmRlZiB0aGVzZQoJbWFjcm9zIGJlZm9yZSBkZWZpbmluZyB0aGVtLgoKMjAwMy0wNy0zMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoVU5TUEVDX1JPVU5ELCBVTlNQRUNfU0VUSElHSCwKCVVOU1BFQ1ZfQkxPQ0tBR0UpOiBOZXcgY29uc3RhbnRzLgoJKCIqc2V0aGlnaHFpc2kiLCAiKnNldGhpZ2hoaXNpIiwgIipzZXRoaXFpZGlfNjQiLCAiKnNldGhpcWlkaV8zMSIsCgkiKmV4dHJhY3RxaSIsICIqZXh0cmFjdGhpIiwgIipleHRlbmRxaWRpMiIgc3BsaXR0ZXIsICIqZXh0ZW5kcWlzaTIiCglzcGxpdHRlciwgImZpeF90cnVuY2RmZGkyX2llZWUiLCAiZml4X3RydW5jZGZzaTJfaWVlZSIsCgkiZml4X3RydW5jc2ZkaTIiLCAiZml4X3RydW5jc2ZzaTIiLCAiYmxvY2thZ2UiKTogVXNlIHRoZW0uCgoJKGFsbCBpbnNucyBhbmQgZXhwYW5kZXJzKTogV3JpdGUgb3V0cHV0IGNvbnRyb2wgc3RyaW5nIGFzIGJyYWNlIGJsb2NrCgl3aGVyZSBhcHByb3ByaWF0ZS4gIFJlbW92ZSBcLWVzY2FwZXMgZm9yIGRvdWJsZXF1b3RlIGNoYXJhY3RlcnMuCgoyMDAzLTA3LTMxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnY3NlLmMgKGluc2VydF9zdG9yZSk6IEZpeCB0eXBvIGluIHByZXZpb3VzIHBhdGNoLgoKMjAwMy0wNy0zMCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY3BwZmlsZXMuYyAoc3RhY2tfZmlsZSwgb3Blbl9maWxlX2ZhaWxlZCk6IFVzZSBwYXRoIGZvciBkZXBzLgoKMjAwMy0wNy0zMCAgQW5kaSBLbGVlbiAgPGFrQG11Yy5kZT4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogQWxsb3cgTFRVIGluIHRoZSBsb29wIGNvbmRpdGlvbi4KCjIwMDMtMDctMzAgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IENhbmNlbCBSRUdfVkFMVUVfUFJPRklMRSBub3Rlcy4KCSogZ2Nvdi1pby5oIChHQ09WX0ZJUlNUX1ZBTFVFX0NPVU5URVIsIEdDT1ZfTEFTVF9WQUxVRV9DT1VOVEVSLAoJR0NPVl9OX1ZBTFVFX0NPVU5URVJTKTogTmV3LgoJKiBwcm9maWxlLmMgKGNvbXB1dGVfdmFsdWVfaGlzdG9ncmFtcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoYnJhbmNoX3Byb2IpOiBSZWFkIGJhY2sgdGhlIHZhbHVlIGhpc3RvZ3JhbXMuCgkqIHJ0bC5jIChyZWdfbm90ZV9uYW1lKTogQWRkIG5hbWUgZm9yIFJFR19WQUxVRV9QUk9GSUxFIG5vdGUuCgkqIHJ0bC5oIChlbnVtIHJlZ19ub3RlKTogQWRkIFJFR19WQUxVRV9QUk9GSUxFIG5vdGUuCgkqIHZhbHVlLXByb2YuYzogQWRkIGNvbW1lbnQgb24gcmVhZGluZyB0aGUgcHJvZmlsZS4KCSogdmFsdWUtcHJvZi5oIChDT1VOVEVSX0ZPUl9ISVNUX1RZUEUsIEhJU1RfVFlQRV9GT1JfQ09VTlRFUik6IE5ldy4KCSogZG9jL2ludm9rZS50ZXhpICgtZnByb2ZpbGUtdmFsdWVzKTogRG9jdW1lbnQgYmVoYXZpb3Igd2l0aAoJLWZicmFuY2gtcHJvYmFiaWxpdGllcy4KCjIwMDMtMDctMzAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGxvbmdsb25nLmggKFBvd2VyUEMgdW11bF9wcG1tKTogRG8gbm90IHRlc3QgX192eHdvcmtzX18uCgoyMDAzLTA3LTMwICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmggKEVIX1JFVFVSTl9IQU5ETEVSX1JUWCk6IENvbXB1dGUgb2Zmc2V0CglzeW1ib2xpY2FsbHkuCgoyMDAzLTA3LTMwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnY3NlLmMgKGluc2VydF9zdG9yZSk6IElnbm9yZSBmYWtlIGVkZ2VzLgoKCSogYy1jb21tb24uYyAoZmxhZ192dGFibGVfZ2MpOiBLaWxsLgoJKiBjLWNvbW1vbi5nIChmbGFnX3Z0YWJsZV9nYyk6IEtpbGwuCgkqIGMtb3B0cyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IEtpbGwuCgkqIGMub3B0IChmdnRhYmxlLWdjKTogS2lsbC4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRG8gbm90IGNhbGwgYXNzZW1ibGVfdnRhYmxlX2VudHJ5LgoJKiBvdXRwdXQuaCAoYXNzZW1ibGVfdnRhYmxlX2VudHJ5LCBhc3NlbWJsZV92dGFibGVfaW5oZXJpdCk6IEtpbGwuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92dGFibGVfZW50cnksIGFzc2VtYmxlX3Z0YWJsZV9pbmhlcml0KTogS2lsbC4KCgkqIGludm9rZS50ZXhpICgtZnRhYmxlLWdjKTogS2lsbCBkb2N1bWVudGF0aW9uLgoKCSogdHJlZS1pbmxpbmUuYyAoaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBEb24ndCBzZXQgREVDTF9VTklOTElOQUJMRQoJanVzdCBiZWNhdXNlIGZ1bmN0aW9uIGJvZHkgaXMgbWlzc2luZy4KCgkqIGkzODYuYyAocGljX3N5bWJvbGljX29wZXJhbmQpOiBQcm9wZXJseSBkZXRlY3QgUklQIHJlbGF0aXZlIHVuc3BlY3MuCgoyMDAzLTA3LTMwICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIHVud2luZC1zamxqLmM6IEZpeCB0eXBvIGluIGZpbGUgZGVzY3JpcHRpb24uCgoyMDAzLTA3LTMwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY2FsbHMuYyAobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogV2hlbiBzaGlmdGluZyByZWcgc2l6ZWQgdmFsdWVzCgl0byB0aGUgbXNiLCBtb3ZlIHRoZSB2YWx1ZSB0byBhIHJlZyBmaXJzdC4KCjIwMDMtMDctMjkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY3BwZmlsZXMuYyAoc3RhY2tfZmlsZSk6IExlYXZlIGZpbGVuYW1lIGFzICIiIHJhdGhlciB0aGFuICI8c3RkaW4+Ii4KCSogbGluZS1tYXAuaCAobGluZW1hcF9hZGQpOiBVcGRhdGUgY29tbWVudHMuCgkqIGxpbmUtbWFwLmMgKGxpbmVtYXBfYWRkKTogVXBkYXRlIGNvbW1lbnRzLCBpbnRlcnByZXQgemVyby1sZW5ndGgKCWZpbGVuYW1lIGFzICI8c3RkaW4+Ii4KCjIwMDMtMDctMjkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogbWtpbnN0YWxsZGlyczogSW1wb3J0IGF1dG9jb25mIDIuNTcgLyBhdXRvbWFrZSAxLjcgdmVyc2lvbi4KCjIwMDMtMDctMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAobGFzdF9mdW5jdGlvbl9wYXJtX3ZhcnMsIGN1cnJlbnRfZnVuY3Rpb25fcGFybV92YXJzKToKCU5ldyBzdGF0aWMgdmFyaWFibGVzLgoJKHN0cnVjdCBjX3Njb3BlKTogQWRkIHBhcm1zIGFuZCB3YXJuZWRfZm9yd2FyZF9wYXJtX2RlY2xzCglmaWVsZHM7IHJlbW92ZSBwYXJtX29yZGVyLgoJKHN0b3JlZGVjbHMsIHN0b3JldGFncyk6IERlbGV0ZS4KCShwb3BsZXZlbCk6IEFsc28gY2xlYXIgYmluZGluZ3Mgb24gdGhlIHBhcm1zIGNoYWluLgoJKHB1c2hkZWNsKTogSGFuZGxlIGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIHBhcmFtZXRlcnMsIGFuZAoJY2hhaW4gUEFSTV9ERUNMcyBvbiB0aGUgcGFybXMgbGlzdCwgbm90IHRoZSBuYW1lcyBsaXN0LgoJKGxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwpOiBDaGVjayBmb3IgUEFSTV9ERUNMcyBvbiB0aGUgcGFybXMKCWxpc3QgdG9vLgoJKHB1c2hfcGFybV9kZWNsKTogRG9uJ3QgdXBkYXRlIHBhcm1fb3JkZXIuCgkoY2xlYXJfcGFybV9vcmRlcik6IFJlbmFtZSBtYXJrX2ZvcndhcmRfcGFybV9kZWNscy4gIElzc3VlIHRoZQoJd2FybmluZywgb25seSBvbmNlIHBlciBwYXJhbWV0ZXIgbGlzdCwgYW5kIHNldCBUUkVFX0FTTV9XUklUVEVOCglvbiB0aGUgZGVjbHMgaGVyZS4gIFRoZW4gbW92ZSB0aGUgZm9yd2FyZCBkZWNscyB0byB0aGUgbmFtZXMgbGlzdC4KCShncm9rcGFybXMpOiBTZXQgbGFzdF9mdW5jdGlvbl9wYXJtX3ZhcnMuCgkoZ2V0X3Bhcm1faW5mbyk6IERvbid0IHVzZSBnZXR0YWdzIG9yIGdldGRlY2xzLiAgTm8gbmVlZCB0bwoJZXh0cmFjdCBub24tcGFybXMgZnJvbSB0aGUgcGFybXMgbGlzdCwgb3IgcmVvcmdhbml6ZSB0aGUgcGFybXMKCWxpc3QuICBGZWVkIG5vbnBhcm1zIGJhY2sgaW4gdGhlIFRSRUVfVFlQRSBvZiB0aGUgbGlzdCBub2RlCglyZXR1cm5lZC4gIElzc3VlIG9ubHkgb25lIGVycm9yIHBlciBwYXJhbWV0ZXIgbGlzdCBmb3IgInZvaWQiCglhcHBlYXJpbmcgbW9yZSB0aGFuIG9uY2UgaW4gc2FpZCBwYXJhbWV0ZXIgbGlzdC4gIENvbGxhcHNlCglwYXJtbGlzdF90YWdzX3dhcm5pbmcgaW50byB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIGRvdWJsZSBzY2FuCglvZiB0YWdzIGxpc3QuCgkoc3RhcnRfZnVuY3Rpb24pOiBTZXQgY3VycmVudF9mdW5jdGlvbl9wYXJtX3ZhcnMuCgkoc3RvcmVfcGFybV9kZWNsc19uZXdzdHlsZSk6IEJ5cGFzcyBwdXNoZGVjbCwgbWFuaXB1bGF0ZSBzY29wZQoJZGlyZWN0bHkuICBHZXQgbm9uLXBhcm1zIGZyb20gY3VycmVudF9mdW5jdGlvbl9wYXJtX3ZhcnM7IG5vCgluZWVkIHRvIGV4dHJhY3QgdGhlbSBmcm9tIHRoZSBwYXJtcyBjaGFpbi4gIFByb3Blcmx5IGJpbmQgdGFncwoJaW4gdGhlIG5ldyBzY29wZS4KCShzdG9yZV9wYXJtX2RlY2xzX29sZHN0eWxlKTogTm8gbmVlZCB0byBleHRyYWN0IG5vbi1wYXJhbWV0ZXJzCglmcm9tIHRoZSBwYXJtcyBjaGFpbiwgbm9yIHRvIHN0b3JlIHRoZW0gYmFjayBhZnRlcndhcmQuICBNb3ZlCglkZWNsYXJhdGlvbiB0byB0b3Agb2YgZnVuY3Rpb24sIHJlc3RydWN0dXJlIGNvZGUgcmVvcmRlcmluZwoJREVDTF9BUkdVTUVOVFMuCgkoc3RvcmVfcGFybV9kZWNscyk6IE5vIG5lZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB3YXJuX3NoYWRvdy4KCSogYy1wYXJzZS5pbjogRG9uJ3QgY2FsbCBwYXJtbGlzdF90YWdzX3dhcm5pbmcgbm9yCgljbGVhcl9wYXJtX29yZGVyLiAgQ2FsbCBtYXJrX2ZvcndhcmRfcGFybV9kZWNscyB3aGVuIGZvcndhcmQKCXBhcm0gZGVjbHMgYXJlIGVuY291bnRlcmVkLgoJKiBjLXRyZWUuaDogUHJvdG90eXBlIG1hcmtfZm9yd2FyZF9wYXJtX2RlY2xzOyBub3QKCWNsZWFyX3Bhcm1fb3JkZXIgb3IgcGFybWxpc3RfdGFnc193YXJuaW5nLgoKMjAwMy0wNy0yOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5jIChhbGxvd19wY2gpOiBSZW1vdmUuCgkqIGMtY29tbW9uLmggKGFsbG93X3BjaCk6IFJlbW92ZS4KCShjX2NvbW1vbl9ub19tb3JlX3BjaCk6IERlY2xhcmUuCgkqIGMtbGV4LmMgKGNfbGV4KTogQ2FsbCBjX2NvbW1vbl9ub19tb3JlX3BjaCB3aGVuIGFwcHJvcHJpYXRlLgoJKiBjLXBjaC5jOiBJbmNsdWRlIGhvc3Rob29rcy5oLgoJKGNfY29tbW9uX3ZhbGlkX3BjaCk6IERvbid0IGNoZWNrIGFsbG93X3BjaC4KCShjX2NvbW1vbl9yZWFkX3BjaCk6IENsZWFyIHZhbGlkX3BjaCB0byBwcmV2ZW50IHJlYWRpbmcgUENIIGZpbGVzLgoJKGNfY29tbW9uX25vX21vcmVfcGNoKTogTmV3LgoJKiBnZ2MtY29tbW9uLmM6IEluY2x1ZGUgaG9zdGhvb2tzLmguCgkoZ3RfcGNoX3NhdmUpOiBDYWxsIGd0X3BjaF9nZXRfYWRkcmVzcy4KCShndF9wY2hfcmVzdG9yZSk6IENhbGwgZ3RfcGNoX3VzZV9hZGRyZXNzLgoJKiBob29rcy5jIChob29rX3ZvaWRwX3NpemVfdF9udWxsKTogTmV3LgoJKGhvb2tfYm9vbF92b2lkcF9zaXplX3RfZmFsc2UpOiBOZXcuCgkqIGhvb2tzLmggKGhvb2tfdm9pZHBfc2l6ZV90X251bGwpOiBOZXcuCgkoaG9va19ib29sX3ZvaWRwX3NpemVfdF9mYWxzZSk6IE5ldy4KCSogaG9zdGhvb2tzLWRlZi5oIChIT1NUX0hPT0tTX0dUX1BDSF9HRVRfQUREUkVTUyk6IE5ldy4KCShIT1NUX0hPT0tTX0dUX1BDSF9VU0VfQUREUkVTUyk6IE5ldy4KCShIT1NUX0hPT0tTX0lOSVRJQUxJWkVSKTogQWRkIEhPU1RfSE9PS1NfR1RfUENIX0dFVF9BRERSRVNTLAoJSE9TVF9IT09LU19HVF9QQ0hfVVNFX0FERFJFU1MuCgkqIGhvc3Rob29rcy5oIChzdHJ1Y3QgaG9zdF9ob29rcyk6IEFkZCBndF9wY2hfZ2V0X2FkZHJlc3MsCglndF9wY2hfdXNlX2FkZHJlc3MuCgkqIGRvYy9ob3N0Y29uZmlnLnRleGkgKEhvc3QgQ29tbW9uKTogRG9jdW1lbnQKCUhPU1RfSE9PS1NfR1RfUENIX0dFVF9BRERSRVNTLCBIT1NUX0hPT0tTX0dUX1BDSF9VU0VfQUREUkVTUy4KCSogTWFrZWZpbGUuaW4gKGMtcGNoLm8pOiBEZXBlbmQgb24gaG9zdGhvb2tzLmguCgkoZ2djLWNvbW1vbi5vKTogTGlrZXdpc2UuCgoJKiBjb25maWcvcnM2MDAwL2hvc3QtZGFyd2luLmMgKEhPU1RfSE9PS1NfR1RfUENIX0dFVF9BRERSRVNTKTogRGVmaW5lLgoJKEhPU1RfSE9PS1NfR1RfUENIX1VTRV9BRERSRVNTKTogRGVmaW5lLgoJKHBjaF9hZGRyZXNzX3NwYWNlKTogTmV3LgoJKGRhcndpbl9yczYwMDBfZ3RfcGNoX2dldF9hZGRyZXNzKTogTmV3LgoJKGRhcndpbl9yczYwMDBfZ3RfcGNoX3VzZV9hZGRyZXNzKTogTmV3LgoKMjAwMy0wNy0yOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCVBSIHByZXByb2Nlc3Nvci8xMTU2OQoJUFIgcHJlcHJvY2Vzc29yLzExNjQ5CgkqIE1ha2VmaWxlLmluIChMSUJDUFBfREVQUyk6IEFkZCBIQVNIVEFCX0guCgkqIGNwcGZpbGVzLmM6IENvbXBsZXRlbHkgcmV3cml0dGVuLgoJKiBjLWluY3BhdGguYyAoZnJlZV9wYXRoLCByZW1vdmVfZHVwbGljYXRlcywgaGVhZHMsIHRhaWxzLCBhZGRfcGF0aCk6CglzdHJ1Y3QgY3BwX3BhdGggaXMgbm93IHN0cnVjdCBjcHBfZGlyLgoJKHJlbW92ZV9kdXBsaWNhdGVzKTogRG9uJ3Qgc2ltcGxpZnkgcGF0aCBuYW1lcy4KCSogYy1vcHRzLmMgKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBjcHBfcmVhZF9uZXh0X2ZpbGUgcmVuYW1lZAoJY3BwX3N0YWNrX2ZpbGUuCgkqIGNwcGhhc2guaDogSW5jbHVkZSBoYXNodGFiLmguCgkoX2NwcF9maWxlKTogRGVjbGFyZS4KCShzdHJ1Y3QgY3BwX2J1ZmZlcik6IHN0cnVjdCBpbmNsdWRlX2ZpbGUgaXMgbm93IHN0cnVjdCBfY3BwX2ZpbGUsCglhbmQgc3RydWN0IGNwcF9wYXRoIGlzIG5vdyBzdHJ1Y3QgY3BwX2Rpci4gIFJlbmFtZSBtZW1iZXJzLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogU2ltaWxhcmx5LiAgTmV3IG1lbWJlcnMgb25jZV9vbmx5X2ZpbGVzLAoJZmlsZV9oYXNoLCBmaWxlX2hhc2hfZW50cmllcywgcXVvdGVfaWdub3Jlc19zb3VyY2VfZGlyLAoJbm9fc2VhcmNoX3BhdGgsIHNhd19wcmFnbWFfb25jZS4gIFJlbW92ZSBhbGxfaW5jbHVkZV9maWxlcyBhbmQKCW1heF9pbmNsdWRlX2xlbi4gIE1ha2Ugc29tZSBtZW1iZXJzIGJvb2wuCgkoX2NwcF9tYXJrX29ubHlfb25seSk6IFJlbmFtZWQgZnJvbSBfY3BwX25ldmVyX3JlcmVhZC4KCShfY3BwX3N0YWNrX2ZpbGUpOiBSZW5hbWVkIGZyb20gX2NwcF9yZWFkX2ZpbGUuCgkoX2NwcF9zdGFja19pbmNsdWRlKTogUmVuYW1lZCBmcm9tIF9jcHBfZXhlY3V0ZV9pbmNsdWRlLgoJKF9jcHBfaW5pdF9maWxlcyk6IFJlbmFtZWQgZnJvbSBfY3BwX2luaXRfaW5jbHVkZXMuCgkoX2NwcF9jbGVhbnVwX2ZpbGVzKTogUmVuYW1lZCBmcm9tIF9jcHBfY2xlYW51cF9pbmNsdWRlcy4KCSogY3BwaW5pdC5jIChjcHBfY3JlYXRlX3JlYWRlcik6IEluaXRpYWxpemUgbm9fc2VhcmNoX3BhdGguICBVcGRhdGUuCgkoY3BwX3JlYWRfbmV4dF9maWxlKTogUmVuYW1lIGFuZCBtb3ZlIHRvIGNwcGZpbGVzLmMuCgkoY3BwX3JlYWRfbWFpbl9maWxlKTogVXBkYXRlLgoJKiBjcHBsaWIuYyAocnVuX2RpcmVjdGl2ZSk6IFVwZGF0ZSBmb3IgcmVuYW1lZCBtZW1iZXJzLgoJKGRvX2luY2x1ZGVfY29tbW9uLCBfY3BwX3BvcF9idWZmZXIpOiBVcGRhdGUuCgkoZG9faW1wb3J0KTogVW5kZXByZWNhdGUgI2ltcG9ydC4KCShkb19wcmFnbWFfb25jZSk6IFVuZGVwcmVjYXRlLiAgVXNlIF9jcHBfbWFya19maWxlX29uY2Vfb25seS4KCSogY3BwbGliLmg6IFJlbW92ZSBmaWxlX25hbWVfbWFwX2xpc3QuCgkoY3BwX29wdGlvbnMpOiBSZW1vdmUgbWFwX2xpc3QuCgkoY3BwX2Rpcik6IFJlbmFtZSBmcm9tIGNwcF9wYXRoLiAgTmV3IGRhdGF0eXBlIGZvciBuYW1lX21hcC4KCShjcHBfc2V0X2luY2x1ZGVfY2hhaW5zLCBjcHBfc3RhY2tfZmlsZSwgY3BwX2luY2x1ZGVkKTogVXBkYXRlLgoKMjAwMy0wNy0yOSAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW46ICBNYWtlIHN0YW1wLW9iamRpciBzYWZlIGZvciBwYXJhbGxlbCBidWlsZHMuCgoyMDAzLTA3LTI5ICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoc3RtcC1kb2NvYmpkaXIpOiAgTmV3IHRhcmdldDsgZW5zdXJlICRkb2NvYmpkaXIgZXhpc3RzLgoJKGluZm8pOiAgRGVwZW5kIG9uIHN0bXAtZG9jb2JqZGlyLgoKMjAwMy0wNy0yOSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTI5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgQysrLzExMTMxCgkqIHRyZWUtaW5saW5lLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IEFsd2F5cyBjYWxsIGlubGluYWJsZV9mdW5jdGlvbl9wCglpbiAhdW5pdC1hdC1hLXRpbWUgbW9kZS4KCjIwMDMtMDctMjggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogYy1kZWNsLmMgKGNfZXhwYW5kX2JvZHlfMSk6IFVzZSBDX0RFQ0xfRklMRV9TQ09QRSB0byBkZXRlY3QKCW1haW4gZnVuY3Rpb24uCgoyMDAzLTA3LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMTY2NwoJKiBjLWNvbW1vbi5jIChzaG9ydGVuX2NvbXBhcmUpOiBUYWtlIGludG8gYWNjb3VudCBkaWZmZXJlbmNlcwoJYmV0d2VlbiBDIGFuZCBDKysgcmVwcmVzZW50YXRpb24gZm9yIGVudW1lcmF0aW9uIHR5cGVzLgoJKiB0cmVlLmggKHNldF9taW5fYW5kX21heF92YWx1ZXNfZm9yX2ludGVncmFsX3R5cGUpOiBEZWNsYXJlLgoJKiBzdG9yLWxheW91dC5jIChzZXRfbWluX2FuZF9tYXhfdmFsdWVzX2Zvcl9pbnRlZ3JhbF90eXBlKTogTmV3CglmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tIC4uLgoJKGZpeHVwX3NpZ25lZF90eXBlKTogLi4uIGhlcmUgYW5kIC4uLgoJKGZpeHVwX3Vuc2lnbmVkX3R5cGUpOiAuLi4gaGVyZS4KCjIwMDMtMDctMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYzogVXBkYXRlIGNvbW1lbnRhcnksIGFkanVzdCBibGFuayBsaW5lcyB0aHJvdWdob3V0LgoJKHN0cnVjdCBjX3Njb3BlKTogRml4IGluZGVudGF0aW9uLiAgUmVvcmRlciBtZW1iZXJzIHNvCglvdXRlci1jb250ZXh0IHBvaW50ZXJzIGNvbWUgZmlyc3QsIGJvb2xlYW5zIGxhc3QuCgkoZHVwbGljYXRlX2RlY2xzLCBkZWZpbmVfbGFiZWwpOiBVc2UgYSAnbG9jdXMnIHZhcmlhYmxlIGZvcgoJZGlhZ25vc3RpYyBsb2NhdGlvbnMgaW4gYSBmZXcgbW9yZSBwbGFjZXMuCgkod2Fybl9pZl9zaGFkb3dpbmcpOiBVbi1zcGxpdCBhIGNvbmRpdGlvbmFsIHRoYXQgZml0cyBvbiBvbmUgbGluZS4KCShjX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogTm8gbmVlZCB0byBjbGVhciBjdXJyZW50X3Njb3BlIGFuZAoJY3VycmVudF9mdW5jdGlvbl9zY29wZS4KCShzdGFydF9kZWNsKTogTWVyZ2UgaWYvZWxzZSBpZiBzdGF0ZW1lbnRzIHdpdGggc2FtZSBhY3Rpb24uCgkocHVzaF9wYXJtX2RlY2wpOiBSZW5hbWUgb2xkX2ltbWVkaWF0ZV9zaXplX2V4cGFuZCB0byB1c2UKCXNhdmVfZm9vIGNvbnZlbnRpb247IHNhdmUvcmVzdG9yZSBhcm91bmQgZW50aXJlIGZ1bmN0aW9uLgoJKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGJyYWNlcy4KCjIwMDMtMDctMjggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCSAgICBNaWNoYWVsIEN1bGJlcnRzb24gIDxNaWNoYWVsLkouQ3VsYmVydHNvbkB3aGVhdG9uLmVkdT4KCgkqIGMtcGFyc2UuaW4gKGxpbmVub19zdG10X2RlY2xfb3JfbGFiZWxzX2VuZGluZ19kZWNsKTogQWxzbyB3YXJuCgl3aGVuIHdhcm5fZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50LiAgQ2FsbCBwZWR3YXJuX2M5MCwgbm90CglwZWR3YXJuLiAgQ29ycmVjdCBtZXNzYWdlOiBpdCdzICJJU08gQzkwIiwgbm90ICJJU08gQzg5Ii4KCSogYy1jb21tb24uYyAod2Fybl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnQpOiBEZWZpbmUuCgkqIGMtY29tbW9uLmggKHdhcm5fZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50KTogRGVjbGFyZS4KCSogYy5vcHQgKFdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQpOiBOZXcuCgkqIGMtZXJyb3JzLmMgKHBlZHdhcm5fYzkwKTogTmV3IGZ1bmN0aW9uLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbikgPGNhc2UKCU9QVF9XZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50PjogTmV3LgoJKiBjLXRyZWUuaCAocGVkd2Fybl9jOTApOiBEZWNsYXJlLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5KTogRG9jdW1lbnQKCS1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50LgoJKFdhcm5pbmcgT3B0aW9ucyk6IERpdHRvLgoKMjAwMy0wNy0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAobWVtb3J5IGF0dHJpYnV0ZSkgQXZvaWQgYWNjZXNzaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5Cglmb3IgaXNoaWZ0MSB0eXBlIGluc3RydWN0aW9ucy4KCjIwMDMtMDctMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluICgtLWVuYWJsZS1jaGVja2luZyk6IEFkZCBmb2xkIGNhdGVnb3J5LgoJKEVOQUJMRV9GT0xEX0NIRUNLSU5HKTogRGVmaW5lIGlmIHJlcXVlc3RlZC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjb25maWcuaW46IFJlYnVpbHQuCgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IGl0LgoJKiBmb2xkLWNvbnN0LmM6IEluY2x1ZGUgbWQ1LmguCglbRU5BQkxFX0ZPTERfQ0hFQ0tJTkddIChmb2xkKTogRGVmaW5lIHRvIGZvbGRfMS4KCVtFTkFCTEVfRk9MRF9DSEVDS0lOR10gKGZvbGQsIGZvbGRfY2hlY2tzdW1fdHJlZSwgZm9sZF9jaGVja19mYWlsZWQsCglwcmludF9mb2xkX2NoZWNrc3VtKTogTmV3IGZ1bmN0aW9ucy4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IE5ldmVyIG1vZGlmeSBhcmd1bWVudCBwYXNzZWQgdG8gZm9sZCwgaW5zdGVhZAoJY2hhbmdlIGEgY29weSBhbmQgcmV0dXJuIGl0LgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9faW50ZWdlcik6IExpa2V3aXNlLgoKMjAwMy0wNy0yNyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvZml4aW5jLnN2cjQ6IFJlbW92ZSBkZWFkIGNvZGUuICBSZW1vdmUgbm93LXVubmVjZXNzYXJ5CgljbGVhbnVwIG9mIGp1bmsgYWZ0ZXIgI2Vsc2UgYW5kICNlbmRpZiBkaXJlY3RpdmVzLiAgQ29sbGFwc2UgcmVwZWF0ZWQKCWNsYXVzZXMgaW50byBmb3Igc3RhdG1lbnQuCgoJKiBmaXhpbmMvZml4aW5jbC5zaDogR05VIEMgLT4gR0NDLiAgQWRkIHVzYWdlIGNvbW1lbnQuCgoyMDAzLTA3LTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKHN0cnVjdCBjX3Njb3BlKTogUmVtb3ZlIGtlZXBfaWZfc3ViYmxvY2tzIGZpZWxkLgoJKGtlZXBfbmV4dF9pZl9zdWJibG9ja3MpOiBSZW5hbWUgbmV4dF9pc19mdW5jdGlvbl9ib2R5LgoJKHB1c2hsZXZlbCk6IEFkanVzdCBjb21tZW50YXJ5LiAgQWx3YXlzIHNldCAtPmtlZXAgb24gdGhlCglvdXRlcm1vc3QgbGV2ZWwgb2YgYSBmdW5jdGlvbi4gIERvbid0IHNldCAtPmtlZXBfaWZfc3ViYmxvY2tzLgoJKHBvcGxldmVsKTogQWRqdXN0IGNvbW1lbnRhcnkuICBEb24ndCBsb29rIGF0IC0+a2VlcF9pZl9zdWJibG9ja3MuCgkoc3RvcmVfcGFybV9kZWNscyk6IEFkanVzdCB0byBtYXRjaC4KCShmaW5pc2hfZnVuY3Rpb24pOiBBZGp1c3QgdG8gbWF0Y2guCglDYWxsIHBvcGxldmVsIHdpdGggYWxsIHRocmVlIGFyZ3VtZW50cyB6ZXJvLgoKCSogYy1kZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHNfbmV3c3R5bGUsIHN0b3JlX3Bhcm1fZGVjbHNfb2xkc3R5bGUpOgoJTmV3IGZ1bmN0aW9ucyBzcGxpdCBvdXQgb2Ygc3RvcmVfcGFybV9kZWNscy4KCUF2b2lkIHVubmVjZXNzYXJ5IHdvcmsuIFVzZSBsb2NhbCB2YXJpYWJsZXMgY29uc2lzdGVudGx5LgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCgkoZmluaXNoX2Z1bmN0aW9uKTogTm8gbmVlZCB0byBzZXQgZnVuY3Rpb25ib2R5IGZsYWcgb24gY2FsbCB0bwoJcG9wbGV2ZWwuCgkoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHNjb3BlIGZpZWxkLgoJKGNfcHVzaF9mdW5jdGlvbl9jb250ZXh0LCBjX3BvcF9mdW5jdGlvbl9jb250ZXh0KTogTm8gbmVlZCB0bwoJc2F2ZSBhbmQgcmVzdG9yZSBjdXJyZW50X3Njb3BlLgoKMjAwMy0wNy0yNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoRGVwcmVjYXRlZCBGZWF0dXJlcyk6IEltcGxpY2l0IHR5cGVuYW1lIGlzCglnb25lLiBEZWZhdWx0IGFyZ3Mgb24gdHlwZXMgaXMgZ29pbmcuCgoyMDAzLTA3LTI2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIE1ha2VmaWxlLmluIChpZmN2dC5vKTogRGVwZW5kIG9uIHRhcmdldC5oCgkqIGlmY3Z0LmMgKHRhcmdldC5oKTogSW5jbHVkZS4KCShpZl9jb252ZXJ0KTogRG9uJ3QgY2FsbCBtYXJrX2xvb3BfZXhpdF9lZGdlcyBpZiB3ZSBjYW4ndAoJbW9kaWZ5IGp1bXBzLgoKMjAwMy0wNy0yNiAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL2luc3RhbGwudGV4aSAoVGVzdGluZyk6IEFkanVzdCByZXF1aXJlZCB2ZXJzaW9ucyBvZiBEZWphR251LgoKMjAwMy0wNy0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBpbmxpbmUtYXNtLzExNjc2CgkqIGNzZS5jIChjb3VudF9yZWdfdXNhZ2UpOiBIYW5kbGUgYXNtX29wZXJhbmRzIHByb3Blcmx5LgoKMjAwMy0wNy0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5kZWYgKERFRl9GQUxMQkFDS19CVUlMVElOKTogRGVsZXRlLgoJKERFRl9FWFRfRkFMTEJBQ0tfQlVJTFRJTik6IERlbGV0ZS4KCShCVUlMVF9JTl9CWkVSTywgQlVJTFRfSU5fQkNPUFksIEJVSUxUX0lOX0JDTVApOiBEZWNsYXJlIHVzaW5nCgl0aGUgcmVndWxhciBERUZfRVhUX0xJQl9CVUlMVElOIG1hY3JvLgoJKEJVSUxUX0lOX0ZQVVRDLCBCVUlMVF9JTl9GUFVUUywgQlVJTFRfSU5fRldSSVRFKTogRGVjbGFyZSB1c2luZwoJdGhlIHJlZ3VsYXIgREVGX0xJQl9CVUlMVElOIG1hY3JvLgoJKEJVSUxUX0lOX1BVVENIQVJfVU5MT0NLRUQsIEJVSUxUX0lOX1BVVFNfVU5MT0NLRUQsCglCVUlMVF9JTl9GUFVUQ19VTkxPQ0tFRCwgQlVJTFRfSU5fRlBVVFNfVU5MT0NLRUQsCglCVUlMVF9JTl9GV1JJVEVfVU5MT0NLRUQpOiBEZWNsYXJlIHVzaW5nIHRoZSByZWd1bGFyCglERUZfRVhUX0xJQl9CVUlMVElOIG1hY3JvLgoKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBidWlsdGluCglmdW5jdGlvbnMgcHJvdG90eXBlZCB3aXRob3V0IGFuIGFyZ3VtZW50IGxpc3QuCgoyMDAzLTA3LTI2ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvd2lubnQuYzogUmV2ZXJ0IDIwMDMtMDctMDggY2hhbmdlLgoJKGkzODZfcGVfc2VjdGlvbl90eXBlX2ZsYWdzKTogUmVtb3ZlIGVycm9yX3dpdGhfZGVjbCBoZXJlIHRvby4KCjIwMDMtMDctMjYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogY29uZmlnL2FybS9wZS5jIChhcm1fbWFya19kbGxpbXBvcnQpOiBEb24ndCB1c2UgeHh4X3dpdGhfZGVjbC4KCSogY29uZmlnL21jb3JlL21jb3JlLmMgKG1jb3JlX21hcmtfZGxsaW1wb3J0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy92ODUwL3Y4NTAuYyAodjg1MF9oYW5kbGVfZGF0YV9hcmVhX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKHY4NTBfaGFuZGxlX2RhdGFfYXJlYV9hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCjIwMDMtMDctMjYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudF9kZWZfY29udGVudHMpOiBVc2UKCUFTTV9ERUNMQVJFX0NPTlNUQU5UX05BTUUgaWYgZGVmaW5lZC4KCSogZG9jL3RtLnRleGkgKExhYmVsIE91dHB1dCk6IERvY3VtZW50IEFTTV9ERUNMQVJFX0NPTlNUQU5UX05BTUUuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBFbnN1cmUgemVyby1zaXplZAoJb2JqZWN0cyBnZXQgYXQgbGVhc3Qgb25lIGJ5dGUgdG8gcHJldmVudCBhc3NlbWJsZXIgcHJvYmxlbXMuCgkoQVNNX0RFQ0xBUkVfQ09OU1RBTlRfTkFNRSk6IE5ldy4KCgkqIE1ha2VmaWxlLmluIChsaWJiYWNrZW5kLm8pOiBSZW1vdmUgb3B0aW9uc18uaC4KCShtb3N0bHljbGVhbik6IExpa2V3aXNlLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IERvbid0CglpbnNlcnQgYSBsYWJlbCBhdCB0aGUgZW5kIG9mIGFuIGZ1bmN0aW9uIHVuZGVyIE1hY2gtTy4KCgkqIGMtZGVjbC5jIChjX3N0YXRpY19hc3NlbWJsZXJfbmFtZSk6IFJlbW92ZSBUUkVFX1NUQVRJQyB0ZXN0LgoKMjAwMy0wNy0yNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoaXNfZXY2NF9vcGFxdWVfdHlwZSk6IE9ubHkgY2hlY2sgcG9pbnRlcgoJZXF1YWxpdHkuCgkoc3BlX2luaXRfYnVpbHRpbnMpOiBEZWNsYXJlIF9fZXY2NF9vcGFxdWVfXyBhcyBhIGJ1aWx0aW4gdHlwZS4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLmg6IFJlbW92ZSBfX2V2NjRfb3BhcXVlX18gZGVmaW5pdGlvbi4KCjIwMDMtMDctMjUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogZG9jL3Bhc3Nlcy50ZXhpIChQYXNzZXMpOiBNZW50aW9uIHByZXR0eS1wcmludGluZyBhbmQKCWRpYWdub3N0aWMgZmlsZXMuCgoyMDAzLTA3LTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogR05VIEMrKyBkb2VzIG5vdyBhbGxvdwoJdW51c2VkIHBhcmFtZXRlciBkZWNscy4KCShBdHRyaWJ1dGUgU3ludGF4KTogR05VIEMrKyBkb2VzIG5vdCBhbGxvdyBsYWJlbCBhdHRyaWJ1dGVzIHRvIGJlCglhZnRlciB0aGUgJzonLgoKMjAwMy0wNy0yNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBvYmpjL29iamMtYWN0LmMgKG9iamNfY2hlY2tfZGVjbCk6IERvbid0IHVzZSB4eHhfd2l0aF9kZWNsLgoJKG9iamNfZGVjbGFyZV9jbGFzcyk6IExpa2V3aXNlLgoJKGVycm9yX3dpdGhfaXZhcik6IExpa2V3aXNlLgoJKHN0YXJ0X2NsYXNzKTogTGlrZXdpc2UuCgkod2Fybl93aXRoX21ldGhvZCk6IExpa2V3aXNlLgoKMjAwMy0wNy0yNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJUmVtb3ZlIHBlZHdhcm5fd2l0aF9kZWNsLCB3YXJuaW5nX3dpdGhfZGVjbCBhbmQgZXJyb3Jfd2l0aF9kZWNsCglmcm9tIEdDQy4KCSogY2FsbHMuYyAodHJ5X3RvX2ludGVncmF0ZSk6IERvbid0IHVzZSB4eHhfd2l0aF9kZWNsLgoJKGV4cGFuZF9jYWxsKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKG91dHB1dF9yZWdfbnVtYmVyKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3RlbXApOiBMaWtld2lzZS4KCSh1bmluaXRpYWxpemVkX3ZhcnNfd2FybmluZyk6IExpa2V3aXNlLgoJKHNldGptcF9hcmdzX3dhcm5pbmcpOiBMaWtld2lzZS4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZml4dXBfZ290b3MpOiBMaWtld2lzZS4KCSh3YXJuX2Fib3V0X3VudXNlZF92YXJpYWJsZXMpOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2JpbmRpbmdzKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogTGlrZXdpc2UuCgkocGxhY2VfZmllbGQpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBMaWtld2lzZS4KCShyZXN0X29mX2hhbmRsZV9pbmxpbmluZyk6IExpa2V3aXNlLgoJKGRlZmF1bHRfdHJlZV9wcmludGVyKTogTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYWxfaW5pdCk6IEluaXRpYWxpemUgZGlhZ25vc3RpYyBtYWNoaW5lcnkgYmVmb3JlIHJvdXRpbmcKCXNpZ25hbHMgdG8gdGhlIElDRSBtYWNoaW5lcnkuICBTZXQgZGVmYXVsdCB0cmVlIHByaW50ZXIuCgkqIHRvcGxldi5oIChwZWR3YXJuX3dpdGhfZGVjbCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSh3YXJuaW5nX3dpdGhfZGVjbCk6IExpa2V3aXNlLgoJKGVycm9yX3dpdGhfZGVjbCk6IExpa2V3aXNlLgoJKHBlZHdhcm4pOiBSZW1vdmUgYXR0cmlidXRlIGZvciB0aGUgdGltZSBiZWluZy4KCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogRG9uJ3QgdXNlIHh4eF93aXRoX2RlY2wuCgkqIHZhcmFzbS5jIChuYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgkobWFrZV9kZWNsX3J0bCk6IExpa2V3aXNlLgoJKGFzc2VtYmxlX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgkobWVyZ2Vfd2Vhayk6IExpa2V3aXNlLgoJKGRlY2xhcmVfd2Vhayk6IExpa2V3aXNlLgoKCSogZGlhZ25vc3RpYy5oOiBNb3ZlIG5vbi1kaWFnbm9zdGljIHN0dWZmIGludG8gcHJldHR5LXByaW50LmguCgkqIGRpYWdub3N0aWMuYzogTW92ZSBub24tZGlhZ25vc3RpYyBzdHVmZiBpbnRvIHByZXR0eS1wcmludC5jLgoJKGZvcm1hdF93aXRoX2RlY2wpOiBSZW1vdmUuCgkoZGlhZ25vc3RpY19mb3JfZGVjbCk6IExpa2V3aXNlLgoJKHBlZHdhcm5fd2l0aF9kZWNsKTogTGlrZXdpc2UuCgkod2FybmluZ193aXRoX2RlY2wpOiBMaWtld2lzZS4KCShlcnJvcl93aXRoX2RlY2wpOiBMaWtld2lzZS4KCShkaWFnbm9zdGljX2luaXRpYWxpemUpOiBBZGp1c3QuCgkoZGlhZ25vc3RpY19jb3VudF9kaWFnbm9zdGljKTogTGlrZXdpc2UuCgkoYW5ub3VuY2VfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShsaGRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShkaWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X21vZHVsZSk6IExpa2V3aXNlLgoJKGRlZmF1bHRfZGlhZ25vc3RpY19zdGFydGVyKTogTGlrZXdpc2UuCgkoZGlhZ25vc3RpY19yZXBvcnRfZGlhZ25vc3RpYyk6IExpa2V3aXNlLgoJKGRlZmF1bHRfZGlhZ25vc3RpY19maW5hbGl6ZXIpOiBMaWtld2lzZS4KCSh2ZXJiYXRpbSk6IExpa2V3aXNlLgoJKGVycm9yKTogTGlrZXdpc2UuCgkod2FybmluZyk6IExpa2V3aXNlLgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogTGlrZXdpc2UuCgkqIHByZXR0eS1wcmludC5jOiBOZXcgZmlsZS4KCSogYy1wcmV0dHktcHJpbnQuaCAocHBfYmFzZSk6IE92ZXJyaWRlLgoJKiBjLXByZXR0eS1wcmludC5jOiBBZGp1c3QgdXNlIG9mIG1hY3JvcyB0aHJvdWdob3V0LgoJKHBwX2J1ZmZlcik6IE5ldyBtYWNyby4KCShwcF9uZXdsaW5lKTogTGlrZXdpc2UuCgkqIGMtb2JqYy1jb21tb24uYyAoY190cmVlX3ByaW50ZXIpOiBBZGp1c3QgcHJvdG90eXBlLiBUaWR5LgoJKiBNYWtlZmlsZS5pbiAoRElBR05PU1RJQ19IKTogTmV3IHZhcmlhYmxlLgoJKGMtZXJyb3JzLm8pOiBVc2UgaXQuCgkoYy1vYmpjLWNvbW1vbi5vKTogTGlrZXdpc2UuCgkoYy1jb21tb24ubyk6IExpa2V3aXNlLgoJKGMtb3B0cy5vKTogTGlrZXdpc2UuCgkoYy1mb3JtYXQubyk6IExpa2V3aXNlLgoJKGRpYWdub3N0aWMubyk6IExpa2V3aXNlLgoJKG9wdHMubyk6IExpa2V3aXNlLgoJKHRvcGxldi5vKTogTGlrZXdpc2UuCgkocnRsLWVycm9yLm8pOiBMaWtld2lzZS4KCShkd2FyZjJvdXQubyk6IExpa2V3aXNlLgoJKGp1bXAubyk6IExpa2V3aXNlLgoJKHByZXR0eS1wcmludC5vKTogTmV3IHJ1bGUuCgoyMDAzLTA3LTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fUFJJTlRGLCBCVUlMVF9JTl9GUFJJTlRGKTogQ2hhbmdlZCBmcm9tCglmcm9udC1lbmQgYnVpbHRpbnMgdG8gbm9ybWFsIGJ1aWx0aW5zLCB1c2luZyBERUZfTElCX0JVSUxUSU4uCgkoQlVJTFRfSU5fUFJJTlRGX1VOTE9DS0VELCBCVUlMVF9JTl9GUFJJTlRGX1VOTE9DS0VEKTogQ2hhbmdlZAoJZnJvbSBmcm9udC1lbmQgdG8gbm9ybWFsIGJ1aWx0aW5zLCB1c2luZyBERUZfRVhUX0xJQl9CVUlMVElOLgoJKERFRl9GUk9OVF9FTkRfTElCX0JVSUxUSU4pOiBEZWxldGUuCgkoREVGX0VYVF9GUk9OVF9FTkRfTElCX0JVSUxUSU4pOiBEZWxldGUuCgkoQlVJTFRfSU5fRldSSVRFX1VOTE9DS0VEKTogV3JhcCBsb25nIGxpbmUuCgoJKiBidWlsdGlucy5jIChidWlsZF9zdHJpbmdfbGl0ZXJhbCk6IE5ldyBmdW5jdGlvbiB0byBjb25zdHJ1Y3QKCWEgY2hhciogcG9pbnRlciB0byBhIHN0cmluZyBsaXRlcmFsLgoJKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogQ2hhbmdlIDJuZCBhcmd1bWVudCBmcm9tICJpbnQgaWdub3JlIiB0bwoJInJ0eCB0YXJnZXQiIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBleHBhbmRfYnVpbHRpbl8qIGZ1bmN0aW9ucy4KCUNoYW5nZSAzcmQgYXJndW1lbnQgZnJvbSAiaW50IHVubG9ja2VkIiB0byAiYm9vbCB1bmxvY2tlZCIuCgkoZXhwYW5kX2J1aWx0aW5fcHJpbnRmKTogUmV3cml0ZSBvZiBjX2V4cGFuZF9idWlsdGluX3ByaW50ZiBmcm9tCgljLWNvbW1vbi5jIHRvIGF2b2lkIGZyb250LWVuZCBkZXBlbmRlbmNpZXMuICBPcHRpbWl6ZSBwcmludGYoIiIpCglhcyBhIG5vLW9wIHdoZW4gdGhlIHJlc3VsdCBpc24ndCByZXF1aXJlZC4gIEhhbmRsZSBlbWJlZGRlZCBOVUxzCglpbiBmb3JtYXQgc3RyaW5nLgoJKGV4cGFuZF9idWlsdGluX2ZwcmludGYpOiBBIHJld3JpdGUgb2YgY19leHBhbmRfYnVpbHRpbl9mcHJpbnRmCglmcm9tIGMtY29tbW9uLmMgdG8gYXZvaWQgZnJvbnQtZW5kIGRlcGVuZGVuY2llcy4gIExpa2V3aXNlLCBvcHRpbWl6ZQoJZnByaW50ZihmcCwiIikgYXMgYSBuby1vcCB3aGVuIHRoZSByZXN1bHQgaXNuJ3QgcmVxdWlyZWQsIGV2YWx1YXRpbmcKCWZwIGZvciBzaWRlLWVmZmVjdHMuICBIYW5kbGUgZW1iZWRkZWQgTlVMcyBpbiBmb3JtYXQgc3RyaW5nLgoJKGV4cGFuZF9idWlsdGluX3NwcmludGYpOiBGaXggdHlwby4KCShleHBhbmRfYnVpbHRpbik6IERvbid0IGV4cGFuZCBCVUlMVF9JTl9GUFJJTlR7LF9VTkxPQ0tFRH0gd2hlbiBub3QKCW9wdGltaXppbmcuICBBZGp1c3QgY2FsbHMgb2YgZXhwYW5kX2J1aWx0aW5fZnB1dHMgdG8gbWF0Y2ggdGhlIEFQSQoJY2hhbmdlLiBFeHBhbmQgQlVJTFRfSU5fUFJJTlRGIGFuZCBCVUlMVF9JTl9QUklOVEZfVU5MT0NLRUQgdXNpbmcKCWV4cGFuZF9idWlsdGluX3ByaW50Zi4gIExpa2V3aXNlLCBleHBhbmQgQlVJTFRfSU5fRlBSSU5URl9VTkxPQ0tFRAoJYW5kIEJVSUxUX0lOX0ZQUklOVEYgdXNpbmcgZXhwYW5kX2J1aWx0aW5fZnByaW50Zi4KCgkqIGMtY29tbW9uLmMgKGlzX3ZhbGlkX3ByaW50Zl9hcmdsaXN0KTogRGVsZXRlLgoJKGNfZXhwYW5kX2J1aWx0aW4pOiBEZWxldGUuCgkoY19leHBhbmRfYnVpbHRpbl9wcmludGYpOiBNb3ZlZCB0byBidWlsdGlucy5jLiBEZWxldGUuCgkoY19leHBhbmRfYnVpbHRpbl9mcHJpbnRmKTogTW92ZWQgdG8gYnVpbHRpbnMuYy4gIERlbGV0ZS4KCShjX2V4cGFuZF9leHByKTogTm8gbG9uZ2VyIHRyZWF0IENBTExfRVhQUnMgc3BlY2lhbGx5LgoJKENBTExFRF9BU19CVUlMVF9JTik6IERlbGV0ZS4KCjIwMDMtMDctMjQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiBvcHRpbWl6YXRpb24vMTE2MzEKCSogZ2NzZS5jIChzdG9yZV9tb3Rpb24pOiBDb25uZWN0IGluZmluaXRlIGxvb3BzIHRvIGV4aXQuCgoyMDAzLTA3LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAoYm9vbGVhbl90eXBlX25vZGUpOiBNb3ZlIGZyb20gQy9DKysvSmF2YSBmcm9udGVuZHMuCgkoYm9vbGVhbl90cnVlX25vZGUsIGJvb2xlYW5fZmFsc2Vfbm9kZSk6IExpa2V3aXNlLgoJKGVudW0gdHJlZV9pbmRleCk6IEFkZCBUSV9CT09MRUFOX3tUWVBFLEZBTFNFLFRSVUV9LgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogSW5pdCBib29sZWFuX3R5cGVfbm9kZS4KCShidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogSW5pdCBib29sZWFuX3t0cnVlLGZhbHNlfV9ub2RlLgoJKiBzdG9yLWxheW91dC5jIChzZXRfc2l6ZXR5cGUpOiBIYW5kbGUgYW4gZWFybHkgQk9PTEVBTl9UWVBFLgoJKiBjLWNvbW1vbi5oICh0cnV0aHZhbHVlX3R5cGVfbm9kZSk6IFJlbmFtZWQgZnJvbSBib29sZWFuX3R5cGVfbm9kZS4KCSh0cnV0aHZhbHVlX3RydWVfbm9kZSk6IFJlbmFtZWQgZnJvbSBib29sZWFuX3RydWVfbm9kZS4KCSh0cnV0aHZhbHVlX2ZhbHNlX25vZGUpOiBSZW5hbWVkIGZyb20gYm9vbGVhbl9mYWxzZV9ub2RlLgoJKiBjLWRlY2wuYzogSnVzdCBzZXQgdHJ1dGh2YWx1ZV8qIHRvIGludGVnZXJfKi4KCSogYy0qLltjaF06IHMvYm9vbGVhbi90cnV0aHZhbHVlLy4gIHMvY19ib29sL2Jvb2xlYW4vLgoKMjAwMy0wNy0yNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjLWRlY2wuYyAobWF0Y2hfYnVpbHRpbl9mdW5jdGlvbl90eXBlcyk6IE5ldyBzdWJyb3V0aW5lIG9mCglkdXBsaWNhdGVfZGVjbHMgdG8gdGVzdCB3aGV0aGVyIGEgcmVkZWNsYXJhdGlvbiBvZiBhIGJ1aWx0aW4KCWZ1bmN0aW9uIGlzIHN1aXRhYmx5IGNsb3NlLCBpLmUuIHRoZSByZXR1cm4gdHlwZSBhbmQgYWxsIG9mCgl0aGUgYXJndW1lbnQgdHlwZXMgaGF2ZSB0aGUgc2FtZSBtb2RlcyBhcyB0aGUgYnVpbHRpbiBleHBlY3RzLgoJKGR1cGxpY2F0ZV9kZWNscyk6IEZ1enp5IHR5cGUgbWF0Y2hpbmcgZm9yIGJ1aWx0aW4gZnVuY3Rpb25zCgltb3ZlZCB0byBtYXRjaF9idWlsdGluX2Z1bmN0aW9uX3R5cGVzLgoKMjAwMy0wNy0yNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnbG9vcG1hbmlwLmMgKGR1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlKTogVXBkYXRlIGlycmVkdWNpYmxlCglmbGFnIGNvcnJlY3RseS4KCjIwMDMtMDctMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYzogU2VhcmNoLWFuZC1yZXBsYWNlIGNoYW5nZSAnYmluZGluZyBsZXZlbCcgdG8KCSdzY29wZScgaW4gY29tbWVudGFyeS4KCShzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IE5vdyBzdHJ1Y3QgY19zY29wZS4KCShjdXJyZW50X2JpbmRpbmdfbGV2ZWwpOiBOb3cgY3VycmVudF9zY29wZS4KCShmcmVlX2JpbmRpbmdfbGV2ZWwpOiBOb3cgc2NvcGVfZnJlZWxpc3QuCgkoY3VycmVudF9mdW5jdGlvbl9sZXZlbCk6IE5vdyBjdXJyZW50X2Z1bmN0aW9uX3Njb3BlLgoJKGdsb2JhbF9iaW5kaW5nX2xldmVsKTogTm93IGdsb2JhbF9zY29wZS4KCShtYWtlX2JpbmRpbmdfbGV2ZWwpOiBOb3cgbWFrZV9zY29wZS4KCShwb3BfYmluZGluZ19sZXZlbCk6IE5vdyBwb3Bfc2NvcGUuCgoyMDAzLTA3LTI0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZ3VyZS5pbiAobGliZ2NjX3Zpc2liaWxpdHkpOiBBZGQgbWlzc2luZyB3aGl0ZXNwYWNlLgoKMjAwMy0wNy0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYy1zdGQudmVyIChHQ0NfMy4zLjEpOiBFeHBvcnQgX19nY2NfcGVyc29uYWxpdHlfc2owLAoJX19nY2NfcGVyc29uYWxpdHlfdjAuCgoyMDAzLTA3LTI0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2VmaWxlLmluOiBSZXBsYWNlIHB3ZCBieSAke1BXRF9DT01NQU5EfS4KCjIwMDMtMDctMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1mcHJvZmlsZS1hcmNzLCAtZnRlc3QtY292ZXJhZ2UpOiBVcGRhdGUKCWRvY3VtZW50YXRpb24gbWlzc2VkIGZyb20gbXkgMjAwMy0wNy0wOSBwYXRjaC4KCjIwMDMtMDctMjQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogYWNsb2NhbC5tNCAoX2djY19DT01QVVRFX0dBU19WRVJTSU9OKTogU2V0IHBhdGNoIGxldmVsIHRvIDAgaWYKCWl0J3Mgbm90IHByb3ZpZGVkLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoyMDAzLTA3LTI0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJUFIgYy8xMDYwMgoJKiBjLXR5cGVjay5jICh0eXBlX2xpc3RzX2NvbXBhdGlibGVfcCk6IERvIG5vdCBjb21wYXJlCglhcmd1bWVudHMgaWYgb25lIG9mIHRoZW0gaXMgYW4gZXJyb3JfbWFya19ub2RlCgoyMDAzLTA3LTI0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBTYXZlIGZwIHJlZ3MgaW5saW5lCglpZiBjdXJyZW50X2Z1bmN0aW9uX2NhbGxzX2VoX3JldHVybi4KCjIwMDMtMDctMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvYy10cmVlLnRleGkgKE9GRlNFVF9UWVBFKTogVXBkYXRlIGRlc2NyaXB0aW9uLgoKMjAwMy0wNy0yMyAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvY3J0aS5hc20gKF9pbml0LCBfZmluaSk6IEluY3JlYXNlIGZyYW1lIHNpemUgdG8gNjQuCgkqIGNvbmZpZy94dGVuc2EvbGliMWZ1bmNzLmFzbSAoX19tdWxzaTMsIF9fdWRpdnNpMywgX19kaXZzaTMsCglfX3Vtb2RzaTMsIF9fbW9kc2kzKTogSW5jcmVhc2UgZnJhbWUgc2l6ZSB0byAzMi4KCjIwMDMtMDctMjMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9ob3N0LWRhcndpbi5jOiBBTlNJZnksIHVwZGF0ZSBjb21tZW50IGZvciBzaWdhbHRzdGFjawoJcHJvdG90eXBlLgoKMjAwMy0wNy0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9jLXRyZWUudGV4aSAoVHlwZXMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgT0ZGU0VUX1RZUEUuCgoJUFIgb3B0aW1pemF0aW9uLzEwNjc5CgkqIHRyZWUtaW5saW5lLmMgKGlubGluYWJsZV9mdW5jdGlvbl9wKTogSG9ub3IgTUlOX0lOTElORV9JTlNOUy4KCjIwMDMtMDctMjMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzExNjA3IGFuZCBQUiB0YXJnZXQvMTE1MTYKCSogcGEubWQgKGV4dHp2LCBleHR2LCBpbnN2KTogUmV2ZXJ0IGxhdHRlciBoYWxmIG9mIGxhc3QgcGF0Y2guCgoyMDAzLTA3LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb3JjZV9maXRfdHlwZSk6IEhhbmRsZSBPRkZTRVRfVFlQRS4KCSogdmFyYXNhbS5jIChvdXRwdXRfY29uc3RhbnQpOiBMaWtld2lzZS4KCjIwMDMtMDctMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBhbGlhcy5jOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjLWNvbW1vbi5jOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjLW9wdHMuYzogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYzogTGlrZXdpc2UuCgkqIGNwcGxpYi5jOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5jOiBMaWtld2lzZS4KCSogZG9qdW1wLmM6IExpa2V3aXNlLgoJKiBmaW5hbC5jOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoJKiBnZ2MtcGFnZS5jOiBMaWtld2lzZS4KCSoganVtcC5jOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jOiBMaWtld2lzZS4KCSogcmVjb2cuYzogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmM6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmM6IExpa2V3aXNlLgoJKiB0cmVlLmM6IExpa2V3aXNlLgoJKiB0cmVlLmg6IExpa2V3aXNlLgoKMjAwMy0wNy0yMiAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBsaW5lLW1hcC5jIChhZGRfbGluZV9tYXApOiAgSGFuZGxlIGludmFsaWQgTEVBVkUgcmVxdWVzdC4KCUZpeGVzIFBSIHByZXByb2Nlc3Nvci8xMTM2MS4KCjIwMDMtMDctMjIgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogZGlhZ25vc3RpYy5jLihkaWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X21vZHVsZSk6ICBVcGRhdGUgdG8gbWF0Y2gKCTIwMDMtMDYtMDUgY2hhbmdlcyB0byBwdXNoX3NyY2xvYyBhbmQgcG9wX3NyY2xvYy4KCjIwMDMtMDctMjIgIFdvbGZnYW5nIEJhbmdlcnRoICA8YmFuZ2VydGhAZGVhbGlpLm9yZz4KCgkqIGRvYy90cm91YmxlLnRleGk6IEJldHRlciBkb2N1bWVudCB0d28tc3RhZ2UgbmFtZSBsb29rdXAuCgoyMDAzLTA3LTIyICBFcmljIENocmlzdG9waGVyIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3MzOTAuYyAoczM5MF92YWxpZF9wb2ludGVyX21vZGUpOiBOZXcuCgkoVEFSR0VUX1ZBTElEX1BPSU5URVJfTU9ERSk6IFVzZS4KCShzMzkwX2VtaXRfcHJvbG9ndWUpOiBBZGQgdHBmIHByb2ZpbGluZyBob29rcy4KCShzMzkwX2VtaXRfZXBpbG9ndWUpOiBEaXR0by4KCSogY29uZmlnL3MzOTAuaCAoTUFTS19UUEYpOiBOZXcuCgkoVEFSR0VUX1RQRik6IFVzZS4KCShQT0lOVEVSU19FWFRFTkRfVU5TSUdORUQpOiBEZWZpbmUuCgkqIGNvbmZpZy9zMzkwLm1kIChwdHJfZXh0ZW5kKTogTmV3IHBhdHRlcm4uCgoyMDAzLTA3LTIyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaGFzaHRhYmxlLmMgKGFwcHJveF9zcXJ0KTogTWFrZSBzdGF0aWMuCgkqIGhhc2h0YWJsZS5oOiBEb24ndCBwcm90b3R5cGUgYXBwcm94X3NxcnQuCgkqIGxpbmUtbWFwLmMgKGluaXRfbGluZV9tYXBzKTogUmVuYW1lIGxpbmVtYXBfaW5pdC4KCShmcmVlX2xpbmVfbWFwcyk6IFJlbmFtZSBsaW5lbWFwX2ZyZWUuCgkoYWRkX2xpbmVfbWFwKTogUmVuYW1lIGxpbmVtYXBfYWRkLgoJKGxvb2t1cF9saW5lKTogUmVuYW1lIGxpbmVtYXBfbG9va3VwLgoJKHByaW50X2NvbnRhaW5pbmdfZmlsZXMpOiBSZW5hbWUgbGluZW1hcF9wcmludF9jb250YWluaW5nX2ZpbGVzLgoJKiBsaW5lbWFwLmg6IFVwZGF0ZSB0byBtYXRjaC4KCgkqIGNwcGVycm9yLmMsIGNwcGluaXQuYywgY3BwbGliLmMsIGNwcG1hY3JvLmM6IFVwZGF0ZSBjYWxscyB0bwoJbGluZW1hcCByb3V0aW5lcyB0byB1c2UgbmV3IG5hbWVzLgoKMjAwMy0wNy0xNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGhhbmRsZV9wYWNrZWRfYXR0cmlidXRlKTogRG9uJ3QgcGFjayBhIHN0cnVjdCB2aWEgYQoJdHlwZWRlZi4gUHJvcGFnYXRlIHBhY2tlZG5lc3MgZnJvbSBhIG1haW4gdmFyaWFudC4KCjIwMDMtMDctMjIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtY29tbW9uKTogQWRkIGRlcGVuZGVuY3kgb24gaW5zdGFsbGRpcnMuCgoyMDAzLTA3LTIxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3R5cGVfZm9yX21vZGUpOiBSZXR1cm4gaW50ZWdlciB0eXBlcyBmb3IKCXBvaW50ZXIgbW9kZXMuCgoyMDAzLTA3LTIyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGMtZGVjbC5jIChzdGFydF9kZWNsKTogRG9uJ3QgY2FsbCBtYXliZV9hcHBseV9wcmFnbWFfd2VhayBoZXJlLgoJKGZpbmlzaF9kZWNsKTogQ2FsbCBtYXliZV9hcHBseV9wcmFnbWFfd2VhayBoZXJlLgoJKGdyb2tkZWNsYXJhdG9yKTogQ2hlY2sgdGhhdCBERUNMX0FTU0VNQkxFUl9OQU1FIGlzbid0IHNldCBiZWZvcmUKCVRSRUVfUFVCTElDIGFuZCBUUkVFX1NUQVRJQyBhcmUgZGVjaWRlZC4KCShzdGFydF9mdW5jdGlvbik6IE1vdmUgY2FsbCB0byBtYXliZV9hcHBseV9wcmFnbWFfd2Vhay4gIENoZWNrIHRoYXQKCURFQ0xfQVNTRU1CTEVSX05BTUUgaXNuJ3Qgc2V0IHRvbyBlYXJseS4KCgkqIGNwcGxleC5jIChfY3BwX3Byb2Nlc3NfbGluZV9ub3Rlcyk6IE1lbnRpb24gb3B0aW9uIG5hbWUgaW4KCXRyaWdyYXBocyB3YXJuaW5nLgoKMjAwMy0wNy0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYyAoaWZfdGhlbl9lbHNlX2NvbmQpOiBTaW1wbGlmeSB0aGUgY29tcGFyaXNvbiBvZgoJcnR4IGFnYWluc3QgLTEsIDAsIGFuZCAxLgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCk6IExpa2V3aXNlLgoJKiBvcHRhYnMuYyAoZW1pdF9jb25kaXRpb25hbF9tb3ZlKTogTGlrZXdpc2UuCgkoZW1pdF9jb25kaXRpb25hbF9hZGQpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKm1vdnNpX29yKTogTGlrZXdpc2UuCgkoKm1vdmRpX29yX3JleDYpOiBMaWtld2lzZS4KCjIwMDMtMDctMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBSZW1vdmUgcmVkdW5kYW50IGlmLgoKMjAwMy0wNy0yMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY3BwZmlsZXMuYyAob3Blbl9maWxlX3BjaCk6IERvbid0IHB1dCB1bnVzZWQgZW50cmllcyBpbiB0aGUKCXNwbGF5IHRyZWUuICBSZW1vdmUgZGVhZCBjb2RlLgoKMjAwMy0wNy0yMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5oIChudW1faW5fZm5hbWVzKTogRGVjbGFyZS4KCShjX3N0YXRpY19hc3NlbWJsZXJfbmFtZSk6IE1vdmUgZnJvbSBoZXJlLi4uCgkqIGMtdHJlZS5oIChjX3N0YXRpY19hc3NlbWJsZXJfbmFtZSk6IC4uLiB0byBoZXJlLgoJKiBjLW9wdHMuYzogRG9uJ3QgaW5jbHVkZSBsYW5naG9va3MtZGVmLmguCgkoY19zdGF0aWNfYXNzZW1ibGVyX25hbWUpOiBNb3ZlIHRvIGMtZGVjbC5jLgoJKG51bV9pbl9mbmFtZXMpOiBNYWtlIGV4dGVybmFsbHkgdmlzaWJsZS4KCSogYy1kZWNsLmM6IEluY2x1ZGUgbGFuZ2hvb2tzLWRlZi5oLgoJKGNfc3RhdGljX2Fzc2VtYmxlcl9uYW1lKTogTW92ZSBmcm9tIGMtb3B0cy5jLgoJKiBNYWtlZmlsZS5pbiAoYy1kZWNsLm8pOiBBZGQgJChMQU5HSE9PS1NfREVGX0gpLgoJKGMtb3B0cy5vKTogUmVtb3ZlICQoTEFOR0hPT0tTX0RFRl9IKS4KCgkqIGMtcHJhZ21hLmMgKG1heWJlX2FwcGx5X3ByYWdtYV93ZWFrKTogRG9uJ3QgZ2V0IERFQ0xfQVNTRU1CTEVSX05BTUUKCXdoZW4gaXQncyBub3QgbmVlZGVkLgoKMjAwMy0wNy0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIHJhX25lZWRfbHIuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9yZXR1cm5fYWRkcik6IFNldCBpdC4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IFNhdmUgRlBScyBpbmxpbmUgaWYgc2V0LgoKMjAwMy0wNy0yMSAgSC5KLiBMdSA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChwcmVmZXRjaCk6IFN1cHBvcnQgcHJlZGljYXRlLgoKMjAwMy0wNy0yMSAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jIChtZXJnZV9ibG9ja3NfbW92ZV9zdWNjZXNzb3Jfbm9qdW1wcyk6IFVzZSB0YWJsZWp1bXBfcC4KCSogcnRsYW5hbC5jICh0YWJsZWp1bXBfcCk6IFVzZSBuZXh0X2FjdGl2ZV9pbnNuIGZvciBmaW5kaW5nIHRoZSBqdW1wCgl0YWJsZS4KCjIwMDMtMDctMTcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExNTM2CgkqIHVucm9sbC5jIChsb29wX2l0ZXJhdGlvbnMpOiBEbyBub3QgcmVwbGFjZSBhIHJlZ2lzdGVyIGhvbGRpbmcKCXRoZSBmaW5hbCB2YWx1ZSBieSBpdHMgZXF1aXZhbGVudCBiZWZvcmUgdGhlIGxvb3AgaWYgaXQgaXMgbm90CglpbnZhcmlhbnQuCgoyMDAzLTA3LTIxICBEYXZlIEZsdXJpICA8ZGF2ZS5mbHVyaUBvbmxpbmsubmV0PgoKCSogZG9jL2V4dGVuZC50ZXhpOiBGaXhlcyB0byBzcGVsbGluZywgZ3JhbW1hciwgYW5kIGRpY3Rpb24uCgoyMDAzLTA3LTIxICBCZW4gRWxsaXN0b24gIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGltaXplIE9wdGlvbnMpOiBSZXBsYWNlICJpdCdzIiB3aXRoICJpdHMiLgoJKFY4NTAgT3B0aW9ucyk6IFNwZWxsaW5nIGZpeGVzLgoKMjAwMy0wNy0yMCAgTGlzYSBNLiBHb2xkc3RlaW4gIDxvcHVzQGdudS5vcmc+CgoJKiBkb2MvaW52b2tlLnRleGk6IEZpeGVzIHRvIHN0eWxlLCBncmFtbWFyIGFuZCBkaWN0aW9uLgoKMjAwMy0wNy0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0FMTE9DQSk6IFJlbW92ZSAiI2lmIFNNQUxMX1NUQUNLIiBmb3JtLgoJKiBzeXN0ZW0uaCAoU01BTExfU1RBQ0spOiBQb2lzb24gb2Jzb2xldGUgdGFyZ2V0IG1hY3JvLgoJKiBkb2MvdG0udGV4aSAoU01BTExfU1RBQ0spOiBSZW1vdmUgdGFyZ2V0IG1hY3JvIGRvY3VtZW50YXRpb24uCgoyMDAzLTA3LTIwICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46ICBDYWNoZSB0aGUgcmVzdWx0cyBvZiB0ZXN0aW5nIGZvciBjbXAncyBjYXBhYmlsaXRpZXMuCgkqIGNvbmZpZ3VyZTogIFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGRlYnVnLzExMjc5CgkqIGR3YXJmMm91dC5jIChnZW5fZW51bWVyYXRpb25fdHlwZV9kaWUpOiBSZW1lbWJlciB0aGF0CgllbnVtZXJhdG9ycyBjYW4gYmUgdW5zaWduZWQuCgoyMDAzLTA3LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKG5hbWVkX2xhYmVscywgc2hhZG93ZWRfbGFiZWxzLCBsYWJlbF9sZXZlbF9jaGFpbikKCShwdXNoX2xhYmVsX2xldmVsLCBwb3BfbGFiZWxfbGV2ZWwpOiBLaWxsLgoJKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogUmVuYW1lIGxldmVsX2NoYWluIHRvIG91dGVyLgoJQWRkIG91dGVyX2Z1bmN0aW9uIGZpZWxkLiAgQ2hhbmdlIHBhcm1fZmxhZywgZnVuY3Rpb25fYm9keSwKCWtlZXAsIGtlZXBfaWZfc3ViYmxvY2tzIHRvIDEtYml0IGJpdGZpZWxkcyBvZiB0eXBlIGJvb2wuCgkoY3VycmVudF9mdW5jdGlvbl9sZXZlbCk6IE5ldyB2YXJpYWJsZS4KCShrZWVwX25leHRfbGV2ZWxfZmxhZywga2VlcF9uZXh0X2lmX3N1YmJsb2Nrcyk6IENoYW5nZSB0eXBlIHRvIGJvb2wuCgkoa2VlcF9uZXh0X2xldmVsLCBkZWNsYXJlX3Bhcm1fbGV2ZWwsIHdhcm5faWZfc2hhZG93aW5nKToKCVVwZGF0ZSB0byBtYXRjaC4KCShzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBLaWxsIG5hbWVkX2xhYmVscywgc2hhZG93ZWRfbGFiZWxzIGZpZWxkcy4KCShjX2luaXRfZGVjbF9wcm9jZXNzaW5nLCBzdGFydF9mdW5jdGlvbiwgY19wdXNoX19mdW5jdGlvbl9jb250ZXh0KQoJKGNfcG9wX2Z1bmN0aW9uX2NvbnRleHQpOiBObyBuZWVkIHRvIG11Y2sgd2l0aCBuYW1lZF9sYWJlbHMgbm9yCglzaGFkb3dlZF9sYWJlbHMuCgoJKG1ha2VfYmluZGluZ19sZXZlbCk6IE5vIG5lZWQgdG8gY2xlYXIgdGhlIHN0cnVjdHVyZSBoZXJlLgoJKHBvcF9iaW5kaW5nX2xldmVsKTogQWx3YXlzIG9wZXJhdGUgb24gY3VycmVudF9iaW5kaW5nX2xldmVsLgoJVXBkYXRlIGN1cnJlbnRfZnVuY3Rpb25fbGV2ZWwgaWYgbmVjZXNzYXJ5LgoJKHB1c2hsZXZlbCk6IERvbid0IGNsZWFyIG5hbWVkX2xhYmVscy4gIFVwZGF0ZSBjdXJyZW50X2Z1bmN0aW9uX2xldmVsCglpZiBuZWNlc3NhcnkuICBVc2UgInRydWUiIGFuZCAiZmFsc2UiIHdoZXJlIGFwcHJvcHJpYXRlLgoJKHBvcGxldmVsKTogRGlhZ25vc2UgbGFiZWxzIGRlZmluZWQgYnV0IG5vdCB1c2VkLCBvciB2aWNlCgl2ZXJzYSwgYW5kIGNsZWFyIG91dCBsYWJlbC1tZWFuaW5ncyBsZWF2aW5nIHNjb3BlLCB3aGlsZQoJd2Fsa2luZyBkb3duIHRoZSBkZWNscyBsaXN0LCBmb3IgYWxsIGJpbmRpbmcgbGV2ZWxzLgoJSGFuZGxlIExBQkVMX0RFQ0xzIGFwcGVhcmluZyBpbiB0aGUgc2hhZG93ZWQgbGlzdC4KCXBvcF9iaW5kaW5nX2xldmVsIHRha2VzIG5vIGFyZ3VtZW50cy4KCShwdXNoZGVjbF9mdW5jdGlvbl9sZXZlbCk6IFVzZSBjdXJyZW50X2Z1bmN0aW9uX2xldmVsLgoKCShtYWtlX2xhYmVsLCBiaW5kX2xhYmVsKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoZGVjbGFyZV9sYWJlbCk6IE5ldyBleHBvcnRlZCBmdW5jdGlvbi4KCShsb29rdXBfbGFiZWwsIGRlZmluZV9sYWJlbCk6IFJld3JpdHRlbiBmb3IgbmV3IGRhdGEgc3RydWN0dXJlLgoJKHNoYWRvd19sYWJlbCk6IEtpbGwuCgoJKiBjLXRyZWUuaDogUHJvdG90eXBlIGRlY2xhcmVfbGFiZWw7IGRvbid0IHByb3RvdHlwZQoJcHVzaF9sYWJlbF9sZXZlbCwgcG9wX2xhYmVsX2xldmVsLCBub3Igc2hhZG93X2xhYmVsLgoJKiBjLXBhcnNlLmluOiBSZW1vdmUgYWxsIGNhbGxzIHRvIHB1c2hfbGFiZWxfbGV2ZWwgYW5kCglwb3BfbGFiZWxfbGV2ZWwuICBVc2UgZGVjbGFyZV9sYWJlbCBmb3IgX19sYWJlbF9fIGRlY2xzLgoKCSogZG9jL2V4dGVuZC50ZXhpOiBDbGFyaWZ5IHRoYXQgX19sYWJlbF9fIGNhbiBiZSB1c2VkIHRvCglkZWNsYXJlIGxhYmVscyB3aXRoIGxvY2FsIHNjb3BlIGluIGFueSBuZXN0ZWQgYmxvY2ssIG5vdAoJanVzdCBzdGF0ZW1lbnQgZXhwcmVzc2lvbnMuICBDcm9zcy1yZWZlcmVuY2UgbmVzdGVkIGZ1bmN0aW9ucwoJc2VjdGlvbiBmcm9tIGxvY2FsIGxhYmVscyBzZWN0aW9uLgoKMjAwMy0wNy0xOSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogc2NoZWQtcmduLmMgKGZpbmRfcmducyk6IEluaXRpYWxpemUgY3VycmVudF9lZGdlIGNvcnJlY3RseS4KCjIwMDMtMDctMTkgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9tYWtlZmlsZS50ZXhpIChyZXN0cmFwLCBwcm9maWxlZGJvb3RzdHJhcCk6ICBEb2N1bWVudCB0YXJnZXRzLgoKMjAwMy0wNy0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2ZpeGZpeGVzLmMgZml4aW5jL2ZpeGluY2wuYyBmaXhpbmMvZml4bGliLmMKCWZpeGluYy9zZXJ2ZXIuYyBvYmpjL29iamMtYWN0LmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0cy4KCjIwMDMtMDctMTkgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IEFjY2VzcyBsb2NhbCBzeW1ib2xzCglyZWxhdGl2ZSB0byB0aGUgR09UIGluc3RlYWQgb2YgcmVsYXRpdmUgdG8gdGhlIGxpdGVyYWwgcG9vbCBiYXNlLgoJKHMzOTBfb3V0cHV0X3N5bWJvbGljX2NvbnN0KTogSGFuZGxlIG5ldyBHT1QtcmVsYXRpdmUgYWNjZXNzZXMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJjYWxsIik6IEFjY2VzcyBsb2NhbCBmdW5jdGlvbnMgYW5kIFBMVCBzdHVicwoJcmVsYXRpdmUgdG8gdGhlIEdPVCBpbnN0ZWFkIG9mIHJlbGF0aXZlIHRvIHRoZSBsaXRlcmFsIHBvb2wgYmFzZS4KCSgiY2FsbF92YWx1ZSIpOiBMaWtld2lzZS4KCSgiY2FsbF92YWx1ZV90bHMiKTogTGlrZXdpc2UuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfY2h1bmtpZnlfc3RhcnQpOiBSZW1vdmUgcG9vbCBhbmNob3IKCXJlbG9hZGluZy4gIFN1cHBvcnQgTFRSRUxfQkFTRSAvIExUUkVMX09GRlNFVCBjb25zdHJ1Y3QuCgkoczM5MF9jaHVua2lmeV9maW5pc2gpOiBMaWtld2lzZS4KCShzMzkwX2NodW5raWZ5X2NhbmNlbCk6IExpa2V3aXNlLgoJKHMzOTBfcmVvcmcpOiBBZGFwdCBjYWxsZXIuCgkoZmluZF9iYXNlX3JlZ2lzdGVyX2luX2FkZHIsCglmaW5kX2Jhc2VfcmVnaXN0ZXJfcmVmLCByZXBsYWNlX2Jhc2VfcmVnaXN0ZXJfcmVmKTogRGVsZXRlLgoJKGZpbmRfbHRyZWxfYmFzZSwgcmVwbGFjZV9sdHJlbF9iYXNlKTogTmV3IGZ1bmN0aW9ucy4KCShmaW5kX2NvbnN0YW50X3Bvb2xfcmVmKTogSGFuZGxlIExUUkVMX0JBU0UgdW5zcGVjcy4KCShzMzkwX2RlY29tcG9zZV9hZGRyZXNzKTogSGFuZGxlIExUUkVMX0JBU0UgdW5zcGVjcy4gIE9wdGltaXplCgliYXNlIHZzLiBpbmRleCByZWdpc3RlciB1c2FnZS4KCShzdHJ1Y3QgY29uc3RhbnRfcG9vbCk6IFJlbW92ZSAnYW5jaG9yJy4KCShzMzkwX2FkZF9hbmNob3IpOiBEZWxldGUuCgkoczM5MF9kdW1wX3Bvb2wpOiBSZW1vdmUgYW5jaG9yIGhhbmRsaW5nLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgicmVsb2FkX2FuY2hvciIpOiBSZW1vdmUuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfc3BsaXRfYnJhbmNoZXMpOiBVc2UgTFRSRUxfQkFTRS9PRkZTRVQuCgkoczM5MF9sb2FkX2dvdCk6IE5ldyBmdW5jdGlvbi4gIFVzZSBMVFJFTF9CQVNFL09GRlNFVC4KCShzMzkwX2VtaXRfcHJvbG9ndWUpOiBVc2UgaXQuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJidWlsdGluX2xvbmdqbXAiLCAiYnVpbHRpbl9zZXRqbXBfc2V0dXAiLAoJImJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyIik6IENsZWFudXAuICBVc2UgczM5MF9sb2FkX2dvdC4gIERvIG5vdAoJaGFyZC1jb2RlIHJlZ2lzdGVyIDE0LgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2xvYWRfZ290KTogRGVjbGFyZS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoTlJfQ19NT0RFUywgY29uc3RhbnRfbW9kZXMsIGdlbl9jb25zdHRhYmxlKToKCVN1cHBvcnQgVEltb2RlIGNvbnN0YW50cy4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImNvbnN0dGFibGVfdGkiKTogTmV3LgoJKCJjb25zdHRhYmxlX3NpIiwgImNvbnN0dGFibGVfZGkiKTogSGFuZGxlIFRMUyBzeW1ib2xzIGNvcnJlY3RseS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKFVOU1BFQ19MVFJFTF9PRkZTRVQsIFVOU1BFQ19MVFJFTF9CQVNFLAoJVU5TUEVDX0dPVEVOVCwgVU5TUEVDX0dPVCwgVU5TUEVDX0dPVE9GRiwgVU5TUEVDX1BMVCwgVU5TUEVDX1BMVE9GRiwKCVVOU1BFQ19SRUxPQURfQkFTRSwgVU5TUEVDVl9QT09MLCBVTlNQRUNWX1BPT0xfU1RBUlQsIFVOU1BFQ1ZfUE9PTF9FTkQsCglVTlNQRUNWX1BPT0xfUUksIFVOU1BFQ1ZfUE9PTF9ISSwgVU5TUEVDVl9QT09MX1NJLCBVTlNQRUNWX1BPT0xfREksCglVTlNQRUNWX1BPT0xfVEksIFVOU1BFQ1ZfUE9PTF9TRiwgVU5TUEVDVl9QT09MX0RGLCBVTlNQRUNWX01BSU5fUE9PTCk6CglOZXcgc3ltYm9saWMgY29uc3RhbnRzLgoJKCJjb25zdHRhYmxlX3FpIiwgImNvbnN0dGFibGVfaGkiLCAiY29uc3R0YWJsZV9zaSIsICJjb25zdHRhYmxlX2RpIiwKCSJjb25zdHRhYmxlX3NmIiwgImNvbnN0dGFibGVfZGYiLCAicG9vbF9zdGFydF8zMSIsICJwb29sX2VuZF8zMSIsCgkicG9vbF9zdGFydF82NCIsICJwb29sX2VuZF82NCIsICJyZWxvYWRfYmFzZV8zMSIsICJyZWxvYWRfYmFzZV82NCIsCgkicG9vbCIsICJsaXRlcmFsX3Bvb2xfMzEiLCAibGl0ZXJhbF9wb29sXzY0Iik6IENsZWFudXAuICBVc2UKCXN5bWJvbGljIFVOU1BFQyB2YWx1ZXMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGFybF9vcGVyYW5kLCBzMzkwX3Nob3J0X2Rpc3BsYWNlbWVudCwKCWJyYXNfc3ltX29wZXJhbmQsIHMzOTBfY2Fubm90X2ZvcmNlX2NvbnN0X21lbSwKCXMzOTBfZGVsZWdpdGltaXplX2FkZHJlc3MsIHMzOTBfZGVjb21wb3NlX2FkZHJlc3MsCglsZWdpdGltaXplX3BpY19hZGRyZXNzLCBzMzkwX291dHB1dF9zeW1ib2xpY19jb25zdCwKCXMzOTBfZnVuY3Rpb25fcHJvZmlsZXIpOiBVc2Ugc3ltYm9saWMgVU5TUEVDIHZhbHVlcy4KCjIwMDMtMDctMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFsaWFzLmMgYWxsb2MtcG9vbC5jIGJpdG1hcC5jIGJpdG1hcC5oIGJ0LWxvYWQuYyBidWlsdGlucy5jCgljLWNvbW1vbi5jIGMtZGVjbC5jIGMtaW5jcGF0aC5jIGMtbGV4LmMgYy1vcHRzLmMgYy1wYXJzZS5pbgoJYy1wcmFnbWEuYyBjLXR5cGVjay5jIGNhbGxzLmMgY2ZnLmMgY2ZnYW5hbC5jIGNmZ2xvb3AuYyBjZmdydGwuYwoJY29sbGVjdDIuYyBjb21iaW5lLmMgY29uZmxpY3QuYyBjb3ZlcmFnZS5jIGNwcGV4cC5jIGNwcGZpbGVzLmMKCWNwcGhhc2guYyBjcHBpbml0LmMgY3BwbGV4LmMgY3BwbGliLmMgY3BwbWFjcm8uYyBjcHBzcGVjLmMKCWNwcHRyYWQuYyBjc2UuYyBjc2VsaWIuYyBkYnhvdXQuYyBkZWZhdWx0cy5oIGRmLmMgZG9taW5hbmNlLmMKCWR3YXJmMm91dC5jIGR3YXJmb3V0LmMgZW1pdC1ydGwuYyBleGNlcHQuYyBleHBtZWQuYyBleHByLmMgZmluYWwuYwoJZml4LWhlYWRlci5jIGZsb3cuYyBmb2xkLWNvbnN0LmMgZnVuY3Rpb24uYyBnY2MuYyBnY2NzcGVjLmMgZ2Nvdi5jCglnY3NlLmMgZ2VuYXR0ci5jIGdlbmF0dHJ0YWIuYyBnZW5hdXRvbWF0YS5jIGdlbmNvbmRpdGlvbnMuYwoJZ2VuZW1pdC5jIGdlbmV4dHJhY3QuYyBnZW5vdXRwdXQuYyBnZW5yZWNvZy5jIGdlbnN1cHBvcnQuYwoJZ2djLXBhZ2UuYyBnZ2Mtc2ltcGxlLmMgZ2xvYmFsLmMgZ3JhcGguYyBoYWlmYS1zY2hlZC5jIGhhc2h0YWJsZS5jCglpbnRlZ3JhdGUuYyBqdW1wLmMgbGFuZ2hvb2tzLmMgbGNtLmMgbGluZS1tYXAuYyBsb2NhbC1hbGxvYy5jCglsb29wLmMgbWlwcy10ZHVtcC5jIG1pcHMtdGZpbGUuYyBta2RlcHMuYyBvcHRhYnMuYyBwYXJhbXMuYwoJcG9zdHJlbG9hZC5jIHByZWZpeC5jIHByaW50LXRyZWUuYyBwcm90b2l6ZS5jIHJhLWJ1aWxkLmMKCXJhLWNvbG9yaXplLmMgcmEtcmV3cml0ZS5jIHJhLmMgcmVjb2cuYyByZWctc3RhY2suYyByZWdjbGFzcy5jCglyZWdtb3ZlLmMgcmVncmVuYW1lLmMgcmVsb2FkLmMgcmVsb2FkMS5jIHJlb3JnLmMgcmVzb3VyY2UuYwoJc2JpdG1hcC5jIHNjaGVkLWRlcHMuYyBzY2hlZC1yZ24uYyBzY2hlZC12aXMuYyBzZGJvdXQuYwoJc2ltcGxpZnktcnR4LmMgc3NhLWNjcC5jIHNzYS5jIHN0bXQuYyBzdG9yLWxheW91dC5jIHRpbWV2YXIuYwoJdGxpbmsuYyB0b3BsZXYuYyB0cmVlLWR1bXAuYyB0cmVlLmMgdW5yb2xsLmMgdW53aW5kLWR3Mi1mZGUuYwoJdmFyYXNtLmMgdmFycmF5LmMgdm1zZGJnb3V0LmMgeGNvZmZvdXQuYzogUmVtb3ZlIHVubmVjZXNzYXJ5CgljYXN0cy4KCjIwMDMtMDctMTkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1wcmFnbWEuYyAoYXBwbHlfcHJhZ21hX3dlYWspOiBEb24ndCB1c2Ugd2FybmluZ193aXRoX2RlY2wuCgkqIHRvcGxldi5oICh3YXJuaW5nKTogUmVtb3ZlIGF0dHJpYnV0ZS4KCjIwMDMtMDctMTkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1kZWNsLmMgKGNfZmluaXNoX2luY29tcGxldGVfZGVjbCk6IERvbid0IHVzZSB4eHhfd2l0aF9kZWNsLgoJKHBvcF9sYWJlbF9sZXZlbCk6IExpa2V3aXNlLgoJKGR1cGxpY2F0ZV9kZWNscyk6IExpa2V3aXNlLgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IExpa2V3aXNlLgoJKHNoYWRvd19sYWJlbCk6IExpa2V3aXNlLgoJKHN0YXJ0X2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZ2V0X3Bhcm1faW5mbyk6IExpa2V3aXNlLgoJKGRldGVjdF9maWVsZF9kdXBsaWNhdGVzKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdCk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3RvcmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGNfZXhwYW5kX2JvZHlfMSk6IExpa2V3aXNlLgoJKGNoZWNrX2Zvcl9sb29wX2RlY2xzKTogTGlrZXdpc2UuCgkobWVyZ2VfdHJhbnNsYXRpb25fdW5pdF9kZWNscyk6IExpa2V3aXNlLgoKMjAwMy0wNy0xOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY29tbW9uLm9wdDogIERvY3VtZW50IC0tcGFyYW0uCgkqIG9wdHMuYyAoY29sdW1ucywgdW5kb2N1bWVudGVkX21zZyk6IE5ldy4KCShwcmludF9oZWxwKTogR2V0IG51bWJlciBvZiBjb2x1bW5zIGZyb20gZW52aXJvbm1lbnQuICBQcmludAoJLS1wYXJhbSBoZWxwLiAgVHdlYWsgbmV3bGluZSBoYW5kbGluZy4KCShwcmludF9wYXJhbV9oZWxwKTogTmV3LgoJKHByaW50X2ZpbHRlcmVkX2hlbHApOiBCZXR0ZXIgaGFuZGxpbmcgb2YgZHVwbGljYXRlcy4gIENvbXBsYWluCglhYm91dCB1bmRvY3VtZW50ZWQgc3dpdGNoZXMuCgkocHJpbnRfc3dpdGNoKTogTmV3LgoJKHdyYXBfaGVscCk6IEltcHJvdmUgd3JhcHBpbmcsIHVzZSBDT0xVTU5TLgoJKiBvcHRzLnNoOiBJZ25vcmUgY29tbWVudHMgaW4gcmVjb3Jkcy4KCSogcGFyYW1zLmRlZjogRml4IHR5cG9zIGFuZCByZW1vdmUgdHJhaWxpbmcgcGVyaW9kcy4KCSogdG9wbGV2LmMgKGRpc3BsYXlfaGVscCk6IERvbid0IGR1bXAgLS1wYXJhbSBoZWxwLgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogVXBkYXRlLgoKMjAwMy0wNy0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTE1NTYKCSogb3B0YWJzLmMgKHByZXBhcmVfb3BlcmFuZCk6IEZhaWwgZ3JhY2VmdWxseSBpbnN0ZWFkIG9mIGFib3J0CglpZiB0aGUgcHJlZGljYXRlIGRvZXNuJ3Qgc2F0aXNmeS4KCShnZW5fY29uZF90cmFwKTogQWxsb3cgcHJlcGFyZV9vcGVyYW5kIHRvIGZhaWwuCgoyMDAzLTA3LTE5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtY29tbW9uLmM6IERvbid0IHVuZGVmaW5lIEdDQ19ESUFHX1NUWUxFLgoJKGZuYW1lX2RlY2wpOiBEb24ndCB1c2UgeHh4X3dpdGhfZGVjbC4KCShjX2FkZF9jYXNlX2xhYmVsKTogTGlrZXdpc2UuCgkoaGFuZGxlX3NlY3Rpb25fYXR0cmlidXRlKTogTGlrZXdpc2UuCgkoaGFuZGxlX2FsaWFzX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKGhhbmRsZV9ub19pbnN0cnVtZW50X2Z1bmN0aW9uX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKGhhbmRsZV9ub19saW1pdF9zdGFja19hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCSogYy1vYmpjLWNvbW1vbi5jIChjX3RyZWVfcHJpbnRlcik6IFByaW50IElERU5USUZJRVJfTk9ERXMuCgkqIGMtZm9ybWF0LmMgKGdjY19jZGlhZ19jaGFyX3RhYmxlKTogQWRkICclRScgZm9ybWF0LXNwZWNpZmllci4KCjIwMDMtMDctMTkgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIE1ha2VmaWxlLmluIChpZmN2dC5vKTogQWRkIGNmZ2xvb3AuaC4KCSogYmFzaWMtYmxvY2suaCAoRURHRV9MT09QX0VYSVQpOiBOZXcgZmxhZy4KCSogY2ZncnRsLmMgKHJ0bF92ZXJpZnlfZmxvd19pbmZvXzEpOiBIYW5kbGUgaXQgY29ycmVjdGx5LgoJKiBpZmN2dC5jOiBJbmNsdWRlIGNmZ2xvb3AuaC4KCShtYXJrX2xvb3BfZXhpdF9lZGdlcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoaWZfY29udmVydCk6IENhbGwgaXQuCgkoZmluZF9pZl9oZWFkZXIpOiBJZ25vcmUgYnJhbmNoZXMgb3V0IG9mIGxvb3BzLgoKMjAwMy0wNy0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbik6IERvbid0IHNoYXJlIHJ0eCB3aGVuIGNvbnZlcnRpbmcKCShuZSAoYW5kIChub3QgWCkgMSkgMCkgdG8gKGVxIChhbmQgWCAxKSAwKS4KCjIwMDMtMDctMTggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvYWl4LmggKEFHR1JFR0FURV9QQURESU5HX0ZJWEVEKTogRGVmaW5lLgoJKEFHR1JFR0FURVNfUEFEX1VQV0FSRF9BTFdBWVMpOiBEZWZpbmUuCgkoTVVTVF9QQVNTX0lOX1NUQUNLKTogRGVmaW5lLgoJKEJMT0NLX1JFR19QQURESU5HKTogRGVmaW5lLgoKMjAwMy0wNy0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNmZ3J0bC5jIChmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QpOiBVc2UgdGFibGVqdW1wX3AKCXRvIHNraXAgdGhlIGFkZHJfdmVjLgoKMjAwMy0wNy0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmFibGVfaTNwYXQpOiBEb24ndCBmb3JiaWQgb2NjdXJyZW5jZXMgb2YKCWkyZGVzdCBvciBpMWRlc3QgaW4gaW5uZXJfZGVzdCBpZiBpbm5lcl9kZXN0IGlzIGEgbWVtLgoKMjAwMy0wNy0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNncmFwaF9yZW1vdmVfbm9kZSk6IENsZWFyIHRoZSBoYXNoIHRhYmxlIHNsb3QuCgoyMDAzLTA3LTE3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTEwODcKCSogbG9vcC5jIChiYXNpY19pbmR1Y3Rpb25fdmFyKTogQ2hlY2sgaWYgY29udmVydF9tb2RlcyBlbWl0dGVkIGFueQoJaW5zdHJ1Y3Rpb25zLiBSZW1vdmUgdGhlbSBhbmQgcmV0dXJuIDAgaWYgc28uCgoyMDAzLTA3LTE4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMTA4MwoJKiB0b3BsZXYuYyAocmVzdF9vZl9oYW5kbGVfYWRkcmVzb2YpOiBSZW5hbWUgaW50bwoJcmVzdF9vZl9oYW5kbGVfYWRkcmVzc29mLiAgRGVsZXRlIHVucmVhY2hhYmxlIGJsb2NrcwoJaWYgZGVhZCBlZGdlcyB3ZXJlIHB1cmdlZCBhZnRlciB0aGUgYWRkcmVzc29mIHBhc3MuCgoyMDAzLTA3LTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46IFJlbW92ZSBoYW5kbGluZyBvZgoJbGFuZy1vcHRpb25zLmggYW5kIG9wdGlvbnNfLmguCgkqIHRvcGxldi5jIChzdHJ1Y3QgbGFuZ19vcHQsIGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogUmVtb3ZlLgoJKGRpc3BsYXlfaGVscCk6IERvbid0IHVzZSBkb2N1bWVudGVkX2xhbmdfb3B0aW9ucy4KCjIwMDMtMDctMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAocHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwpOiBNYWtlIHN0YXRpYywgcmV0dXJuIG5vdGhpbmcuCgkoa2VwdF9sZXZlbF9wKTogRm9sZCBpbnRvIHBvcGxldmVsLgoJKHVuZGVjbGFyZWRfdmFyaWFibGUpOiBNb3ZlZCBoZXJlIGZyb20gYy10eXBlY2suYy4gIEV4cG9ydC4KCSogYy10cmVlLmggKEtFRVBfWUVTLCBLRUVQX05PLCBLRUVQX01BWUJFKTogTmV3ICNkZWZpbmVzLgoJKHVuZGVjbGFyZWRfdmFyaWFibGUpOiBQcm90b3R5cGUgaGVyZS4gIERvbid0IHByb3RvdHlwZQoJa2VwdF9sZXZlbF9wIG5vciBwdXNoZGVjbF9mdW5jdGlvbl9sZXZlbC4KCSogYy1wYXJzZS5pbjogQ2hhbmdlIGZpcnN0IGFyZ3VtZW50IHRvIHBvcGxldmVsIGZyb20KCSJrZXB0X2xldmVsX3AoKSIgdG8gIktFRVBfTUFZQkUiLgoJKiBjLXR5cGVjay5jICh1bmRlY2xhcmVkX3ZhcmlhYmxlKTogTW92ZWQgdG8gYy1kZWNsLmMuCgoyMDAzLTA3LTE3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9ydHgpOiBVc2Ugc2ltcGxpZnlfZ2VuX2JpbmFyeSB0byBzd2FwCgljb21tdXRhdGl2ZSBvcGVyYW5kcyBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgUlRMIGluLXBsYWNlLgoKMjAwMy0wNy0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTE1NTcKCSogY2FsbHMuYyAoZmxhZ3NfZnJvbV9kZWNsX29yX3R5cGUpOiBEbyBub3Qgc2V0IEVDRl9MSUJDQUxMX0JMT0NLCgl1bmxlc3Mgd2Uga25vdyB3aGljaCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuCgoyMDAzLTA3LTE3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNzZS5jIChmb2xkX3J0eCk6IFVzZSBzd2FwX2NvbW11dGF0aXZlX29wZXJhbmRzX3AgdG8gZGV0ZXJtaW5lCgl3aGV0aGVyIHRvIHJlb3JkZXIgdGhlIG9wZXJhbmRzIG9mIGEgY29tbXV0YXRpdmUgYmluYXJ5IG9wZXJhdG9yLgoKMjAwMy0wNy0xNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGNvbnN0X2Jpbm9wKTogQXZvaWQgcGVyZm9ybWluZyB0aGUgRlAgb3BlcmF0aW9uIGF0Cgljb21waWxlLXRpbWUsIGlmIGVpdGhlciBvcGVyYW5kIGlzIE5hTiBhbmQgd2UgaG9ub3Igc2lnbmFsaW5nIE5hTnMsCglvciBpZiB3ZSdyZSBkaXZpZGluZyBieSB6ZXJvIGFuZCBlaXRoZXIgZmxhZ190cmFwcGluZ19tYXRoIGlzIHNldAoJb3IgdGhlIGRlc2lyZWQgbW9kZSBkb2Vzbid0IHN1cHBvcnQgaW5maW5pdGllcy4KCShmb2xkX2luaXRpYWxpemVyKTogTmV3IGZ1bmN0aW9uIHRvIGZvbGQgYW4gZXhwcmVzc2lvbiBpZ25vcmluZyBhbnkKCXBvdGVudGlhbCBydW4tdGltZSBleGNlcHRpb25zIG9yIHRyYXBzLgoJKiB0cmVlLmggKGZvbGRfaW5pdGlhbGl6ZXIpOiBQcm90b3R5cGUgaGVyZS4KCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogTW92ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHNvCgl0aGF0IGludGlhbGl6ZXJfc3RhY2sgaXMgaW4gc2NvcGUuICBJZiBjb25zdHJ1Y3RpbmcgYW4gaW5pdGlhbGl6ZXIsCglpLmUuIHdoZW4gaW5pdGlhbGl6ZXJfc3RhY2sgaXMgbm90IE5VTEwsIHVzZSBmb2xkX2luaXRpYWxpemVyIHRvCglmb2xkIGV4cHJlc3Npb25zLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IExpa2V3aXNlLCBhdm9pZAoJcGVyZm9ybWluZyBGUCBvcGVyYXRpb25zIGF0IGNvbXBpbGUtdGltZSwgaWYgdGhleSB3b3VsZCByYWlzZSBhbgoJZXhjZXB0aW9uIGF0IHJ1bi10aW1lLgoKMjAwMy0wNy0xNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgMTE0OTgKCSogTWFrZWZpbGUuaW4gKGMtb3B0cy5vKTogQWRkICQoTEFOR0hPT0tTX0RFRl9IKS4KCShsYW5naG9va3Mubyk6IEFkZCAkKEdHQ19IKSwgZ3QtbGFuZ2hvb2tzLmguCgkoR1RGSUxFUyk6IEFkZCBsYW5naG9va3MuYy4KCShndC1sYW5naG9va3MuaCk6IE5ldy4KCSogYy1jb21tb24uaCAoY19zdGF0aWNfYXNzZW1ibGVyX25hbWUpOiBQcm90b3R5cGUuCgkqIGMtbGFuZy5jIChMQU5HX0hPT0tTX1NFVF9ERUNMX0FTU0VNQkxFUl9OQU1FKTogRGVmaW5lLgoJKiBvYmpjL29iamMtbGFuZy5jIChMQU5HX0hPT0tTX1NFVF9ERUNMX0FTU0VNQkxFUl9OQU1FKTogRGVmaW5lLgoJKiBjLW9wdHMuYzogSW5jbHVkZSBsYW5naG9va3MtZGVmLmguCgkoY19zdGF0aWNfYXNzZW1ibGVyX25hbWUpOiBOZXcuCgkqIGxhbmdob29rcy5jOiBJbmNsdWRlIGdnYy5oLiAgSW5jbHVkZSBndC1sYW5naG9va3MuaC4KCSh2YXJfbGFiZWxubyk6IE5ldy4KCShsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUpOiBHaXZlIHN0YXRpYyBvYmplY3RzIHdpdGggY29udGV4dAoJdW5pcXVlIG5hbWVzLgoJKiB2YXJhc20uYyAodmFyX2xhYmVsbm8pOiBEZWxldGUuCgkobWFrZV9kZWNsX3J0bCk6IERvbid0IGNoYW5nZSB0aGUgYXNzZW1ibGVyIG5hbWUgb25jZSBpdCdzIHNldC4KCgkqIGMtb3B0cy5jICh0aGlzX2lucHV0X2ZpbGVuYW1lKTogTmV3LgoJKGZpbmlzaF9vcHRpb25zKTogVGFrZSBuZXcgcGFyYW1ldGVyLCBuYW1lIG9mIGZpbGUgYmVpbmcgY29tcGlsZWQuCglVcGRhdGUgY2FsbGVycy4gIFNldCB0aGlzX2lucHV0X2ZpbGVuYW1lLgoJKHB1c2hfY29tbWFuZF9saW5lX2luY2x1ZGUpOiBVc2UgdGhpc19pbnB1dF9maWxlbmFtZSBub3QKCW1haW5faW5wdXRfZmlsZW5hbWUuCgoyMDAzLTA3LTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbjogRGVwZW5kIC5wb3QgZ2VuZXJhdGlvbiBvbiBvcHRpb25zLmMuCgkqIHBvL2V4Z2V0dGV4dDogQWRkIGFuIGV4dHJhX2ZpbGVzIHZhcmlhYmxlIGNvbnRhaW5pbmcgYWRkaXRpb25hbAoJZmlsZXMgdG8gc2Nhbi4KCjIwMDMtMDctMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvYmpjL29iamMtbGFuZy5jOiBPdmVycmlkZSBMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMgdG8KCWNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucy4KCgkqIGMtZGVjbC5jOiBGaXggdHlwb3MgaW4gc2V2ZXJhbCBjb21tZW50cy4gIFJlbW92ZSBhbGwKCSNpZiAwIGJsb2NrczsgcmVpbmRlbnQgYXMgbmVlZGVkLiAgUmVtb3ZlIHVudXNlZCBhcmd1bWVudAoJdG8gZGVjbGFyZV9wYXJtX2xldmVsOyBhbGwgY2FsbGVycyBjaGFuZ2VkLgoJKiBjLXBhcnNlLmluOiBVcGRhdGUgY2FsbHMgdG8gZGVjbGFyZV9wYXJtX2xldmVsLiAgQXZvaWQKCWlzc3VpbmcgYSBkb3VibGUgd2FybmluZyBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCgkqIGMtdHlwZWNrLmM6IFVwZGF0ZSBjYWxscyB0byBkZWNsYXJlX3Bhcm1fbGV2ZWwuCgkqIGMtdHJlZS5oOiBVcGRhdGUgcHJvdG90eXBlIG9mIGRlY2xhcmVfcGFybV9sZXZlbC4KCgkqIGMtcHJhZ21hLmMgKGFwcGx5X3ByYWdtYV93ZWFrKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgYQoJcmVkdW5kYW50ICNwcmFnbWEgd2Vhay4KCgkqIG9iamMvb2JqYy1hY3QuYyAoZm9yd2FyZF9kZWNsYXJlX2NhdGVnb3JpZXMsCglidWlsZF9zZWxlY3Rvcl9yZWZlcmVuY2VfZGVjbCwgYnVpbGRfY2xhc3NfcmVmZXJlbmNlX2RlY2wsCglidWlsZF9vYmpjX3N0cmluZ19kZWNsLCBzeW50aF9mb3J3YXJkX2RlY2xhcmF0aW9ucywKCWJ1aWxkX3Byb3RvY29sX3JlZmVyZW5jZSk6IFNldCBUUkVFX1BVQkxJQyBvbiBzeW50aGV0aWMKCWZvcndhcmQgZGVjbCB0byAwLCBjb25zaXN0ZW50IHdpdGggZXZlbnR1YWwgZGVmaW5pdGlvbi4KCUNvcnJlY3QgY29tbWVudHMgdG8gbWF0Y2guCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzb2xhcmlzX211dGV4X2luaXRfMik6IEVzY2FwZSBicmFjZXMKCWluIHJlZ2V4cCB0aGF0IGRvbid0IGZvcm0gYSByYW5nZSBleHByZXNzaW9uLgoJKiBmaXhpbmMvZml4aW5jbC5kZWY6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xMDkwNwoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXBpbG9ndWVfdXNlcyk6IEdQIGlzIGxpdmUgYXQgZW5kCglldmVuIHdpdGggIVRBUkdFVF9DT05TVF9HUC4KCShpYTY0X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogUmVqZWN0IG5vbi1sb2NhbCBmdW5jdGlvbnMuCgoyMDAzLTA3LTE3ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBjLWNvbW1vbi5jIChjX2VzdGltYXRlX251bV9pbnNuc18xKTogRG9uJ3QgaGFuZGxlCglNRVRIT0RfQ0FMTF9FWFBSLgoJKiBleHByLmMgKHNhZmVfZnJvbV9wKTogTGlrZXdpc2UuCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF90cmVlX2V4cCk6IExpa2V3aXNlLgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogTGlrZXdpc2UKCSogdHJlZS5jIChmaXJzdF9ydGxfb3ApOiBMaWtld2lzZS4KCSogdHJlZS5kZWY6IERvbid0IGRlZmluZSBNRVRIT0RfQ0FMTF9FWFBSLgoJKiBqYXZhL2xhbmcuYyAoamF2YV9lc3RpbWF0ZV9udW1faW5zbnNfMSk6IERvbid0IGhhbmRsZQoJTUVUSE9EX0NBTExfRVhQUi4KCjIwMDMtMDctMTcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3RoZXIvMTE0NjYKCSogZG9jL2ludm9rZS50ZXhpIChTUEFSQyBPcHRpb25zKTogRG9jdW1lbnQgIi1tbGl0dGxlLWVuZGlhbiIKCWFuZCBpdHMgcmVzdHJpY3Rpb25zIGZvciB0aGUgU1BBUkM2NCBwb3J0LgoJTW92ZSB0aGUgZW50cnkgb2YgIi1taW1wdXJlLXRleHQiIGJlZm9yZSB0aGF0IG9mICItbXY4Ii4KCjIwMDMtMDctMTcgIEVyaWMgQm90Y2F6b3UgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBQaGlsIEVkd2FyZHMgPHBoaWxAamFqLmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKCotKi1zb2xhcmlzMiopOiBEb2N1bWVudCB0aGUgc3RlcC1ieS1zdGVwCglwcm9jZWR1cmUgdG8gYm9vdHN0cmFwIGFuZCBpbnN0YWxsLgoJRG9jdW1lbnQgdGhlIHByZWZlcmVuY2UgZm9yIHRoZSBsZWdhY3kgU3VuIHRvb2xzIGluIC91c3IvYmluCglvdmVyIHRoZSBQT1NJWCB0b29scyBpbiAvdXNyL3hwZzQvYmluIGZvciB0aGUgYnVpbGQgcHJvY2Vzcy4KCjIwMDMtMDctMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMub3B0OiBEb2N1bWVudCBVbmNvZHVtZW50ZWQ7IHVzZSBpdC4gIERvY3VtZW50IE9iakMgb3B0aW9ucy4KCSogb3B0cy5jIChwcmludF9maWx0ZXJlZF9oZWxwKTogU2tpcCB1bmRvY3VtZW50ZWQgc3dpdGNoZXMuCgkqIG9wdHMuaCAoQ0xfVU5ET0NVTUVOVEVEKTogTmV3LgoJKiBvcHRzLnNoOiBIYW5kbGUgVW5kb2N1bWVudGVkLgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBQcmV2ZW50IGl0cyBiZWNvbWluZyBlbXB0eS4Kb2JqYzoKCSogbGFuZy1vcHRpb25zLmg6IFJlbW92ZS4KCjIwMDMtMDctMTYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGxvb3AuYyAoY2hlY2tfZXh0X2RlcGVuZGVudF9naXZzKTogUGFzcyBjb25zdCBzdHJ1Y3QgbG9vcCAqCglpbnN0ZWFkIG9mIHN0cnVjdCBsb29wX2luZm8gKiBhcyBhcmd1bWVudC4gIEFjY2VwdCBCSVZzIHdpdGgKCWluY3JlbWVudCArLy0gMSBwcm92aWRlZCB0aGVyZSBpcyBhIGZyaWVuZGx5IGV4aXQgdGVzdCBhZ2FpbnN0CglhIGxvb3AtaW52YXJpYW50IHZhbHVlLgoJKHN0cmVuZ3RoX3JlZHVjZSk6IEFkYXB0IGNhbGwgdG8gY2hlY2tfZXh0X2RlcGVuZGVudF9naXZzLgoKMjAwMy0wNy0xNiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgkgICAgQ29uIEJyYWRsZXkgPGNvbi5icmFkbGV5QHN1cGVyaC5jb20+CgoJKiBzaC1wcm90b3MuaCAoc2hfZ2V0X3ByX2luaXRpYWxfdmFsKTogRGVjbGFyZS4KCSogc2guYyAocmVnbm9fcmVnX2NsYXNzKTogTWFrZSBpdHMgZWxlbWVudHMgdHlwZSBlbnVtIHJlZ19jbGFzcy4KCShvdXRwdXRfc3RhY2tfYWRqdXN0KTogUmVtb3ZlIGVtaXRfZm4gYXJndW1lbnQuICBBZGQgZXBpbG9ndWVfcAoJYW5kIGxpdmVfcmVnc19tYXNrIGFyZ3VtZW50cy4gIENoYW5nZWQgYWxsIGNhbGxlcnMuCgkoc2F2ZV9zY2hlZHVsZV9zKTogTmV3IHN0cnVjdHVyZS4KCShzYXZlX3NjaGVkdWxlKTogTmV3IHR5cGVkZWYuCgkoc2NhdmVuZ2VfcmVnLCBzaDVfc2NoZWR1bGVfc2F2ZXMsIHNoNV9zY2hlZHVsZV9zYXZlcyk6IE5ldyBmdW5jdGlvbnMuCgkoY2FsY19saXZlX3JlZ3MpOiBGb3IgVEFSR0VUX1NITUVESUEsIHVzZSBsZWFmX2Z1bmN0aW9uX3AuCglJbiBpbnRlcnJ1cHRzIGhhbmRsZXJzLCBhbHNvIHNhdmUgcmVnaXN0ZXJzIHRoYXQgYXJlIHVzdWFsbHkKCXBhcnRpYWxseSBzYXZlZCwgYW5kIG1ha2Ugc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZ2VuZXJhbCBwdXJwb3NlCglyZWdpc3RlciBzYXZlZCBpZiBhIHRhcmdldCByZWdpc3RlciBuZWVkcyBzYXZpbmcuCglBZGQgY2FzdHMgaW4gY29tcGFyaXNvbnMgdG8gYXZvaWQgd2FybmluZ3MuCgkoc2hfbWVkaWFfcmVnaXN0ZXJfZm9yX3JldHVybik6IHJldHVybiAtMSBmb3IgaW50ZXJydXB0IGhhbmRsZXJzLgoJKE1BWF9TQVZFRF9SRUdTLCBNQVhfVEVNUFMpOiBOZXcgZGVmaW5lcy4KCShzaF9leHBhbmRfcHJvbG9ndWUpOiBVc2Ugc2g1X3NjaGVkdWxlX3NhdmVzLiAgQ2hlY2sgdGhhdCBhbnkgdGVtcAoJcmVnaXN0ZXJzIHVzZWQgYXJlIGF2YWlsYWJsZS4KCVNldCBSVFhfRlJBTUVfUkVMQVRFRF9QIHdoZXJlIGFwcHJvcHJpYXRlLgoJQWRkIGFuIFJFR19GUkFNRV9SRUxBVEVEX0VYUFIgZm9yIHIwICsgb2Zmc2V0IGFkZHJlc3NpbmcuCgkoc2hfZXhwYW5kX2VwaWxvZ3VlLCBzaF9zZXRfcmV0dXJuX2FkZHJlc3MpOiBVc2Ugc2g1X3NjaGVkdWxlX3NhdmVzLgoJKGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTGlrZXdpc2UuCgkqIHNoLmggKERXQVJGX0NJRV9EQVRBX0FMSUdOTUVOVCk6IFNldCB0byAtNC4KCShMT0NBTF9BTElHTk1FTlQsIEdFTkVSQUxfUkVHSVNURVJfUCk6IEFkZCBjYXN0cyB0byBhdm9pZCB3YXJuaW5ncy4KCShGUF9SRUdJU1RFUl9QKTogQWRkIGNhc3RzIHRvIGZpeCBicm9rZW4gaGFuZGxpbmcgb2YgdW5zaWduZWQgUkVHTk8uCgkoWERfUkVHSVNURVJfUCwgVEFSR0VUX1JFR0lTVEVSX1ApOiBMaWtld2lzZS4KCShIQVJEX1JFR05PX0NBTExfUEFSVF9DTE9CQkVSRUQpOiBBbHNvIHlpZWxkIG5vbnplcm8gZm9yIHIxNSwKCWFuZCBmb3IgdGFyZ2V0IHJlZ2lzdGVycy4KCShSRVRVUk5fSU5fTUVNT1JZKTogQWRkIHBhcmVudGhlc2VzIHRvIGF2b2lkIHdhcm5pbmdzLgoJKHJlZ25vX3JlZ19jbGFzcyk6IE1ha2UgaXRzIGVsZW1lbnRzIHR5cGUgZW51bSByZWdfY2xhc3MuCgkoQ09OU1RSQUlOVF9MRU4pOiBEb24ndCB1c2UgaXNkaWdpdC4KCShGVU5DVElPTl9BUkdfUkVHTk9fUCk6IEFkZCBjYXN0cyB0byBhdm9pZCB3YXJuaW5ncy4KCShGVU5DVElPTl9BUkcpOiBBZGQgcGFyZW50aGVzZXMgdG8gYXZvaWQgd2FybmluZ3MuCgkoUkVUVVJOX0FERFJfUlRYKTogVXNlIHNoX2dldF9wcl9pbml0aWFsX3ZhbC4KCShSRVRVUk5fQUREUl9PRkZTRVQpOiBEZWZpbmUgdG8gLTEgZm9yIFRBUkdFVF9TSDUuCgkoU0hfREJYX1JFR0lTVEVSX05VTUJFUik6IEFkZCBjYXN0cyB0byBhdm9pZCB3YXJuaW5ncy4KCShFSF9SRVRVUk5fREFUQV9SRUdOTyk6IFVzZSB1bnNpZ25lZCBjb25zdGFudHMgdG8gYXZvaWQgd2FybmluZ3MuCgkqIHNoLm1kICh4b3JkaTMrMSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgcmVnbm8uCgkocmV0dXJuX21lZGlhKTogQ2hlY2sgdGhhdCB0cjAgaXMgYXZhaWxhYmxlIGJlZm9yZSB1c2luZyBpdC4KCjIwMDMtMDctMTYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMub3B0OiBEb2N1bWVudCBtb3JlIG9wdGlvbnMuCgoyMDAzLTA3LTE2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbWJpbmUuYyAoc3Vic3QpOiBBbHNvIGhhbmRsZSAoc3VicmVnIChjb25zdF9kb3VibGUgLi4uKSkgY2FzZQoJaWYgY3JlYXRlZCBieSBhIHN1YnN0aXR1dGlvbiwgYnkgdXNpbmcgdGhlIG9yaWdpbmFsIGlubmVyIG1vZGUuCgoyMDAzLTA3LTE2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZXBsYWNlX3J0eCk6IENvbnZlcnQgY29uc3RhbnQgY29tcGFyaXNvbnMKCXRvIE1PREVfRkxPQVQgY29uc3RhbnRzIGlmIEZMT0FUX1NUT1JFX0ZMQUdfVkFMVUUgaXMgZGVmaW5lZC4KCShzaW1wbGlmeV9ydHgpOiBMaWtld2lzZS4gIFNpbXBsaWZ5IChsb19zdW0gKGhpZ2ggWCkgWCkgYXMgWC4KCjIwMDMtMDctMTYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZG9jL2luc3RhbGwudGV4aSAoLS13aXRob3V0LWhlYWRlcnMpOiBOZXcuCgoJUGFydGlhbCBGaXggUFIvMTAxMjkKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19mdW5jdGlvbl9iYXNlX25hbWUpOiBPbmx5IFJldHVybiAiPHBpYyBiYXNlPiIuCgkobWFjaG9waWNfb3V0cHV0X2Z1bmN0aW9uX2Jhc2VfbmFtZSk6IE5ldzsgcHJpbnQgdGhlIHRydWUgcGljIGxhYmVsLgoJKG1hY2hvcGljX2NsYXNzaWZ5X2lkZW50KTogUGljIEJhc2UgaXMgYWx3YXlzIGEgZGVmaW5lZCBkYXRhLgoJKiBjb25maWcvZGFyd2luLmggKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBTdXBwb3J0IHRoZSBwaWMgYmFzZSBsYWJlbC4KCSogY29uZmlnL2Rhcndpbi1wcm90by5oIChtYWNob3BpY19vdXRwdXRfZnVuY3Rpb25fYmFzZV9uYW1lKTogUHJvdG90eXBlLgoKCSogZ2NzZS5jIChnY3NlX2NvbnN0YW50X3ApOiBDT01QQVJFIG9mIHRoZSBzYW1lIHJlZ2lzdGVycyBpcyBhIGNvbnN0YW50CglpZiB0aGV5IGFyZSBub3QgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgoKCVBSIGMvMTA5NjIKCSogZ2djLmg6IEFkZCBoZWFkZXIgZ3VhcmRzLgoJKiBjLWRlY2wuYyAoZmluaXNoX3N0cnVjdCk6IFNvcnQgZmllbGRzIGlmCgludW1iZXIgZ3JlYXRlciB0aGFuIDE1IGFuZCB0aGVyZSBhcmUgbm8KCWFub255bW91cyBzdHJ1Y3RzL3VuaW9ucy4KCSogYy1jb21tb24uaDogSW5jbHVkZSBnZ2MuaC4KCShzb3J0ZWRfZmllbGRzX3R5cGUpOiBOZXcgc3RydWN0LgoJKGZpZWxkX2RlY2xfY21wKTogTmV3IHByb3RvdHlwZS4KCShyZXNvcnRfc29ydGVkX2ZpZWxkcyk6IE5ldyBwcm90b3R5cGUuCgkoREVDTF9ERUNMQVJFU19UWVBFX05PTl9URU1QTEFURV9QKTogTmV3IG1hY3JvLgoJKiBjLXRyZWUuaDogKGxhbmdfdHlwZSk6IFVzZSBwb2ludGVyIHRvIHNvcnRlZF9maWVsZHNfdHlwZQoJYXMgcywgcmVtb3Zpbmcgb3RoZXIgZmllbGRzLgoJKiBjLXR5cGVjay5jIChsb29rdXBfZmllbGQpOiBVc2UgcyBpbiBsYW5nX3R5cGUuCglUaGVzZSB3ZXJlIG1vc3RseSBtb3ZlZCBmcm9tIGNwL2NsYXNzLmM6CgkqIGMtY29tbW9uLmMgKGZpZWxkX2RlY2xfY21wKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShmaWVsZF9kZWNsX2NtcCk6IE5ldyBmdW5jdGlvbi4KCShyZXNvcnRfc29ydGVkX2ZpZWxkcyk6IE5ldyBmdW5jdGlvbi4KCjIwMDMtMDctMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19zZWxlY3Rfc2VjdGlvbik6IFVzZSBkZWNsX3JlYWRvbmx5X3NlY3Rpb24KCXRvIGRvIG1vc3Qgb2YgdGhlIHdvcmsuCgoyMDAzLTA3LTE2ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWcvbW1peC9tbWl4LXByb3Rvcy5oOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogY29uZmlnL21taXgvbW1peC5jOiBDb252ZXJ0IGZ1bmN0aW9ucyB0byBJU08gQzkwLgoJKG1taXhfZWhfcmV0dXJuX2hhbmRsZXJfcnR4LCBtbWl4X291dHB1dF9zaGlmdGVkX3ZhbHVlKTogVHdlYWsKCWZvcm1hdHRpbmcuCgkobW1peF9nZXRfaGFyZF9yZWdfaW5pdGlhbF92YWwpOiBUd2VhayBzZWN0aW9uIGhlYWQgY29tbWVudC4KCjIwMDMtMDctMTYgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogYy1wcmFnbWEuaCAoSEFORExFX1BSQUdNQV9XRUFLKTogQWx3YXlzIGRlZmluZSB0byBTVVBQT1JUU19XRUFLLgoKMjAwMy0wNy0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB1bndpbmQtZHcyLmMgKE1EX0ZST0JfVVBEQVRFX0NPTlRFWFQpOiBEZWZpbmUuCgkodXdfdXBkYXRlX2NvbnRleHRfMSk6IFVzZSBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoaW5zbl9hZnRlcl90aHJvdyk6IFJlbW92ZS4KCShyczYwMDBfYWl4X2VtaXRfYnVpbHRpbl91bndpbmRfaW5pdCk6IFNhdmUgJHIyIHRvIGl0cyBsb2NhdGlvbgoJaW4gcGFyZW50IGZyYW1lIGlmIF9VbndpbmRfKiBjYWxsZWQgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aHJvdWdoCgkucGx0LgoJKHJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlKTogUmVtb3ZlLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogVXBkYXRlIHN0YWNrIHBvaW50ZXIgYmVmb3JlIGRvaW5nIGFueSBzYXZpbmcKCWlmIGN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfZWhfcmV0dXJuLiAgR2VuZXJhdGUgdW53aW5kIGluZm8gZm9yICRyMi4KCShyczYwMDBfZW1pdF9lcGlsb2d1ZSk6IFJlc3RvcmUgc3RhY2sgcG9pbnRlciBhZnRlciBkb2luZyBhbGwKCXJlc3RvcmluZyBpZiBjdXJyZW50X2Z1bmN0aW9uX2NhbGxzX2VoX3JldHVybi4gIFJlc3RvcmUgJHIyLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX2VtaXRfZWhfdG9jX3Jlc3RvcmUpOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChlaF9yZXR1cm4pOiBSZW1vdmUgY2FsbCB0bwoJcnM2MDAwX2VtaXRfZWhfdG9jX3Jlc3RvcmUuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChNRF9GUk9CX1VQREFURV9DT05URVhUKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChNRF9GUk9CX1VQREFURV9DT05URVhUKTogRGVmaW5lLgoKMjAwMy0wNy0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGVtaXRfYmxvY2tfbW92ZSk6IERvbid0IG1vdmUgYW55dGhpbmcgaWYgc2l6ZSBpcyBjb25zdCAwLgoJKGNsZWFyX3N0b3JhZ2UpOiBUZXN0IGFnYWluc3QgY29uc3QwX3J0eCBpbnN0ZWFkIG9mIGNvbXBhcmluZyBJTlRWQUwKCWFnYWluc3QgMC4KCjIwMDMtMDctMTUgIERhdmlkIFMuIE1pbGxlciAgPGRhdmVtQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfbm9uZmxhdF9mdW5jdGlvbl9lcGlsb2d1ZSk6IE9ubHkKCWVtaXQgbm9wIGlmIHRoZSBsYXN0IHJlYWwgaW5zbiBpcyBDQUxMX0lOU04uCgoyMDAzLTA3LTE2ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYveG0tbWluZ3czMi5oIChIT1NUX0JJVF9CVUNLRVQpOiBEZWZpbmUKCWFzICJudWwiLgoJKiBjb25maWcvaTM4Ni94bS1taW5ndzMyLmg6IENoYW5nZSBHTlUgQ0MgdG8gR0NDLgoKMjAwMy0wNy0xNiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGFzc29jaWF0ZWRfdHlwZSk6IEFydGlmaWNpYWwgbWV0aG9kcyBhcmUgbm90CglhZmZlY3RlZCBieSB0aGUgaW1wb3J0L2V4cG9ydCBzdGF0dXMgb2YgdGhlaXIgY2xhc3MgdW5sZXNzIHRoZXkgYXJlCglDT01EQVQuCgkoaTM4Nl9wZV9kbGxpbXBvcnRfcCk6IERvIG5vdCBtYXJrIGFydGlmaWNpYWwgbWV0aG9kcyBhcyBkbGxpbXBvcnQuCgoJKiBjb25maWcvaTM4Ni93aW5udC5jOiBGaXggR0NDIGNvcHlyaWdodCBjb21tZW50LgoKMjAwMy0wNy0xNiAgR2FicmllbCBEb3MgUmVpcyAgPGdjY0BpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJUFIgYysrLzExNTMxCgkqIGRpYWdub3N0aWMuYyAoZGlhZ25vc3RpY19yZXBvcnRfZGlhZ25vc3RpYyk6IERvbid0IElDRSBpZiB3ZSdyZQoJbm90IHJlY3Vyc2luZyBvbiBoYXJkIGVycm9yLgoJKGRpYWdub3N0aWNfZm9yX2RlY2wpOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5kZWY6IFJlYXJyYW5nZS4KCjIwMDMtMDctMTUgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogZHdhcmYyb3V0LmMgKGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzKToKCUlmIERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4gZG9lc24ndCBoYXZlIGEgcmVnaXN0ZXIgbW9kZSwgdXNlIFBtb2RlLgoKMjAwMy0wNy0xNSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHVud2luZC1kdzIuYyAoX1Vud2luZF9HZXRHUik6IFVzZSBkd2FyZl9yZWdfc2l6ZV90YWJsZQoJdG8gZGVjaWRlIGlmIHRvIGFjY2VzcyBhIF9VbndpbmRfUHRyIG9yIGEgX1Vud2luZF9Xb3JkLgoJKF9VbndpbmRfU2V0R1IpOiBMaWtld2lzZS4KCShfVW53aW5kX0dldFB0ciwgX1Vud2luZF9TZXRTcENvbHVtbik6IE5ldyBmdW5jdGlvbnMuCgkoVW53aW5kX1NwVG1wKTogTmV3IHR5cGVkZWYuCgkodXdfdXBkYXRlX2NvbnRleHRfMSk6IFVzZSBfVW53aW5kX1NldFNwQ29sdW1uIGFuZCBfVW53aW5kX0dldFB0ci4KCSh1d191cGRhdGVfY29udGV4dCk6IFVzZSBfVW53aW5kX0dldFB0ci4KCShpbml0X2R3YXJmX3JlZ19zaXplX3RhYmxlKTogTW92ZSBhYm92ZSB1d19pbml0X2NvbnRleHRfMS4KCSh1d19pbml0X2NvbnRleHRfMSk6IEluaXRpYWxpemUgZHdhcmZfcmVnX3NpemVfdGFibGUgaWYgbmVjZXNzYXJ5LgoJVXNlIF9VbndpbmRfU2V0U3BDb2x1bW4uCgkodXdfaW5zdGFsbF9jb250ZXh0XzEpOiBEb24ndCBpbml0aWFsaXplIGR3YXJmX3JlZ19zaXplX3RhYmxlLgoJVXNlIF9VbndpbmRfR2V0UHRyLgoKMjAwMy0wNy0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy5vcHQ6IERvY3VtZW50IG1vcmUgb3B0aW9ucy4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogUmVtb3ZlIGFsbCBsb2NhbCBoZWxwIHN0cmluZ3MuCgoyMDAzLTA3LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGRlYnVnLzExNDczCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IFVzZSBUWVBFX1NJWkUgdG8gZGV0ZXJtaW5lIHRoZSBzaXplcyBvZgoJYmFzZSBjbGFzc2VzLgoKMjAwMy0wNy0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiB0YXJnZXQvMTA3OTUKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9jYXJyeV9mbGFnX2NvbXBhcmUpOiBEb24ndAoJc3dhcCBjb21wYXJpc29uIG9wZXJhbmRzIGlmIGRvaW5nIHNvIHdvdWxkIGdlbmVyYXRlIGFuCgl1bnJlY29nbml6YWJsZSBpbnNuLgoKMjAwMy0wNy0xNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTEzMjAKCSogc2NoZWQtaW50LmggKHN0cnVjdCBkZXBzKSBbcmVnX2NvbmRpdGlvbmFsX3NldHNdOiBOZXcgZmllbGQuCgkoc3RydWN0IHNjaGVkX2luZm8pIFtjb21wdXRlX2p1bXBfcmVnX2RlcGVuZGVuY2llc106IE5ldyBwcm90b3R5cGUuCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV9pbnNuKSBbSlVNUF9JTlNOXTogVXBkYXRlIGNhbGwgdG8KCWN1cnJlbnRfc2NoZWRfaW5mby0+Y29tcHV0ZV9qdW1wX3JlZ19kZXBlbmRlbmNpZXMuIFJlY29yZCB3aGljaAoJcmVnaXN0ZXJzIGFyZSB1c2VkIGFuZCB3aGljaCByZWdpc3RlcnMgYXJlIHNldCBieSB0aGUganVtcC4KCUNsZWFyIGRlcHMtPnJlZ19jb25kaXRpb25hbF9zZXRzIGFmdGVyIGEgYmFycmllci4KCVNldCBkZXBzLT5yZWdfY29uZGl0aW9uYWxfc2V0cyBpZiB0aGUgaW5zbiBpcyBhIENPTkRfRVhFQy4KCUNsZWFyIGRlcHMtPnJlZ19jb25kaXRpb25hbF9zZXRzIGlmIHRoZSBpbnNuIGlzIG5vdCBhIENPTkRfRVhFQy4KCShpbml0X2RlcHMpOiBJbml0aWFsaXplIHJlZ19jb25kaXRpb25hbF9zZXRzLgoJKGZyZWVfZGVwcyk6IENsZWFyIHJlZ19jb25kaXRpb25hbF9zZXRzLgoJKiBzY2hlZC1lYmIuYyAoY29tcHV0ZV9qdW1wX3JlZ19kZXBlbmRlbmNpZXMpOiBOZXcgcHJvdG90eXBlLgoJTWFyayByZWdpc3RlcnMgbGl2ZSBvbiBlbnRyeSBvZiB0aGUgZmFsbHRocm91Z2ggYmxvY2sgYW5kIGNvbmRpdGlvbmFsbHkKCXNldCBhcyBzZXQgYnkgdGhlIGp1bXAuIE1hcmsgcmVnaXN0ZXJzIGxpdmUgb24gZW50cnkgb2Ygbm9uLWZhbGx0aHJvdWdoCglibG9ja3MgYXMgdXNlZCBieSB0aGUganVtcC4KCSogc2NoZWQtcmduLmMgKGNvbXB1dGVfanVtcF9yZWdfZGVwZW5kZW5jaWVzKTogTmV3IHByb3RvdHlwZS4KCU1hcmsgbmV3IHBhcmFtZXRlcnMgYXMgdW51c2VkLgoKMjAwMy0wNy0xNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBSZXN5bmMgTUlQUyAtbWFyY2ggZG9jdW1lbnRhdGlvbi4KCjIwMDMtMDctMTUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUFJPQ0VTU09SX1I5MDAwKTogTmV3IHByb2Nlc3Nvcl90eXBlLgoJKFRBUkdFVF9NSVBTOTAwMCwgVFVORV9NSVBTOTAwMCk6IE5ldyBtYWNyb3MuCgkoR0VORVJBVEVfTVVMVDNfU0kpOiBUcnVlIGZvciBUQVJHRVRfTUlQUzkwMDAuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jcHVfaW5mb190YWJsZSk6IEFkZCBybTkwMDAgZW50cnkuCgkobWlwc19ydHhfY29zdHMpOiBBZGp1c3QgaW50ZWdlciBtdWx0aXBsaWNhdGlvbiBjb3N0cyBmb3IgdGhlIHJtOTAwMC4KCShtaXBzX2lzc3VlX3JhdGUpOiBIYW5kbGUgUFJPQ0VTU09SX1I5MDAwLgoJKG1pcHNfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvOTAwMC5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEluY2x1ZGUgaXQuCgkoZGVmaW5lX2F0dHIgY3B1KTogQWRkIHI5MDAwLgoJKG11bHNpM19tdWx0Myk6IFVzZSAibXVsIiBmb3Igcm05MDAwIGNvZGUuCgoyMDAzLTA3LTE1ICBTdGFuIENveCAgPHNjb3hAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUFJPQ0VTU09SX1I3MDAwKTogTmV3IHByb2Nlc3Nvcl90eXBlLgoJKFRBUkdFVF9NSVBTNzAwMCwgVFVORV9NSVBTNzAwMCk6IE5ldyBtYWNyb3MuCgkoR0VORVJBVEVfTVVMVDNfU0kpOiBUcnVlIGZvciBUQVJHRVRfTUlQUzcwMDAuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jcHVfaW5mb190YWJsZSk6IEFkZCBybTcwMDAgZW50cnkuCgkobWlwc19ydHhfY29zdHMpOiBBZGp1c3QgaW50ZWdlciBtdWx0aXBsaWNhdGlvbiBjb3N0cyBmb3IgdGhlIHJtNzAwMC4KCShtaXBzX2lzc3VlX3JhdGUpOiBIYW5kbGUgUFJPQ0VTU09SX1I3MDAwLgoJKG1pcHNfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvNzAwMC5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEluY2x1ZGUgaXQuCgkoZGVmaW5lX2F0dHIgY3B1KTogQWRkIHI3MDAwLgoJKG11bHNpM19tdWx0Myk6IFVzZSAibXVsIiBmb3Igcm03MDAwIGNvZGUuCgoyMDAzLTA3LTE1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkZWZpbmVfYXR0ciB0eXBlKTogQWRkIGNvbmRtb3ZlLiAgVXNlIGl0IGZvcgoJdGhlIGNvbmRpdGlvbmFsIG1vdmUgcGF0dGVybnMuCgkqIGNvbmZpZy9taXBzLzU0MDAubWQgKGlyX3ZyNTRfbW92ZSk6IFJlbmFtZSB0byBpcl92cjU0X2NvbmRtb3ZlLgoJQ2hlY2sgZm9yIGNvbmRtb3ZlIHR5cGUuCgkoaXJfdnI1NF9hcml0aCk6IEFkZCBtb3ZlIHR5cGUuCgkqIGNvbmZpZy9taXBzLzU1MDAubWQgKGlyX3ZyNTVfbW92ZSwgaXJfdnI1NV9hcml0aCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9zcjcxay5tZCAoaXJfc3I3MF9tb3ZlLCBpcl9zcjcwX2FyaXRoKTogTGlrZXdpc2UuCgoyMDAzLTA3LTE1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLW9wdHMuYyAocHJpbnRfaGVscCk6IFJlbW92ZS4KCShjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogRG9uJ3QgaGFuZGxlIC0taGVscC4KCSogYy5vcHQ6IERvY3VtZW50IHNvbWUgb3B0aW9ucy4KCSgtLWhlbHApOiBSZW1vdmUuCgkqIG9wdHMuYyAocHJpbnRfZmlsdGVyZWRfaGVscCk6IE5ldy4KCShwcmludF9oZWxwKTogVXNlIGl0LgoKMjAwMy0wNy0xNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90eXBlX2Zvcl9tb2RlKTogSGFuZGxlIFY0REZtb2RlLgoJKiB0cmVlLmM6IChidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogTGlrZXdpc2UuCgkqIHRyZWUuaCAoZW51bSB0cmVlX2luZGV4KTogQWRkIFRJX1Y0REZfVFlQRS4KCShWNERGX3R5cGVfbm9kZSk6IE5ldy4KCgkqIGMtb3B0cy5jIChwdXNoX2NvbW1hbmRfbGluZV9pbmNsdWRlKTogRG9uJ3QgZnJlZSBkZWZlcnJlZF9vcHRzLAoJd2UnbGwgbmVlZCBpdC4KCShmaW5pc2hfb3B0aW9ucyk6IFJlc2V0IGluaXRfY3Vyc29yLgoKMjAwMy0wNy0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQpOiBSZW1vdmUgYW4gdW51c2VkIGFyZ3VtZW50CglTVUdHRVNUX1JFRy4KCSogZXhwci5oOiBVcGRhdGUgdGhlIHByb3RvdHlwZS4KCSogZnVuY3Rpb24uYzogVXBkYXRlIHRoZSBjYWxsZXJzLgoJKiBzdG10LmM6IExpa2V3aXNlLgoKMjAwMy0wNy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8xMTA5OAoJKiBpbnRlZ3JhdGUuYyAoY29weV9kZWNsX2Zvcl9pbmxpbmluZyk6IERvIG5vdCBtYXJrIGNvcGllZCBkZWNscwoJYXMgREVDTF9BQlNUUkFDVC4KCjIwMDMtMDctMTQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYXZvaWRfYm9vbF9kZWZpbmUsIGF2b2lkX2Jvb2xfdHlwZSk6IEJ5cGFzcwoJd2l0aCBfX2NwbHVzcGx1cywgbm90ICJ3ZSBtdXN0IHVzZSB0aGUgQysrIGNvbXBpbGVyJ3MgdHlwZSIKCSogZml4aW5jL2luY2xoYWNrLmRlZiAodm9pZF9udWxsKTogTm90ZSB0aGF0IEludGVyaXggbmVlZHMgdGhpcy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDMtMDctMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdW53aW5kLWR3Mi1mZGUtZGFyd2luLmMgKGxpdmVfaW1hZ2VfZGVzdHJ1Y3Rvcik6IEdldCBzZWVuX29iamVjdHMKCWFuZCB1bnNlZW5fb2JqZWN0cyBmcm9tIHRoZSBnbG9iYWwgZGF0YSBiZWZvcmUgY2FsbGluZwoJX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMuCgkoZXhhbWluZV9vYmplY3RzKTogSW5zZXJ0IG9iamVjdHMgaW50byB0aGUgc2Vlbl9vYmplY3RzIGxpc3QsCglub3QgdW5zZWVuX29iamVjdHMuCgkoX1Vud2luZF9GaW5kX0ZERSk6IEFsd2F5cyB1bmxvY2sgdGhlIGdsb2JhbCBvYmplY3QgbGlzdHMsIGV2ZW4gaWYKCXdlIGNvdWxkbid0IGFsbG9jYXRlIGEgZGF0YSBzdHJ1Y3R1cmUgdG8gcHV0IGluIGl0LgoKCSogb2JqYy9vYmpjLWFjdC5oIChDTEFTU19TVVBFUl9OQU1FKTogQWRkIGEgbGl0dGxlIHR5cGVjaGVja2luZy4KCShUWVBFX1BST1RPQ09MX0xJU1QpOiBTaGFyZSB1c2Ugb2YgdHlwZS5jb250ZXh0IHdpdGggQyBmcm9udGVuZC4KCShTRVRfVFlQRV9QUk9UT0NPTF9MSVNUKTogTmV3LgoJKiBvYmpjL29iamMtYWN0LmMgKGdldF9zdGF0aWNfcmVmZXJlbmNlKTogVXNlIFNFVF9UWVBFX1BST1RPQ09MX0xJU1QuCgkoZ2V0X29iamVjdF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCjIwMDMtMDctMTQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ2xheW91dC5jIChsb2NhdG9yX2ZpbGUpOiBCcmVhayBvdXQgZnJvbSAuLi4uCgkoaW5zbl9maWxlKTogLi4uIGhlcmUuCgkobG9jYXRvcl9saW5lKTogQnJlYWsgb3V0IGZyb20gLi4uLgoJKGluc25fbGluZSk6IC4uLiBoZXJlLgoJKiBydGwuaCAobG9jYXRvcl9maWxlLCBsb2NhdG9yX2xpbmUpOiBEZWNsYXJlLgoJKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogU2V0IHByb3BlciBsaW5lL2ZpbGUgaW5mby4KCjIwMDMtMDctMTQgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY191bmFyeV9leHByZXNzaW9uKTogQSBDT05WRVJUX0VYUFIgaXMKCWhhbmRsZWQgYnkgcHBfY19jYXN0X2V4cHJlc3Npb24uCgoyMDAzLTA3LTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZXhwYW5kX3Byb2xvZ3VlKTogVXNlIGEgc2luZ2xlIGluc24gdG8KCWFsbG9jYXRlIDMyNzY4IGJ5dGVzIG9mIHN0YWNrLiAgVXNlIGFkZGl0aW9uIHJhdGhlciB0aGFuIHN1YnRyYWN0aW9uCgl3aGVuIGEgc2luZ2xlIGluc24gaXMgZW5vdWdoLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBSZW1vdmUgaW5zbnMgYW5kIHNwbGl0dGVycyBmb3Igc3VidHJhY3RpbmcKCWNvbnN0YW50cy4KCShzdWJzaTMpOiBPbmx5IGFjY2VwdCByZWdpc3RlciBvcGVyYW5kcy4KCShzdWJzaTNfaW50ZXJuYWwpOiBMaWtld2lzZS4gIFVzZSBmb3IgVEFSR0VUX01JUFMxNiBhcyB3ZWxsLgoJKHN1YmRpM19pbnRlcm5hbF8zLCBzdWJzaTNfaW50ZXJuYWxfMik6IExpa2V3aXNlLgoJKGNhc2VzaSk6IFVzZSBleHBhbmRfYmlub3AgdG8gc3VidHJhY3QgdGhlIGxvd2VyIGJvdW5kLgoKMjAwMy0wNy0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2luX3NtYWxsX2RhdGFfcCk6IERvbid0IGhhbmRsZQoJVEFSR0VUX01JUFMxNiBzcGVjaWFsbHkuCgoyMDAzLTA3LTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9lbGYuaCAoQVNNX09VVFBVVF9BTElHTkVEX0JTUyk6IFVzZQoJbWlwc19vdXRwdXRfYWxpZ25lZF9ic3MuCgkqIGNvbmZpZy9taXBzL2xpbnV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX291dHB1dF9hbGlnbmVkX2Jzcyk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfYWxpZ25lZF9ic3MpOiBOZXcgZnVuY3Rpb24uCgoJKiBjb25maWcvbWlwcy9lbGYuaCAoREJYX0RFQlVHR0lOR19JTkZPKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9lbGY2NC5oOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9taXBzL2VsZi5oIChBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IFVzZQoJbWlwc19kZWNsYXJlX29iamVjdF9uYW1lLgoJKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZSBtaXBzX2ZpbmlzaF9kZWNsYXJlX29iamVjdC4KCSogY29uZmlnL21pcHMvZWxmNjQuaDogQXMgZm9yIGVsZi5oLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbGludXguaCAoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBBcyBmb3IgZWxmLmguCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBSZW1vdmUgdW5uZWNlc3NhcnkKCWRvLi4ud2hpbGUgKDApIGJsb2NrLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2RlY2xhcmVfb2JqZWN0X25hbWUpOiBEZWNsYXJlLgoJKG1pcHNfZmluaXNoX2RlY2xhcmVfb2JqZWN0KTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2RlY2xhcmVfb2JqZWN0X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19maW5pc2hfZGVjbGFyZV9vYmplY3QpOiBOZXcgZnVuY3Rpb24uCgoJKiBjb25maWcvbWlwcy9lbGYuaCAoU0JTU19TRUNUSU9OX0FTTV9PUCk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbGludXguaDogTGlrZXdpc2UuCgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGluc2lkZV9mdW5jdGlvbik6IERlbGV0ZS4KCShmaWxlX2luX2Z1bmN0aW9uX3dhcm5pbmcsIGlnbm9yZV9saW5lX251bWJlcik6IERlbGV0ZS4KCShtaXBzX291dHB1dF9maWxlbmFtZSk6IERvbid0IHdhcm4gYWJvdXQgY2hhbmdpbmcgZmlsZW5hbWVzIHdpdGhpbgoJYSBmdW5jdGlvbi4KCShtaXBzX291dHB1dF9saW5lbm8pOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBEb24ndCByZXNldCB0aGUgZGVsZXRlZCB2YXJpYWJsZXMuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoaW5zaWRlX2Z1bmN0aW9uKTogRGVsZXRlLgoJKGZpbGVfaW5fZnVuY3Rpb25fd2FybmluZywgaWdub3JlX2xpbmVfbnVtYmVyKTogRGVsZXRlLgoKCSogY29uZmlnL21pcHMvZWxmLmggKE9CSkVDVF9GT1JNQVRfQ09GRiwgRVhURU5ERURfQ09GRik6IFJlbW92ZSB1bmRlZnMuCgkqIGNvbmZpZy9taXBzL2VsZjY0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9vcGVuYnNkLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9pcmlzNS5oIChPQkpFQ1RfRk9STUFUX0NPRkYpOiBSZW1vdmUgdW5kZWZzLgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChPQkpFQ1RfRk9STUFUX0NPRkYsIEVYVEVOREVEX0NPRkYpOiBEZWxldGUuCgkoQ09ERV9NQVNLLCBNSVBTX0lTX1NUQUIsIE1JUFNfTUFSS19TVEFCLCBNSVBTX1VOTUFSS19TVEFCKTogRGVsZXRlLgoKCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqbzMyLCBtaXBzLXNnaS1pcml4NSopOiBBZGQgbWlwcy9zZGIuaAoJdG8gdGhlIGxpc3Qgb2YgaW5jbHVkZSBmaWxlcyB3aGVuIHVzaW5nIGdhcy4KCShtaXBzKmVsLSotb3BlbmJzZCosIG1pcHMqLSotb3BlbmJzZCopOiBBZGQgbWlwcy9zZGIuaCB1bmNvbmRpdGlvbmFsbHkuCgkqIGNvbmZpZy9taXBzL2VsZi5oOiBSZW1vdmUgI3VuZGVmIFNEQl9ERUJVR0dJTkdfSU5GTy4KCSogY29uZmlnL21pcHMvZWxmNjQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL2lyaXM1Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvaXJpczVnYXMuaCAoU0RCX0RFQlVHR0lOR19JTkZPKTogUmVtb3ZlIGRlZmluaXRpb24uCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogTGlrZXdpc2UuCgkoU0RCX0RFQlVHR0lOR19JTkZPLCBzZGIqLCBTREJfQUxMT1dfKiwgUFVUX1NEQiopOiBNb3ZlIHRvLi4uCgkqIGNvbmZpZy9taXBzL3NkYi5oOiAuLi50aGlzIG5ldyBmaWxlLgoKMjAwMy0wNy0xNCAgRG91Z2xhcyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGZpeGluYy9zZXJ2ZXIuYyAoc2VydmVyX3NldHVwKTogRG9uJ3QgdXNlIG5vbi1QT1NJWCBOVUxMIGZpcnN0Cglhcmd1bWVudCB0byBnZXRjd2Q7IHVzZSBmaXhlZCBidWZmZXIgaW5zdGVhZC4KCjIwMDMtMDctMTQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBUcmVhdCBPcGVuQlNEIG5vcm1hbGx5LgoJKiBmaXhpbmMvZml4aW5jLndyYXA6IERlbGV0ZS4KCjIwMDMtMDctMTQgIERhbiBOaWNvbGFlc2N1ICA8ZGFubkBpY3MudWNpLmVkdT4KCgkqIGdnYy1wYWdlLmMgKGV4dHJhX29yZGVyX3NpemVfdGFibGUpOiBJbnNucyBoYXZlIDkgc2xvdHMuIFJlZ3MKCWRvbid0IGhhdmUgMi4KCjIwMDMtMDctMTQgIERhbiBOaWNvbGFlc2N1ICA8ZGFubkBpY3MudWNpLmVkdT4KCgkqIGdnYy1wYWdlLmMgKHN0cnVjdCBnbG9iYWxzKTogQWRkIG5ldyBmaWVsZHMgdG8ga2VlcCB0cmFjayBvZiB0aGUKCXRvdGFsIGFsbG9jYXRlZCBtZW1vcnkgYW5kIG92ZXJoZWFkLgoJKGdnY19wcmludF9zdGF0aXN0aWNzKTogUHJpbnQgdGhlbS4KCShnZ2NfYWxsb2MpOiBLZWVwIHRyYWNrIG9mIHRoZSB0b3RhbCBhbGxvY2F0ZWQgbWVtb3J5IGFuZCB0aGUKCW92ZXJoZWFkLgoKCSogdHJlZS5jIChkdW1wX3RyZWVfc3RhdGlzdGljcyk6IEluY3JlYXNlIHNwYWNpbmcuCgkoZW51bSB0cmVlX25vZGVfa2luZCk6IE1vdmUgdG8gLi4uCgkqIHRyZWUuaCAoZW51bSB0cmVlX25vZGVfa2luZCk6IC4uLiBoZXJlLgoJKHRyZWVfbm9kZV9jb3VudHMsIHRyZWVfbm9kZV9zaXplcyk6IERlY2xhcmUuCgoyMDAzLTA3LTE0ICBKYW1lcyBBLiBNb3JyaXNvbiAgPGphMm1vcnJpQHN0dWRlbnQubWF0aC51d2F0ZXJsb28uY2E+CgoJKiBkb2MvaW5jbHVkZS90ZXhpbmZvLnRleDogVXBncmFkZSB0byB0ZXhpbmZvIDQuNi4KCjIwMDMtMDctMTQgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTE0NDAKCSogZ2NzZS5jICh0cnlfcmVwbGFjZV9yZWcpOiBEb24ndCBhdHRhY2ggbm90ZXMgdG8gWkVST19FWFRSQUNUIG9yCglTSUdOX0VYVFJBQ1QgU0VUcy4KCjIwMDMtMDctMTQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBkb2MvdG0udGV4aSAoQkxPQ0tfUkVHX1BBRERJTkcpOiBEZXNjcmliZS4KCSogZXhwci5oIChzdHJ1Y3QgbG9jYXRlX2FuZF9wYWRfYXJnX2RhdGEpOiBBZGQgd2hlcmVfcGFkLgoJKGVtaXRfZ3JvdXBfbG9hZCwgZW1pdF9ncm91cF9zdG9yZSk6IEFkanVzdCBkZWNsYXJhdGlvbnMuCglSZW1vdmUgbW9zdCBvY2N1cnJlbmNlcyBvZiAjaWZkZWYgVFJFRV9DT0RFLgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfbG9hZCk6IEFkZCAidHlwZSIgcGFyYW0sIGFuZCB1c2UKCUJMT0NLX1JFR19QQURESU5HIHRvIGRldGVybWluZSBuZWVkIGZvciBhIHNoaWZ0LiAgT3B0aW1pemUgbm9uLQoJYWxpZ25lZCBhY2Nlc3NlcyBpZiAhU0xPV19VTkFMSUdORURfQUNDRVNTLgoJKGVtaXRfZ3JvdXBfc3RvcmUpOiBMaWtld2lzZS4KCShlbWl0X3B1c2hfaW5zbiwgZXhwYW5kX2Fzc2lnbm1lbnQsIHN0b3JlX2V4cHIsIGV4cGFuZF9leHByKTogQWRqdXN0CgllbWl0X2dyb3VwX2xvYWQgYW5kIGVtaXRfZ3JvdXBfc3RvcmUgY2FsbHMuCgkqIGNhbGxzLmMgKHN0b3JlX3VuYWxpZ25lZF9hcmd1bWVudHNfaW50b19wc2V1ZG9zKTogVGlkeS4gIFVzZQoJQkxPQ0tfUkVHX1BBRERJTkcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgbmVlZCBlbmRpYW5fY29ycmVjdGlvbi4KCShsb2FkX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiBMb2NhbGl6ZSB2YXJzLiAgSGFuZGxlIHNoaWZ0aW5nIG9mCglzbWFsbCB2YWx1ZXMgdG8gdGhlIGNvcnJlY3QgZW5kIG9mIHJlZ3MuICBBZGp1c3QgZW1pdF9ncm91cF9sb2FkCgljYWxsLgoJKGV4cGFuZF9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogQWRqdXN0IGVtaXRfZ3JvdXBfbG9hZAoJYW5kIGVtaXRfZ3JvdXBfc3RvcmUgY2FsbHMuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IFNldCBtZW0gYWxpZ25tZW50IGZvciBzdGFjayBzbG90cy4KCUFkanVzdCBlbWl0X2dyb3VwX3N0b3JlIGNhbGwuICBTdG9yZSB2YWx1ZXMgYXQgdGhlICJ3cm9uZyIgZW5kCglvZiByZWdzIHRvIHRoZSBzdGFjay4gIFVzZSBCTE9DS19SRUdfUEFERElORy4KCShsb2NhdGVfYW5kX3BhZF9wYXJtKTogU2F2ZSB3aGVyZV9wYWQuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IEFkanVzdCBlbWl0X2dyb3VwX2xvYWQgY2FsbC4KCSogc3RtdC5jIChleHBhbmRfdmFsdWVfcmV0dXJuKTogQWRqdXN0IGVtaXRfZ3JvdXBfbG9hZCBjYWxsLgoJKiBNYWtlZmlsZS5pbiAoY2FsbHMubyk6IERlcGVuZCBvbiAkKE9QVEFCU19IKS4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFRBUkdFVF9MSVRUTEVfRU5ESUFOKTogUmVkZWZpbmUgYXMgMC4KCShBR0dSRUdBVEVfUEFERElOR19GSVhFRCwgQUdHUkVHQVRFU19QQURfVVBXQVJEX0FMV0FZUyk6IERlZmluZS4KCShNVVNUX1BBU1NfSU5fU1RBQ0spOiBEZWZpbmUuCgkoQkxPQ0tfUkVHX1BBRERJTkcpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKHN0cnVjdCByczYwMDBfYXJncyk6IFJlbW92ZSBvcmlnX25hcmdzLgoJKFBBRF9WQVJBUkdTX0RPV04pOiBEZWZpbmUgaW4gdGVybXMgb2YgRlVOQ1RJT05fQVJHX1BBRERJTkcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogRG9uJ3Qgc2V0IG9yaWdfbmFyZ3MuCgkoZnVuY3Rpb25fYXJnX3BhZGRpbmcpOiAhQUdHUkVHQVRFX1BBRERJTkdfRklYRUQgY29tcGF0aWJpbGl0eSBjb2RlLgoJQWN0IG9uIEFHR1JFR0FURVNfUEFEX1VQV0FSRF9BTFdBWVMuCgoyMDAzLTA3LTEzICBBYXJvbiBXLiBMYUZyYW1ib2lzZSAgPGF3bGFmcmFtYm9pc2VAYW9sLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2d0aHItd2luMzIuYyAoX19HVEhSRUFEX0hJREVfV0lOMzJBUEkpOiBEZWZpbmUgdG8gMS4KCjIwMDMtMDctMTMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBJZiByZWcsIGNvcHkgT1AwIHRvIE1FTQoJYm90aCBpZiBPRkZTRVQgc3BlY2lmaWVkIGFuZCBpZiByZXN1bHQgQkxLbW9kZSBmb3IgQVJSQVlfUkFOR0VfUkVGLgoKMjAwMy0wNy0xMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJUFIgb3RoZXIvMTExMjMKCSogdG9wbGV2LmM6IERvbid0IGN1dCBvZmYgb3B0aW9uIG5hbWVzLgoKMjAwMy0wNy0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogYy1kZWNsLmMgKGxpbmtfaGFzaF9oYXNoKTogQXZvaWQgd2FybmluZyBhYm91dCBjYXN0aW5nIHBvaW50ZXIKCXRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUuCgoyMDAzLTA3LTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogQ29udmVydCAobmUgKGFuZCAobm90IFgpIDEpIDApCgl0byAoZXEgKGFuZCBYIDEpIDApLgoKMjAwMy0wNy0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnLmdjYzogQWRkIHBtbWludHJpbi5oIGZvciB4ODZfNjQtKi0qLgoKMjAwMy0wNy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChMSUJDUFBfREVQUyk6IFJlbW92ZSBjb3JldHlwZXMuaCBhbmQgJChUTV9IKS4KCShoYXNodGFibGUubywgbGluZS1tYXAubywgbWtkZXBzLm8pOiBMaWtld2lzZSwgZnJvbSBkZXBlbmRlbmN5CglsaXN0LiAgTW92ZSB0aGVzZSBhbGwgdG9nZXRoZXIgZG93biBieSBjcHBsaWIuCgoJKiBjcHBsaWIuaDogRG9uJ3QgcmVmZXIgdG8gTUFYX1dDSEFSX1RZUEVfU0laRSB3aGVuIGRldGVybWluaW5nCglkZWZpbml0aW9uIG9mIENQUENIQVJfU0lHTkVEX1QuCgoJKiBjcHBjaGFyc2V0LmMsIGNwcGVycm9yLmMsIGNwcGV4cC5jLCBjcHBmaWxlcy5jLCBjcHBoYXNoLmMsIGNwcGluaXQuYwoJKiBjcHBsZXguYywgY3BwbGliLmMsIGNwcG1hY3JvLmMsIGNwcHBjaC5jLCBjcHB0cmFkLmMsIGhhc2h0YWJsZS5jCgkqIGxpbmUtbWFwLmMsIG1rZGVwcy5jOiBEb24ndCBpbmNsdWRlIGNvcmV0eXBlcy5oIG9yIHRtLmguCgoJKiBjcHBoYXNoLmMgKF9jcHBfaW5pdF9oYXNodGFibGUpOiBEb24ndCB1c2UgZ2NjX29ic3RhY2tfaW5pdC4KCSogY3BwaW5pdC5jIChjcHBfY3JlYXRlX3JlYWRlcik6IExpa2V3aXNlLgoKCSogY3BwaGFzaC5oIChzY2FuX291dF9sb2dpY2FsX2xpbmUpOiBSZW5hbWUgX2NwcF9zY2FuX291dF9sb2dpY2FsX2xpbmUuCgkqIGNwcHRyYWQuYzogTGlrZXdpc2UuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKiBjcHBsaWIuYzogQWxsIGNhbGxlcnMgY2hhbmdlZC4KCSogYy1wcG91dHB1dC5jOiBSZXBsYWNlICd1Y2hhcicgd2l0aCAndW5zaWduZWQgY2hhcicgdGhyb3VnaG91dC4KCSogaGFzaHRhYmxlLmg6IERlZmluZSBHVFkoeCkgdG8gbm90aGluZyBoZXJlIHRvby4KCjIwMDMtMDctMTMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChjb21wdXRlX3JlY29yZF9tb2RlKTogUmVtb3ZlIHZlcnkgb2Jzb2xldGUgdGVzdAoJdGhhdCBmb3JjZXMgQkxLbW9kZSBmb3IgcmVjb3JkcyB3aXRoIGZpZWxkcyBjcm9zc2luZyB3b3JkIGJvdW5kYXJ5LgoKMjAwMy0wNy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgb3JwaGFuIHJlZmVyZW5jZSB0byBhY2NvbmZpZy5oLgoKMjAwMy0wNy0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY2dyYXBodW5pdC5jOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCjIwMDMtMDctMTMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYXZvaWRfd2NoYXJfdF90eXBlKTogVXNlIF9fY3BsdXNwbHVzIGJ5cGFzcwoJKGZvciBPcGVuQlNEKS4KCSogZml4aW5jL2ZpeGluY2wueDogUmVidWlsZC4KCjIwMDMtMDctMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW46IEFsd2F5cyBkZWZpbmUgSEFWRV9BU19HT1RPRkZfSU5fREFUQSBmb3IKCWk/ODYtKi0qLiAgVXNlIGNvcnJlY3QgbmFtZSBvZiBjYWNoZSB2YXJpYWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wNy0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL1JFQURNRS1pbnRlcndvcmtpbmc6IEZpeCB0eXBvcy4KCjIwMDMtMDctMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLWZvcm1hdC5jOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjLXR5cGVjay5jOiBMaWtld2lzZS4KCSogY292ZXJhZ2UuYzogTGlrZXdpc2UuCgkqIGNwcGNoYXJzZXQuYzogTGlrZXdpc2UuCgkqIGNwcGxpYi5jOiBMaWtld2lzZS4KCSogZGJ4b3V0LmM6IExpa2V3aXNlLgoJKiBnY292LWlvLmg6IExpa2V3aXNlLgoJKiB0b3BsZXYuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTEyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGFscGhhX3NicmspOiBOb3RlIHRoYXQgT3BlbkJTRCBuZWVkcyB0aGlzCglmaXguCgoyMDAzLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYWNsb2NhbC5tNCAoZ2NjX0FDX0NIRUNLX1RZUEUpOiBDbG9uZSBvZiBBQ19DSEVDS19UWVBFLAoJdXNlcyB0aHJlZS1hcmd1bWVudCBBQ19ERUZJTkUgc28gbm8gYWNjb25maWcuaCBlbnRyaWVzIGFyZQoJbmVlZGVkLgoJKF9nY2NfQ09NUFVURV9HQVNfVkVSU0lPTik6IEFsc28gcHJvdmlkZSBnY2NfY3ZfZ2FzX3ZlcnMKCXdoaWNoIGNvbnRhaW5zIHRoZSBHQVMgdmVyc2lvbiBudW1iZXIgYXMgYSBzY2FsZWQgaW50ZWdlci4KCShnY2NfR0FTX1ZFUlNJT05fR1RFX0lGRUxTRSk6IFVzZSBnY2NfY3ZfZ2FzX3ZlcnMuICBBZGQKCWFiaWxpdHkgdG8gY2hlY2sgZm9yIEVMRiBhc3NlbWJsZXIuCgkoZ2NjX0dBU19DSEVDS19GRUFUVVJFKTogTmV3IG1hY3JvLgoJKiBjb25maWd1cmUuaW46IFVzZSBnY2NfQUNfQ0hFQ0tfVFlQRS4gIFJld3JpdGUgYWxsCglhc3NlbWJsZXIgZmVhdHVyZSBjaGVja3MgdXNpbmcgZ2NjX0dBU19DSEVDS19GRUFUVVJFLgoJVXNlIHRocmVlLWFyZ3VtZW50IEFDX0RFRklORSBldmVyeXdoZXJlLgoJKiBhY2NvbmZpZy5oOiBEZWxldGVkLgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDctMTIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3RydWN0X3NvY2thZGRyKTogQXZvaWQgImZpeGluZyIgc29ja2FkZHJfaW4KCShvbiBPcGVuQlNEKS4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGdudV90eXBlcyk6IEltcHJvdmUgY29tbWVudC4KCjIwMDMtMDctMTIgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGZwLXRlc3QuYyAobWFpbik6IFVzZSBJU08gQzkwIHByb3RvdHlwZS4KCgkqIHZlcnNpb24uYzogUmVtb3ZlIHVubmVkZWQgaW5jbHVkZSBvZiBhbnNpZGVjbC5oLgoKCSogY2dyYXBoLmg6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBjZ3JhcGguYzogTGlrZXdpc2UuCgkqIGZpeC1oZWFkZXIuYzogTGlrZXdpc2UuCgkqIHJhLmg6IExpa2V3aXNlLgoJKiBwcm90b2l6ZS5jOiBMaWtld2lzZS4KCjIwMDMtMDctMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2lubGluZWRfaW50bywgY2dyYXBoX2lubGluZWRfY2FsZWVzKTogRml4Cgl3YXJuaW5nLgoKMjAwMy0wNy0xMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJCQkgICAgICAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogY2dyYXBoLmMgKGNncmFwaF9tYXhfdWlkKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShjZ3JhcGhfbm9kZSk6IFNldCB1aWQgZmllbGQuCgkoY3JlYXRlX2VkZ2UpOiBLZWVwIGlubGluZSBmbGFncyBjb25zaXN0ZW50LgoJKGR1bXBfY2dyYXBoKTogRHVtcCBtb3JlIGluZm8uCgkqIGNncmFwaC5oIChzdHJ1Y3QgY2dyYXBoX2xvY2FsX2luZm8pOiBSZW1vdmUgaW5saW5lX21hbnkgYW5kCgljYW5faW5saW5lX29uY2U7IGFkZCBpbmxpbmFibGUsIGRpc2dyZWFkX2lubGluZV9saW1pdHMsIGFuZCBzZWxmX2luc24KCShzdHJ1Y3QgY2dyYXBoX2dsb2JhbF9pbmZvKTogQWRkIGluc25zLCBjYWxscywgY2xvbmVkX3RpbWVzLAoJd2lsbF9iZV9vdXRwdXQuCgkoc3RydWN0IGNncmFwaF9ub2RlKTogQWRkIHVpZC4KCShzdHJ1Y3QgY2dyYXBoX2VkZ2UpOiBBZGQgaW5saW5lX2NhbGwuCgkoY2dyYXBoX21heF91aWQsIGNncmFwaF9pbmxpbmVfcCk6IERlY2xhcmUuCgkqIGNncmFwaC5jOiBJbmNsdWRlIHBhcmFtcy5oIGFuZCBmaWJoZWFwLmgKCShjZ3JhcGhfbWFya19mdW5jdGlvbnNfdG9faW5saW5lX29uY2UpOiBLaWxsLgoJKElOU05TX1BFUl9DQUxMKTogTmV3IGNvbnN0YW50LgoJKG5jYWxsc19pbmxpbmVkLCBuZnVuY3Rpb25zX2lubGluZWQsIGluaXRpYWxfaW5zbnMsIG92ZXJhbGxfaW5zbnMpOiBOZXcKCXN0YXRpYyB2YXJpYWJsZXMuCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogRG8gbm90IGFuYWx5emUgaW5saW5pbmcuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBTZXQgaW5saW5pbmcgYXR0cmlidXRlcy4KCShjZ3JhcGhfbWFya19mdW5jdGlvbnNfdG9fb3V0cHV0KTogTW9yZSBjb25zaXN0ZW5jeSBjaGVja3MuCgkoY2dyYXBoX29wdGltaXplX2Z1bmN0aW9uKTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fZGVjbCB0byBOVUxMLgoJKGNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBVc2UgbmV3IGlubGluZSBmbGFncy4KCShjZ3JhcGhfcG9zdG9yZGVyKTogRXhwYW5kIGZyb20gY2dyYXBoX2V4cGFuZF9mdW5jdGlvbnMuCgkoSU5MSU5FRF9USU1FUywgU0VUX0lOTElORURfVElNRVMpOiBOZXcgbWFjcm9zLgoJKGNncmFwaF9pbmxpbmVkX2ludG8sIGNncmFwaF9pbmxpbmVkX2NhbGxlZXMsCgljZ3JhcGhfZXN0aW1hdGVfc2l6ZV9hZnRlcl9pbmxpbmluZywgY2dyYXBoX2VzdGltYXRlX2dyb3d0aCwKCWNncmFwaF9tYXJrX2lubGluZSwgY2dyYXBoX2NoZWNrX2lubGluZV9saW1pdHMsCgljZ3JhcGhfZGVmYXVsdF9pbmxpbmVfcCwgY2dyYXBoX2RlY2lkZV9pbmxpbmdfb2Zfc21hbGxfZnVuY3Rpb25zLAoJY2dyYXBoX2RlY2lkZV9pbmxpbmluZywgY2dyYXBoX2lubGluZV9wKTogTmV3IGZ1bmN0aW9ucy4KCSogcGFyYW1zLmRlZiAoUEFSQU1fTEFSR0VfRlVOQ1RJT05fSU5TTlMsIFBBUkFNX0xBUkdFX0ZVTkNUSU9OX0dST1dUSCwKCVBBUkFNX0lOTElORV9VTklUX0dST1dUSCk6IE5ldyBwYXJhbWV0ZXJzLgoJKiB0cmVlLWlubGluZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBOZXcgZmllbGQgY3VycmVudF9kZWNsLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IEF2b2lkIGZvcndhcmQgZGVjbGFyYXRpb25zOyB1c2UKCWlubGluYWJsZV9mdW5jdGlvbl9wLgoJKG9wdGltaXplX2lubGluZV9jYWxscyk6IFNldCBpZC5jdXJyZW50X2RlY2wuCgoyMDAzLTA3LTExICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIHdyb25nbHkgYWRkZWQgZGVmaW5pdGlvbiBvZgoJbG9jYWxfcHJlZml4LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTExICBEYW4gTmljb2xhZXNjdSAgPGRhbm5AaWNzLnVjaS5lZHU+CgoJKiBydGwuZGVmIChOT1RFKTogRG8gbm90IHVzZSBwYWRkaW5nLgoKMjAwMy0wNy0xMSAgRGFyYSBIYXplZ2hpICA8ZGhhemVnaGlAeWFob28uY29tPgoKCSogZG9jL2luc3RhbGwudGV4OiBVcGRhdGUgcmVxdWlyZWQgYmludXRpbHMgZm9yIGk/ODYtKi1saW51eCoKCjIwMDMtMDctMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc3RhZ2UxX2J1aWxkKTogRm9yY2UgT0JKUy1vbmVzdGVwPU9CSlMuCgoyMDAzLTA3LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBUcmVhdCBkZWNscyB3aXRoIGEgREVDTF9DT05URVhUIG9mCglUUkFOU0xBVElPTl9VTklUX0RFQ0wgYXMgdG9wX2xldmVsLgoKMjAwMy0wNy0xMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBvcHRhYnMuYyAocHJlcGFyZV9jbXBfaW5zbik6IFRyeSBjbXBtZW1NIGZpcnN0IGlmIGl0IGV4aXN0cywKCXRoZW4gZmFsbCBiYWNrIHRvIGNtcHN0ck0uCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbWNtcCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2V4cGFuZF9jbXBzdHIpOiBSZW5hbWUgdG8uLi4KCShzMzkwX2V4cGFuZF9jbXBtZW0pOiAuLi4gdGhpcy4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoY21wbWVtZGksIGNtcG1lbXNpLCBjbXBtZW1fc2hvcnRfNjQsCgljbXBtZW1fc2hvcnRfMzEsIGNtcG1lbV9sb25nXzY0LCBjbXBtZW1fbG9uZ18zMSk6IFJlbmFtZWQKCWZyb20gY21wc3RyKiBwYXR0ZXJucy4gIFJlbmFtZSBjYWxsIHRvIHMzOTBfZXhwYW5kX2NtcHN0cgoJdG8gczM5MF9leHBhbmRfY21wbWVtLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZXhwYW5kX2NtcHN0cik6IFJlbmFtZSB0by4uLgoJKHMzOTBfZXhwYW5kX2NtcHN0cik6IC4uLiB0aGlzLiAgUmVuYW1lIGNtcHN0ciogaW5zdHJ1Y3Rpb25zCgl0byBjbXBtZW0qLgoJKiBjb25maWcvaTM3MC9pMzcwLm1kIChjbXBtZW1zaSwgY21wbWVtc2lfMSk6IFJlbmFtZWQgZnJvbQoJY21wc3RyKiBwYXR0ZXJucy4KCSogZG9jL21kLnRleGkgKGNtcHN0ck0pOiBEZXNjcmliZSBhcyBTdHJpbmcgY29tcGFyZSBpbnNuLCBub3QKCUJsb2NrIGNvbXBhcmUgaW5zbi4KCShjbXBtZW1NKTogQWRkLgoKMjAwMy0wNy0xMSAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QuaCAoU0VUX0FTTV9PUCk6IFJlbW92ZS4KCShTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IEhhbmRsZSBUQVJHRVRfNjRCSVQgY2FzZS4KCShBU01fQ09NTUVOVF9TVEFSVCwgQVNNX0FQUF9PTiwgQVNNX0FQUF9PRkYsIERCWF9SRUdJU1RFUl9OVU1CRVIKCSBNQ09VTlRfTkFNRSwgU0laRV9UWVBFLCBQVFJESUZGX1RZUEUsIFdDSEFSX1RZUEVfU0laRSk6IFdoaXRlc3BhY2UuCgoyMDAzLTA3LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogRG9uJ3QgcmVjb21iaW5lIGNvbXBsZXggYXJncyBpZgoJZm5hcmdzIGlzIHVuY2hhbmdlZCBmcm9tIG9yaWdfZm5hcmdzLgoJKHNwbGl0X2NvbXBsZXhfYXJncyk6IFJldHVybiBhcmdzIHdpdGhvdXQgY29tcGxleCBiZWZvcmUgY29weWluZy4KCVJlLWxheW91dCB0aGUgbW9kaWZpZWQgcGFyYW1ldGVycy4KCjIwMDMtMDctMTEgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogcmVnY2xhc3MuYyAoY2hvb3NlX2hhcmRfcmVnX21vZGUpOiBBZGQgdGhpcmQgYXJndW1lbnQuCglDaGFuZ2VkIGFsbCBjYWxsZXJzLgoJKiBydGwuaCAoY2hvb3NlX2hhcmRfcmVnX21vZGUpOiBVcGRhdGUgZGVjbGFyYXRpb24uCgkqIGR3YXJmMm91dC5jIChleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyk6CglUYWtlIEhBUkRfUkVHTk9fQ0FMTF9QQVJUX0NMT0JCRVJFRCBpbnRvIGFjY291bnQuCgoyMDAzLTA3LTExICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IEhhbmRsZSAndXNlZCcgaGVyZS4uLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IC4uLiBhbmQgaGVyZSAuLi4KCSogYy1jb21tb24uYzogKGhhbmRsZV91c2VkX2F0dHJpYnV0ZSk6IC4uLiBub3QgaGVyZS4KCgkqIGNvbmZpZ3VyZS5pbiAob25zdGVwKTogU3VwcG9ydCAtLWVuYWJsZS1pbnRlcm1vZHVsZS4KCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogTmV3LgoJKE9CSlMtbWQpOiBOZXcuCgkoT0JKUy1hcmNoaXZlKTogTmV3LgoJKE9CSlMpOiBCdWlsZCBmcm9tIE9CSlMtY29tbW9uLCBPQkpTLW1kLCBPQkpTLWFyY2hpdmUuCgkoT0JKUy1vbmVzdGVwKTogTmV3LgoJKGxpYmJhY2tlbmQuYSk6IFN1cHBvcnQgQG9uZXN0ZXBALgoJKGxpYmJhY2tlbmQubyk6IE5ldy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogYy1jb21tb24uaCAoY19yZXNldF9zdGF0ZSk6IE5ldyBwcm90b3R5cGUuCgkoY19wYXJzZV9maWxlKTogTmV3IHByb3RvdHlwZS4KCShmaW5pc2hfZmlsZSk6IE1vdmUgcHJvdG90eXBlIGZyb20gYy10cmVlLmguCgkqIGMtZGVjbC5jOiBJbmNsdWRlIDxoYXNodGFiLmg+LgoJKGJ1aWx0aW5fZGVjbHMpOiBOZXcuCgkoY3VycmVudF9maWxlX2RlY2wpOiBOZXcuCgkoZHVwbGljYXRlX2RlY2xzKTogQWRkIGV4dHJhIHBhcmFtZXRlci4gQ2hhbmdlIGFsbCBjYWxsZXJzLiAgRG9uJ3QKCW91dHB1dCBkdXBsaWNhdGUgY29tbW9uIHN5bWJvbHMuCgkobGlua19oYXNoX2hhc2gpOiBOZXcuCgkobGlua19oYXNoX2VxKTogTmV3LgoJKHBvcGxldmVsKTogSGFuZGxlIHBvcHBpbmcgb2YgdGhlIHRvcCBsZXZlbC4KCSh3YXJuX2lmX3NoYWRvd2luZyk6IEhhbmRsZSBUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkocHVzaGRlY2wpOiBTZXQgREVDTF9DT05URVhUIHRvIFRSQU5TTEFUSU9OX1VOSVRfREVDTCBpZiBhcHByb3ByaWF0ZS4KCShwdXNoZGVjbF90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBIYW5kbGUgVFJBTlNMQVRJT05fVU5JVF9ERUNMLgoJKGNfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgVFJBTlNMQVRJT05fVU5JVF9ERUNMLgoJKGZpbmlzaF9kZWNsKTogSGFuZGxlIFRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCShtZXJnZV90cmFuc2xhdGlvbl91bml0X2RlY2xzKTogTmV3LgoJKGNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IE5ldy4KCShjX3Jlc2V0X3N0YXRlKTogTmV3LgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IEhhbmRsZSBUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkqIGMtbGFuZy5jIChMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMpOiBOZXcuCgkqIGMtb2JqYy1jb21tb24uYyAoY19jYW5ub3RfaW5saW5lX3RyZWVfZm4pOiBIYW5kbGUKCVRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCShjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlKTogQ2FsbCBtZXJnZV90cmFuc2xhdGlvbl91bml0X2RlY2xzLgoJKiBjLW9wdHMuYyAoaW5fZm5hbWVzKTogUmVuYW1lIGZyb20gaW5fZm5hbWUuCgkoY19jb21tb25fZGVjb2RlX29wdGlvbik6IEhhbmRsZSBtdWx0aXBsZSBpbnB1dCBmaWxlbmFtZXMuCgkoY19jb21tb25fcG9zdF9vcHRpb25zKTogTGlrZXdpc2UuCgkoY19jb21tb25fcGFyc2VfZmlsZSk6IExpa2V3aXNlOyBhbHNvLCBjYWxsIGNfcGFyc2VfZmlsZSByYXRoZXIgdGhhbgoJeXlwYXJzZS4KCSogYy1wYXJzZS5pbjogTW92ZSBjbGVhbnVwIGNvZGUgdG8gY19wYXJzZV9maWxlLgoJKGZyZWVfcGFyc2VyX3N0YWNrcyk6IE1vdmUgY29udGVudHMgdG8gY19wYXJzZV9maWxlLgoJKGNfcGFyc2VfZmlsZSk6IE5ldy4KCSogYy10cmVlLmggKHVuaW9uIGxhbmdfdHJlZV9ub2RlKTogQ2hhaW4gYWxvbmcgVFlQRV9ORVhUX1ZBUklBTlQKCWZvciBpbnRlZ2VyIHR5cGVzLgoJKENfREVDTF9GSUxFX1NDT1BFKTogTmV3LgoJKGZpbmlzaF9maWxlKTogTW92ZSBwcm90b3R5cGUgdG8gYy1jb21tb24uaC4KCShtZXJnZV90cmFuc2xhdGlvbl91bml0X2RlY2xzKTogTmV3IHByb3RvdHlwZS4KCShjb21wdHlwZXMpOiBBZGQgZXh0cmEgcGFyYW1ldGVyIHRvIHByb3RvdHlwZS4KCShjX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBOZXcgcHJvdG90eXBlLgoJKiBjLXR5cGVjay5jICh0YWdnZWRfdHlwZXNfdHVfY29tcGF0aWJsZV9wKTogTmV3LgoJKGZ1bmN0aW9uX3R5cGVzX2NvbXBhdGlibGVfcCk6IEFkZCBleHRyYSBwYXJhbWV0ZXIsIGNoYW5nZSBhbGwgY2FsbGVycy4KCSh0eXBlX2xpc3RzX2NvbXBhdGlibGVfcCk6IExpa2V3aXNlLgoJKGNvbXB0eXBlcyk6IExpa2V3aXNlLgoJKHN0cnVjdCB0YWdnZWRfdHVfc2Vlbik6IE5ldy4KCSh0YWdnZWRfdHVfc2Vlbl9iYXNlKTogTmV3LgoJKGJ1aWxkX3VuYXJ5X29wKTogSGFuZGxlIFRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCShjX21hcmtfYWRkcmVzc2FibGUpOiBSZW1vdmUgI2lmIDAgY29kZS4KCSogY2FsbHMuYyAoc3BlY2lhbF9mdW5jdGlvbl9wKTogSGFuZGxlIFRSQU5TTEFUSU9OX1VOSVRfREVDTCwgYWRkCgljb21tZW50IGV4cGxhaW5pbmcgd2h5IGl0IHNob3VsZG4ndCBoYXZlIHRvLgoJKiBjZ3JhcGguaCAoc3RydWN0IGNncmFwaF9ub2RlKTogQWRkIGNoYWluX25leHQgYW5kIGNoYWluX3ByZXYgR1RZCglvcHRpb25zLgoJKiBjcHBpbml0LmMgKGNwcF9yZWFkX25leHRfZmlsZSk6IE5ldy4KCShjcHBfcmVhZF9tYWluX2ZpbGUpOiBVc2UgaXQuCgkqIGNwcGxpYi5jICh1bmRlZmluZV9tYWNyb3MpOiBOZXcuCgkoY3BwX3VuZGVmX2FsbCk6IE5ldy4KCSogY3BwbGliLmggKGNwcF9yZWFkX25leHRfZmlsZSk6IFByb3RvdHlwZS4KCShjcHBfdW5kZWZfYWxsKTogUHJvdG90eXBlLgoJKiBsYW5naG9va3MtZGVmLmggKHdyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiB0b3BsZXYuaCAod3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IEFkZCBwcm90b3R5cGUuCgkqIHRyZWUuYyAoZGVjbF90eXBlX2NvbnRleHQpOiBVc2Ugc3dpdGNoIHN0YXRlbWVudCwgaGFuZGxlCglUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkqIHRyZWUuZGVmOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgVFJBTlNMQVRJT05fVU5JVF9ERUNMLgoJKFRSQU5TTEFUSU9OX1VOSVRfREVDTCk6IE5ldyBraW5kIG9mIHRyZWUuCgkqIHRyZWUuaDogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIFRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCSogTWFrZWZpbGUuaW4gKGMtZGVjbC5vKTogQWRkICQoSEFTSFRBQl9IKSB0byBkZXBlbmRlbmNpZXMuCgkqIGRvYy9pbnZva2UudGV4aTogTWFrZSBhdHRlbXB0IHRvIGRvY3VtZW50IG5ldyBmdW5jdGlvbmFsaXR5LgoKCTIwMDMtMDUtMTkgIFBlciBCb3RobmVyIDxib3RobmVyQGFwcGxlLmNvbT4KCgkqIGdjYy5jIChjb21iaW5lX2lucHV0cyk6IE5ldy4KCShwcm9jZXNzX2NvbW1hbmQpOiBTZXQgY29tYmluZV9pbnB1dHMuCgkoZG9fc3BlY18xKTogSGFuZGxlIGNvbWJpbmVfaW5wdXRzLgoJKG1haW4pOiBMaWtld2lzZS4KCjIwMDMtMDctMTAgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHR1bGlwdHJlZS5vcmc+CgoJUFIgb3B0aW1pemF0aW9uLzk3NDUKCSogbG9vcC5jIChsb29wX2l2X2FkZF9tdWx0X2VtaXRfYmVmb3JlKTogQ2FsbCBsb29wX3JlZ3NfdXBkYXRlIGJlZm9yZQoJbG9vcF9pbnNuX2VtaXRfYmVmb3JlLgoJKGxvb3BfaXZfYWRkX211bHRfc2luaywgbG9vcF9pdl9hZGRfbXVsdF9ob2lzdCk6IExpa2V3aXNlLgoKMjAwMy0wNy0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGNoYXJzZXQuYzogRml4IGNvbW1lbnQuCgkoaWNvbnZfY2xvc2UgWyFIQVZFX0lDT05WXSk6ICNkZWZpbmUgdG8gKHZvaWQpMCB0byBwcmV2ZW50IHdhcm5pbmcuCgkoRUlMU0VRKTogI2RlZmluZSB0byBFSU5WQUwgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCShjb252ZXJ0X3VzaW5nX2ljb252KTogI2lmIG91dCB3aGVuICFIQVZFX0lDT05WLgoJKGluaXRfaWNvbnZfZGVzYyk6IEhhbmRsZSAhSEFWRV9JQ09OViBoZXJlLi4uCgkoY3BwX2luaXRfaWNvbnYpOiAuLi5ub3QgaGVyZS4KCjIwMDMtMDctMTEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbW1vbi5vcHQ6IE1vcmUgLS1oZWxwIG1lc3NhZ2VzLgoJKiBvcHRzLmMgKHByaW50X2hlbHApOiBVc2UgcHV0cygpLgoJKiB0b3BsZXYuYyAoZl9vcHRpb25zKTogUmVtb3ZlIGhlbHAgdGV4dC4KCShkaXNwbGF5X2hlbHApOiBEb24ndCBkdW1wIGZfb3B0aW9ucy4KCjIwMDMtMDctMTEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBEcm9wIHJlZmVyZW5jZSB0byB1bnN1cHBvcnRlZCBhbHBoYS0qLWludGVyaXgqLgoJTW92ZSBpPzg2LSotaW50ZXJpeCogdG8gdGhlIGRvbid0LWZpeCBsaXN0LgoJKiBmaXhpbmMvZml4aW5jLmludGVyaXg6IERlbGV0ZSB3aXRoIGV4dHJlbWUgcHJlanVkaWNlLgoKMjAwMy0wNy0xMCAgRGFyYSBIYXplZ2hpICA8ZGhhemVnaGlAeWFob28uY29tPgoKCVBSIGJvb3RzdHJhcC8xMDc1OAoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCByZXF1aXJlbWVudHMgZm9yIGlhNjQtKi1ocHV4KiB0YXJnZXQuCgoyMDAzLTA3LTEwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2hwdXguaCAoVEFSR0VUX0M5OV9GVU5DVElPTlMpOiBEZWZpbmUuCgoyMDAzLTA3LTEwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwY2hhcnNldC5jIChvbmVfdXRmOF90b19jcHBjaGFyLCBvbmVfY3BwY2hhcl90b191dGY4LAoJb25lX3V0ZjhfdG9fdXRmMzIsIG9uZV91dGYzMl90b191dGY4LCBvbmVfdXRmOF90b191dGYxNiwKCW9uZV91dGYxNl90b191dGY4LCBjb252ZXJzaW9uX2xvb3AsIGNvbnZlcnRfdXRmOF91dGYxNiwKCWNvbnZlcnRfdXRmOF91dGYzMiwgY29udmVydF91dGYxNl91dGY4LAljb252ZXJ0X3V0ZjMyX3V0ZjgsCgljb252ZXJ0X25vX2NvbnZlcnNpb24sIGNvbnZlcnRfdXNpbmdfaWNvbnYpOiBOZXcgZnVuY3Rpb25zLgoJKEFQUExZX0NPTlZFUlNJT04pOiBOZXcgbWFjcm8uCgkoc3RydWN0IGNvbnZlcnNpb24sIGNvbnZlcnNpb25fdGFiKTogTmV3IGRhdGEgc3RydWN0dXJlLgoJKGluaXRfaWNvbnZfZGVzYyk6IENoZWNrIGNvbnZlcnNpb25fdGFiIGZvciBhIGN1c3RvbSBjb252ZXJzaW9uCglwcmltaXRpdmUgYmVmb3JlIHRyeWluZyB0byB1c2UgaWNvbnYuCgkoY29udmVydF9jc2V0KTogRGVsZXRlZC4KCShjcHBfaW5pdF9pY29udik6IFVzZSBVVEYtIHRlcm1pbm9sb2d5LCBub3QgVUNTLS4KCShfY3BwX2Rlc3Ryb3lfaWNvbnYpOiBVcGRhdGUgdG8gbWF0Y2guCgkoX2NwcF92YWxpZF91Y24pOiBXZSBkb24ndCBuZWVkIGljb252IHRvIGltcGxlbWVudCBVQ05zLgoJKGNvbnZlcnRfdWNuKTogVXNlIG9uZV9jcHBjaGFyX3RvX3V0ZjggYW5kIEFQUExZX0NPTlZFUlNJT04uCgkoY29udmVydF9lc2NhcGUsIGNwcF9pbnRlcnByZXRfc3RyaW5nKTogVXNlIEFQUExZX0NPTlZFUlNJT04uCgkoX2NwcF9pbnRlcnByZXRfc3RyaW5nX25vdHJhbnNsYXRlKTogTmV3IGZ1bmN0aW9uLCBtb3ZlZCBoZXJlCglmcm9tIGNwcGxpYi5jLgoKCSogY3BwaGFzaC5oIChjb252ZXJ0X2YsIHN0cnVjdCBjc2V0X2NvbnZlcnRlcik6IE5ldyB0eXBlcy4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IG5hcnJvd19jc2V0X2Rlc2MgYW5kIHdpZGVfY3NldF9kZXNjCglhcmUgbm93IHN0cnVjdCBjc2V0X2NvbnZlcnRlciwgbm90IGJhcmUgaWNvbnZfdC4KCVVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBsaWIuYyAoaW50ZXJwcmV0X3N0cmluZ19ub3RyYW5zbGF0ZSk6IE1vdmVkIHRvIGNwcGNoYXJzZXQuYzsKCWFsbCBjYWxsZXJzIGNoYW5nZWQuCgoyMDAzLTA3LTEwICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChvcHRpb25zLmgpOiBEZXBlbmQgb24gTWFrZWZpbGUuICBBZGQgbW92ZS1pZi1jaGFuZ2UKCXRvIG9wdHMuc2ggY29tbWFuZCBsaW5lLgoJKiBvcHRzLnNoOiBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgd2l0aCBhIG1vdmUtaWYtY2hhbmdlIGF0IHRoZSBlbmQuCgoyMDAzLTA3LTEwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoJICAgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbWJpbmUuYyAoZ2VuX2JpbmFyeSk6IEhhbmRsZSB0aGUgQ0xPQkJFUiBydHggYW5kCglkb24ndCBidWlsZCBhIGJpbmFyeSBvcGVyYXRpb24gd2l0aCBpdC4KCjIwMDMtMDctMTAgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdjc2UuYyAobG9hZF9raWxsc19zdG9yZSwgZmluZF9sb2Fkcywgc3RvcmVfa2lsbGVkX2luX2luc24sCglzdG9yZV9raWxsZWRfYWZ0ZXIsIHN0b3JlX2tpbGxlZF9iZWZvcmUpOiBLZWVwIHRyYWNrIG9mIHRoZSBjb3JyZWN0CglkZXBlbmRlbmN5IGZ1bmN0aW9uIHRvIHVzZS4KCjIwMDMtMDctMTAgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCSogdG9wbGV2LmMgKGRvX2NvbXBpbGUpOiBEb24ndCB0cnkgdG8gb3BlbiBkdW1wIGZpbGVzIGJlZm9yZQoJbGFuZ19kZXBlbmRlbnRfaW5pdCBpbml0aWFsaXplcyBkdW1wX2Jhc2VfbmFtZS4KCjIwMDMtMDctMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pbml0X2l3bW14dF9idWlsdGlucywgYXJtX2V4cGFuZF9idWlsdGluKToKCVVzZSBBUlJBWV9TSVpFLgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX21lZGlhX2luaXRfYnVpbHRpbnMpOiBMaWtld2lzZS4KCjIwMDMtMDctMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzEwMDMyCgkqIGRvYy9pbnZva2UudGV4aSAoQysrIERpYWxlY3QgT3B0aW9ucyk6IENoYW5nZSBkb2N1bWVudGF0aW9uIG9mCgktZnBlcm1pc3NpdmUuCgoyMDAzLTA3LTEwICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHRtLnRleGkgKFJFVFVSTl9BRERSX09GRlNFVCk6IERvY3VtZW50LgoKMjAwMy0wNy0xMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjb3YtaW8uaDogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkoR0NPVl9VTlNJR05FRDJTVFJJTkcpOiBOZXcuCgkoR0NPVl9UQUdfRlVOQ1RJT05fTEVOR1RILCBHQ09WX1RBR19CTE9DS1NfTEVOR1RILAoJR0NPVl9UQUdfQVJDU19MRU5HVEgsIEdDT1ZfVEFHX0NPVU5URVJfTEVOR1RILAoJR0NPVl9UQUdfU1VNTUFSWV9MRU5HVEgpOiBBZGp1c3QuCgkoR0NPVl9UQUdfQkxPQ0tTX05VTSwgR0NPVl9UQUdfQVJDU19OVU0sCglHQ09WX1RBR19DT1VOVEVSX05VTSk6IE5ldy4KCShHQ09WX0JMT0NLX1NJWkUpOiBOdW1iZXIgb2Ygd29yZHMuCgkoZ2Nvdl92YXIpOiBBZGp1c3QgYnVmZmVyIHR5cGUuCgkqIGdjb3YtaW8uYyAoZ2Nvdl93cml0ZV9ieXRlcywgZ2Nvdl9yZWFkX2J5dGVzKTogUmVuYW1lIHRvIC4uLgoJKGdjb3Zfd3JpdGVfd29yZHMsIGdjb3ZfcmVhZF93b3Jkcyk6IC4uLiBoZXJlLiBUYWtlIGEgNC1ieXRlIHdvcmQKCWNvdW50LCBub3QgYnl0ZSBjb3VudC4KCShnY292X29wZW4pOiBBZGp1c3Qgb3ZlcnJlYWQgaW5pdC4KCShnY292X2FsbG9jYXRlLCBnY292X3dyaXRlX3Vuc2lnbmVkLCBnY292X3dyaXRlX2NvdW50ZXIsCglnY292X3dyaXRlX3N0cmluZywgZ2Nvdl93cml0ZV90YWcsIGdjb3Zfd3JpdGVfbGVuZ3RoLAoJZ2Nvdl93cml0ZV90YWdfbGVuZ3RoKTogQWRqdXN0LgoJKGdjb3ZfcmVhZF91bnNpZ25lZCwgZ2Nvdl9yZWFkX2NvdW50ZXIsIGdjb3ZfcmVhZF9zdHJpbmcpOiBBZGp1c3QuCgkoZ2Nvdl9zeW5jLCBnY292X3NlZWspOiBBZGp1c3QuCgkqIGdjb3YtZHVtcC5jIChwcmludF91c2FnZSk6IFNob3cgZ2NjIHZlcnNpb24gb25seS4KCShkdW1wX2ZpbGUpOiBVc2UgR0NPVl9VTlNJR05FRDJTVFJJTkcuCgkodGFnX2Jsb2NrcywgdGFnX2FyY3MsIHRhZ19jb3VudGVycyk6IFVzZSBHQ09WX1RBR18qX05VTSBtYWNyb3MuCgkqIGdjb3YuYyAocHJpbnRfdmVyc2lvbik6IFNob3cgZ2NjIHZlcnNpb24gb25seS4KCShyZWFkX2dyYXBoX2ZpbGUpOiBVc2UgR0NPVl9VTlNJR05FRDJTVFJJTkcuIFVzZQoJR0NPVl9UQUdfKl9OVU0gbWFjcm9zLgoJKHJlYWRfY291bnRfZmlsZSk6IFVzZSBHQ09WX1VOU0lHTkVEMlNUUklORy4gVXNlCglHQ09WX1RBR19DT1VOVEVSX0xFTkdUSC4KCSogY292ZXJhZ2UuYyAocmVhZF9jb3VudHNfZmlsZSk6IFVzZSBHQ09WX1VOU0lHTkVEMlNUUklORy4KCVVzZSBHQ09WX1RBR19DT1VOVEVSX05VTS4KCSogbGliZ2Nvdi5jIChnY292X3ZlcnNpb24pOiBVc2UgR0NPVl9VTlNJR05FRDJTVFJJTkcuCgkoX19nY292X21lcmdlX3NpbmdsZSwgX19nY292X21lcmdlX2RlbHRhKTogVXNlIEdDT1ZfQ0hFQ0suCgoyMDAzLTA3LTEwICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZ2Nvdi1kdW1wLmMgKGR1bXBfZmlsZSk6IEZpeCBtaXNzaW5nIGFkZHJlc3Mgb3BlcmF0b3IuCgoyMDAzLTA3LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCVBSIGMvMTE0NDkKCSogZm9sZC1jb25zdC5jIChzaWduX2JpdF9wKTogUmV0dXJuIEVYUCBpZiBWQUwgaXMgdGhlIHNpZ24gYml0CglvZiBIT1NUX1dJREVfSU5ULgoJKGZvbGRfc2luZ2xlX2JpdF90ZXN0KTogSWYgc2lnbl9iaXRfcCgpIGZhaWxzLCBhc3N1bWUgdGhhdCB0aGUKCWJpdCBiZWluZyB0ZXN0ZWQgaXMgbm90IGEgc2lnbiBiaXQuCgoyMDAzLTA3LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IE5ldy4KCjIwMDMtMDctMTAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCTIwMDEtMTItMTMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9saW51eC5oIChMSU5LX1NQRUMpOiBSZW5hbWUgdGhlIGR5bmFtaWMgbGlua2VyCglmcm9tIGxkLWxpbnV4LnNvLjIgdG8gbGQuc28uMS4KCTIwMDEtMTEtMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9saW51eC5oIChMSU5LX1NQRUMpOiAtbHB0aHJlYWQsIG5vdCAtbHRocmVhZC4KCSogY29uZmlnL21uMTAzMDAvbGludXguaCAoTElOS19TUEVDKTogRG9uJ3QgaGFuZGxlIC1XbCwtcnBhdGgKCW5vciAtV2wsLXJwYXRoLWxpbmsuCgkoTElCX1NQRUMpOiBBZGQgLXJwYXRoLWxpbmsgaWYgIXN0YXRpYy4KCTIwMDEtMDgtMjIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfcHJvdGVjdF9sYWJlbCk6IE5ldwoJdmFyaWFibGUuCgkqIGNvbmZpZy9tbjEwMzAwL2xpbnV4LmggKFBSSU5UX09QRVJBTkQsCglQUklOVF9PUEVSQU5EX0FERFJFU1MpOiBTZXQgaXQgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvbi4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogT3V0cHV0IGArJyBiZWZvcmUgc3ltYm9sIG5hbWUgaWYKCW1uMTAzMDBfcHJvdGVjdF9sYWJlbCBpcyBzZXQuCgkqIGNvbmZpZy9tbjEwMzAwL2xpbnV4LmggKExJTktfU1BFQyk6IFJlY29nbml6ZSAtV2wsLXJwYXRoIGFuZAoJLVdsLC1ycGF0aC1saW5rLgoJKExJQl9TUEVDLCBTVEFSVEZJTEVfU1BFQyk6IERlZmluZS4KCTIwMDEtMDUtMTEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC90LWxpbnV4IChkcC1iaXQuYywgZnAtYml0LmMpOiBEb24ndCBkZWZpbmUKCUZMT0FUX0JJVF9PUkRFUl9NSVNNQVRDSC4KCTIwMDEtMDUtMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcuZ2NjIChhbTMzXzIuMC0qLWxpbnV4Kik6IEFkZGVkLgoJKiBjb25maWcvbW4xMDMwMC9saW51eC5oOiBOZXcuCgkqIGNvbmZpZy9tbjEwMzAwL3QtbGludXg6IE5ldy4KCjIwMDMtMDctMTAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGZvbGQtY29uc3QuYzogUHJvcGVybHkgd3JhcCBwcm90b3R5cGVzLgoKMjAwMy0wNy0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJMjAwMy0wNi0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF91bnNwZWNfaW50X2xhYmVsX2NvdW50ZXIpOgoJTW92ZWQgZnJvbS4uLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChHT1RhZGRyMnBpY3JlZyk6IC4uLiBoZXJlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmg6IEdUWS1kZWNsYXJlIGl0LgoJMjAwMy0wNi0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRml4Cglwcm90b3R5cGUuICBVc2UgaW5jb21pbmcgUlRMIGFyZ3VtZW50LgoJMjAwMi0xMi0xMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKGludF9sYWJlbCk6IE1vdmUgQyBzdGF0ZW1lbnRzLi4uCgkoR09UYWRkcjJwaWNyZWcpOiAuLi4gaGVyZS4KCTIwMDItMDgtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEVOQ09ERV9TRUNUSU9OX0lORk8pOiBNb3ZlLi4uCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKToKCS4uLiBoZXJlLiAgTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9FTkNPREVfU0VDVElPTl9JTkZPKTogRGVmaW5lIHRvIGl0LgoJMjAwMS0xMS0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogRml4IHR5cG8gaW4KCXBhdHRlcm4gbmFtZS4KCShtbjEwMzAwX2xvYWRQQyk6IERlZmluZSBhcyBpbnNuIHNwbGl0dGFibGUgYWZ0ZXIgcmVsb2FkLgoJMjAwMS0wNS0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9zaC9tbjEwMzAwLmggKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IExldCB0aGVtCgliZSBkZWZpbmVkIGluIC5yb2RhdGEgZXZlbiBpbiBQSUMsIG5vdyB0aGF0IHRoZSBhc3NlbWJsZXIKCXN1cHBvcnRzIHRoYXQuCgkyMDAxLTA1LTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChHT1RfU1lNQk9MX05BTUUpOiBEb24ndCBsZXQgdGhlCglzeW1ib2wgdGFrZSBhbiB1bmRlcnNjb3JlIHByZWZpeC4KCTIwMDEtMDQtMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChsZWdpdGltYXRlX3BpY19vcGVyYW5kX3AsCglsZWdpdGltaXplX3BpY19hZGRyZXNzKTogRGVjbGFyZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IE1hcmsKCXRoZSBQSUMgcmVnaXN0ZXIgYXMgZml4ZWQuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IE1hdGNoIFVOU1BFQ19QTFQgYW5kIFVOU1BFQ19QSUMgZm9yICdTJy4KCShHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBSZXF1aXJlIGxlZ2l0aW1hdGVfcGljX29wZXJhbmQgZm9yCglQSUMuCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QKTogRGVmaW5lLgoJKFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNKTogRGVmaW5lLgoJKEdPVF9TWU1CT0xfTkFNRSk6IERlZmluZS4KCShTWU1CT0xJQ19DT05TVF9QKTogRGVmaW5lLgoJKEVOQ09ERV9TRUNUSU9OX0lORk8pOiBVc2UgU1lNQk9MX1JFRl9GTEFHIHRvIG1hcmsgbG9jYWwKCXN5bWJvbHMuCgkoTU4xMDMwMF9HTE9CQUxfUCk6IFRlc3QgaXQuCgkoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBIYW5kbGUgUElDLXJlbGF0ZWQgdW5zcGVjcy4KCShKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBFbmFibGUgZm9yIFBJQy4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlIHVuc3BlYy4KCShleHBhbmRfcHJvbG9ndWUpOiBTZXQgUElDIHJlZ2lzdGVyLgoJKGNhbGxfYWRkcmVzc19vcGVyYW5kKTogRG9uJ3QgbWF0Y2ggU1lNQk9MX1JFRnMgaW4gUElDLgoJKGxlZ2l0aW1pemVfYWRkcmVzcyk6IENhbGwgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcy4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTmV3IGZuLgoJKGxlZ2l0aW1hdGVfcGljX29wZXJhbmRfcCk6IE5ldyBmbi4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoUElDX1JFRywgU1BfUkVHKTogTmV3IGNvbnN0YW50cy4KCShVTlNQRUNfSU5UX0xBQkVMLCBVTlNQRUNfUElDLCBVTlNQRUNfR09ULCBVTlNQRUNfR09UT0ZGLAoJVU5TUEVDX1BMVCk6IE5ldyBjb25zdGFudHMuCgkocG9wX3BpY19yZWcpOiBOZXcgaW5zbi4KCShtb3ZzaSk6IEFkanVzdCBub24tUElDIGFkZHJlc3Nlcy4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IFJlc3RvcmUgdGhlIFBJQyByZWdpc3Rlci4KCShjYXNlc2kpOiBOZXcgaW5zbi4KCShjYWxsKTogQWRqdXN0IG5vbi1QSUMgYWRkcmVzc2VzLgoJKGludF9sYWJlbCwgR09UYWRkcjJwaWNyZWcpOiBOZXcgZXhwYW5kcy4KCShhbTMzX2xvYWRQQyk6IE5ldyBpbnNuLgoJKG1uMTAzMDBfbG9hZFBDKTogTmV3IGV4cGFuZC4KCShjYWxsX25leHRfaW5zbik6IE5ldyBpbnNuLgoJKGFkZF9HT1RfdG9fcGljX3JlZyk6IE5ldyBleHBhbmQuCgkoc3ltR09UMnJlZywgc3ltR09UMnJlZ19pKTogTmV3IGV4cGFuZHMuCgkoc3ltR09UT0ZGMnJlZywgc3ltR09UT0ZGMnJlZ19pKTogTmV3IGV4cGFuZHMuCgkoc3ltMlBJQywgc3ltMlBMVCk6IE5ldyBleHBhbmRzLgoKMjAwMy0wNy0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFBSRURJQ0FURV9DT0RFUyk6IERlZmluZS4KCTIwMDEtMDUtMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChzcXJ0c2YyKTogZmxhZ19mYXN0X21hdGggd2FzIHJlbmFtZWQKCXRvIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucy4KCTIwMDEtMDQtMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKGV4cGFuZF9wcm9sb2d1ZSk6IE1hcmsKCUZQLXJlZ2lzdGVyLXNhdmluZyBpbnNucyBhcyBmcmFtZS1yZWxhdGVkLgoJMjAwMS0wMi0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYwoJKG1uMTAzMDBfZ2V0X2xpdmVfY2FsbGVlX3NhdmVkX3JlZ3MpOiBEb24ndCBzZWFyY2ggcGFzdAoJTEFTVF9FWFRFTkRFRF9SRUdOVU0uCgkobW4xMDMwMF9nZW5fbXVsdGlwbGVfc3RvcmUsIHN0b3JlX211bHRpcGxlX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kOiBSZW1vdmUgZXhjZXNzaXZlIGxpbmUgYnJlYWtzIGZyb20KCWBAJyBvdXRwdXQgcGF0dGVybnMgdGhhdCB3ZXJlIGFjY291bnRlZCBhcyBhZGRpdGlvbmFsCglhbHRlcm5hdGl2ZXMuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYzoKCVJlLWludHJvZHVjZSBjaGFuZ2VzIGFjY2lkZW50YWxseSByZW1vdmVkIGluIFJpY2hhcmQgU2FuZGlmb3JkJ3MKCTIwMDAtMTItMDUncyBwYXRjaC4KCSogY29uZmlnL21uMTAzMDAvdC1tbjEwMzAwIChNVUxUSUxJQl9PUFRJT05TLCBNVUxUSUxJQl9ESVJOQU1FUyk6CglSZS1pbnN0YXRlIGFtMzMtMiBsb3N0IGluIG1lcmdlIGZyb20gbmV0IEdDQy4KCTIwMDAtMDgtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBBZGRlZAoJZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgoJMjAwMC0wOC0wNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdmRmKTogUmV2ZXJ0IHNvbWUgYW0zMy1zcGVjaWZpYwoJcGVzc2ltaXphdGlvbnMgdGhhdCBoYWQgZ29uZSBpbiBvbiAyMDAwLTA1LTA4LgoJMjAwMC0wNi0yOCAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0BjeWdudXMuY28udWs+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHX0NMQVNTX0NPTlRFTlRTKTogRml4IHR5cG8uCgkyMDAwLTA2LTIyICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQGN5Z251cy5jby51az4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92cWkpOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgZm9yCglvcGVyYW5kIDAuCgkqIChtb3ZoaSk6IExpa2V3aXNlLgoJKiAobW92c2kpOiBMaWtld2lzZS4KCSogKG1vdnNmKTogTGlrZXdpc2UuCgkqIChtb3ZkaSk6IExpa2V3aXNlLgoJKiAobW92ZGYpOiBMaWtld2lzZS4KCTIwMDAtMDUtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKGZwX3JlZ3NfdG9fc2F2ZSk6IE5ldyBmdW5jdGlvbi4KCShjYW5fdXNlX3JldHVybl9pbnNuLCBpbml0aWFsX29mZnNldCk6IEFkZCBmcF9yZWdzX3RvX3NhdmUuCgkoZXhwYW5kX3Byb2xvZ3VlLCBleHBhbmRfZXBpbG9ndWUpOiBTYXZlIGFuZCByZXN0b3JlIEZQIHJlZ3MuCgkyMDAwLTA1LTIwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92ZGksIG1vdmRmKTogNjQtYml0IGNsZWFuLXVwLgoJMjAwMC0wNS0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKGFic3NmMiwgbmVnc2YyLCByc3FydHNmMiwgYWRkc2YzLAoJc3Vic2YzLCBtdWxzZjMsIGRpdnNmMywgZm1hZGRzZjQsIGZtc3Vic2Y0LCBmbm1hZGRzZjQsIGZubXN1YnNmNCk6CglEbyBub3QgY2xvYmJlciBjYzAuCgkyMDAwLTA1LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoYWJzc2YyLCBuZWdzZjIsIHJzcXJ0c2YyKToKCURpc2NvdXJhZ2UgdGhlIHR3by1hcmd1bWVudCwgbG9uZ2VyIG9wY29kZXMuCgkoYWRkc2YzLCBzdWJzZjMsIG11bHNmMywgZGl2c2YzKTogTGlrZXdpc2UgZm9yIHRocmVlLWFyZ3VtZW50CglvbmVzLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKHN0cnVjdCBtbjEwMzAwX2NjX3N0YXR1c19tZGVwKTogTmV3LgoJKENDX1NUQVRVU19NREVQLCBDQ19TVEFUVVNfTURFUF9JTklUKTogRGVmaW5lLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChjbXBzZik6IE5ldyBwYXR0ZXJuLgoJKGJyYW5jaCk6IFRlc3QgbWRlcC5mcENDIGFuZCBvdXRwdXQgZmJDQy4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChwcmludF9vcGVyYW5kKTogT3V0cHV0IGNvbmRpdGlvbnMuCgkobm90aWNlX2NjX3VwZGF0ZSk6IFJlY29nbml6ZSBmY21wIGFuZCBzZXQgbWRlcC5mcENDLgoJMjAwMC0wNS0xMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdnNmLCBtb3ZkZiwgYWRkc2YzLCBzdWJzZjMsCgltdWxzZjMsIGRpdnNmMyk6IFVzZSB0aGUgYEYnIGNvbnN0cmFpbnQgZm9yIEZQIHZhbHVlcy4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChjb25zdF8xZl9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChjb25zdF8xZl9vcGVyYW5kKTogRGVjbGFyZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoc3FydHNmMik6IE5ldyBleHBhbmQuCgkocnNxcnRzZjIpOiBOZXcgaW5zbi4KCTIwMDAtMDUtMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZkZik6IE9vcHMsIEkgbWlzc2VkIGl0IGluIG15CglwcmV2aW91cyBjaGVjay1pbi4KCTIwMDAtMDUtMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChhYnNzZjIsIG5lZ2RmMik6IE9uCglUQVJHRVRfQU0zM18yLCBleHBhbmQgdG8uLi4KCShhYnNzZjJfYW0zM18yLCBuZWdkZjJfYW0zM18yKTogTmV3IGluc25zLgoJKGFkZHNmMywgc3Vic2YzLCBtdWxzZjMsIGRpdnNmMyk6IExpa2V3aXNlLgoJKGZtYWRkc2Y0LCBmbXN1YnNmNCwgZm5tYWRkc2Y0LCBmbm1zdWJzZjQpOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92cWksIG1vdmhpLCBtb3ZzaSwgbW92c2YsCgltb3ZkaSwgbW92ZGYpOiBBZGRlZCBGUCByZWdzLgoJKiBpbnZva2UudGV4aSAoLW1hbTMzLTIsIC1tbm8tYW0zMy0yKTogRG9jdW1lbnQuCgkyMDAwLTA0LTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChGSVJTVF9GUF9SRUdOVU0sIExBU1RfRlBfUkVHTlVNKToKCU5ldyBtYWNyb3MuCgkoUkVHTk9fQU0zM18yX0ZQX1ApOiBSZW5hbWVkIHRvLi4uCgkoUkVHTk9fRlBfUCk6IFJlZGVmaW5lIGluIHRlcm1zIG9mIEZJUlNUXyogYW5kIExBU1RfKi4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSwgUkVHTk9fUkVHX0NMQVNTKTogTGlrZXdpc2UuCgkyMDAwLTA0LTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChSRUdfQ0xBU1NfQ09OVEVOVFMpOiBSZW1vdmUgRlAKCXJlZ3MgZnJvbSBHRU5FUkFMX1JFR1MuCgkyMDAwLTA0LTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChSRUdOT19BTTMzXzJfRlBfUCk6IE5ldyBtYWNyby4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChtbjEwMzAwX2FkZHJlc3NfY29zdCk6IEFkZGVkIEZQX1JFR1MuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHSVNURVJfTU9WRV9DT1NUKTogQWRkZWQgRlBfUkVHUy4KCTIwMDAtMDQtMjMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKENMQVNTX0NBTk5PVF9DSEFOR0VfU0laRSk6IERlZmluZWQKCWFzIEZQX1JFR1MuCgkyMDAwLTA0LTIxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChPS19GT1JfUSk6IE5ldyBtYWNyby4KCShFWFRSQV9DT05TVFJBSU5UKTogQWRkZWQgT0tfRk9SX1EuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IEFkanVzdC4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChwcmludF9vcGVyYW5kKTogU3VwcG9ydCBgRCcgZm9yIGRvdWJsZXMuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogQWRqdXN0LgoJKEZJWEVEX1JFR0lTVEVSUywgQ0FMTF9VU0VEX1JFR0lTVEVSUywgUkVHX0FMTE9DX09SREVSKTogQWRkZWQKCUFNMzMvMi4wIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IEFkanVzdC4KCShlbnVtIHJlZ19jbGFzcywgUkVHX0NMQVNTX05BTUVTKTogQWRkZWQgRlBfUkVHUyBhbmQgRlBfQUNDX1JFR1MuCgkoUkVHX0NMQVNTX0NPTlRFTlRTLCBSRUdOT19SRUdfQ0xBU1MpOiBBZGp1c3QuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogQWRkZWQgYGYnIGFuZCBgQScuCgkoUkVHSVNURVJfTkFNRVMsIEFERElUSU9OQUxfUkVHSVNURVJfTkFNRVMpOiBBZGp1c3QuCgkqIGNvbmZpZy9tbjEwMzAwL3QtbW4xMDMwMCAoTVVMVElMSUJfT1BUSU9OUyk6IEFkZGVkIGFtMzMtMi4KCShNVUxUSUxJQl9ESVJOQU1FUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKENQUF9TUEVDKTogRGVmaW5lIGBfX0FNMzNfXz0yJyBhbmQKCWBfX0FNMzNfMl9fJyB3aGVuIGAtbWFtMzMtMicgaXMgZ2l2ZW4uCgkoVEFSR0VUX0FNMzNfMik6IERlZmluZS4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGp1c3QuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoYXNtX2ZpbGVfc3RhcnQpOiBQcmludCBgLmFtMzNfMicKCXdoZW4gYXBwcm9wcmlhdGUuCgoyMDAzLTA3LTA5ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBBZGQgbWlzc2luZyBALgoKMjAwMy0wNy0wOSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKENSVF9DQUxMX1NUQVRJQ19GVU5DVElPTik6IERlZmluZS4KCjIwMDMtMDctMDkgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCglQUi8xMTE0NAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogUmVtb3ZlIGFib3J0LgoKMjAwMy0wNy0wOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJUFIgYm9vdHN0cmFwLzExMDQzCgkqIGNvbmZpZy9hcmMvdC1hcmM6IFJlcGxhY2UgYm9ndXMgcmVmZXJlbmNlcyB0byAieC1jcnRpbml0Lm8iLAoJIngtY3J0ZmluaS5vIiB3aXRoICJjcnRpbml0Lm8iLCAiY3J0ZmluaS5vIi4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGxpbWl0c19pZm5kZWZzKTogQWRkIHNlbGVjdCB0ZXN0LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWJ1aWxkLgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAobWF0aF9leGNlcHRpb24pOiAgSW1wcm92ZSBieXBhc3MgYW5kIGNvbW1lbnQuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlYnVpbGQuCgoyMDAzLTA3LTA5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9uKTogRG9jdW1lbnQgdGhlIHZhbGdyaW5kIG9wdGlvbgoJdG8gLS1lbmFibGUtY2hlY2tpbmcuCgoyMDAzLTA3LTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBvYmpjLWxhbmcuYyAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VTVElNQVRFX05VTV9JTlNOUyk6IE5ldy4KCjIwMDMtMDctMDkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogYy1sZXguYyAoY2JfaWRlbnQpOiBDYXN0IGNzdHIudGV4dCB0byBjb25zdCBjaGFyICouCgoyMDAzLTA3LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2Nvdi1pby5oOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShHQ09WX0dSQVBIX1NVRkZJWCwgR0NPVl9HUkFQSF9NQUdJQyk6IFJlbmFtZSB0byBHQ09WX05PVEVfU1VGRklYLAoJR0NPVl9OT1RFX01BR0lDLgoJKEdDT1ZfREFUQV9TVUZGSVgsIEdDT1ZfTk9URV9TVUZGSVgpOiBVcGRhdGUuCgkoR0NPVl9EQVRBX01BR0lDLCBHQ09WX05PVEVfTUFHSUMpOiBNYWtlIG5vbi1wYWxpbmRyb21pYy4KCShzdHJ1Y3QgZ2Nvdl92YXIpOiBDaGFuZ2UgYnVmZmVyJ3MgdHlwZS4gQWRkIGVuZGlhbiBmbGFnLgoJKGdjb3Zfb3Blbik6IFJlbW92ZSBtb2RlIGluIGxpYmdjb3YuCgkoZ2Nvdl9tYWdpYyk6IFByb3RvdHlwZS4KCSogZ2Nvdi1pby5jIChmcm9tX2ZpbGUpOiBOZXcuCgkoZ2Nvdl9vcGVuKTogQ2xlYXIgZW5kaWFuIGZsYWcuCgkoZ2Nvdl9tYWdpYyk6IE5ldy4KCShnY292X3dyaXRlX2J5dGVzLCBnY292X3JlYWRfYnl0ZXMpOiBSZXR1cm4gZ2Nvdl91bnNpZ25lZF90Cglwb2ludGVycy4KCShnY292X3dyaXRlX3Vuc2lnbmVkLCBnY292X3dyaXRlX2NvdW50ZXIsIGdjb3Zfd3JpdGVfc3RyaW5nLAoJZ2Nvdl93cml0ZV90YWcsIGdjb3Zfd3JpdGVfbGVuZ3RoLCBnY292X3dyaXRlX3RhZ19sZW5ndGgpOiBVcGRhdGUuCgkoZ2Nvdl9yZWFkX3Vuc2lnbmVkLCBnY292X3JlYWRfY291bnRlciwgZ2Nvdl9yZWFkX3N0cmluZyk6IFVwZGF0ZS4KCSogZ2Nvdi1pb3YuYyAobWFpbik6IENvcnJlY3QgY2FzdC4KCSogY292ZXJhZ2UuYyAocmVhZF9jb3VudHNfZmlsZSk6IFVzZSBnY292X21hZ2ljLiBSZW1vdmUgZW5kaWFubmVzcwoJY29udmVyc2lvbi4KCShnY292X2JlZ2luX291dHB1dCk6IFVzZSBHQ09WX05PVEVfTUFHSUMuCgkoY292ZXJhZ2VfaW5pdCk6IFVzZSBHQ09WX05PVEVfU1VGRklYLgoJKiBsaWJnY292LmMgKGdjb3ZfdmVyc2lvbl9taXNtYXRjaCk6IFJlbW92ZSBlbmRpYW5uZXNzIGNvbnZlcnNpb24uCglSZW5hbWUgdG8gZ2Nvdl92ZXJzaW9uLCBhbmQgcmV0dXJuIGZsYWcuCgkoZ2Nvdl9leGl0KTogVXNlIGdjb3ZfdmVyc2lvbi4KCShfX2djb3ZfaW5pdCk6IFVzZSBnY292X3ZlcnNpb24uCgkqIE1ha2VmaWxlLmluIChjb3ZlcmFnZWV4dHMpOiBVcGRhdGUuCgkqIGdjb3YuYyAocHJpbnRfdmVyc2lvbik6IFJlbW92ZSBlbmRpYW5uZXNzIGNvbnZlcnNpb24uCgkoY3JlYXRlX2ZpbGVfbmFtZXMpOiBVc2UgR0NPVl9OT1RFX1NVRkZJWC4KCShyZWFkX2dyYXBoX2ZpbGUpOiBVc2UgZ2Nvdl9tYWdpYy4KCShyZWFkX2NvdW50X2ZpbGUpOiBMaWtld2lzZS4KCSogZ2Nvdi1kdW1wLmMgKGR1bXBfZmlsZSk6IFJlbW92ZSBlbmRpYW5uZXNzIGNvbnZlcnNpb24sIHVzZQoJZ2Nvdl9tYWdpYy4KCjIwMDMtMDctMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW4gKEJVSUxEX1BSRUZJWCwgQlVJTERfUFJFRklYXzEpOiBTZXQgaWYgZW5hYmxlCgljb3ZlcmFnZSBpcyBvbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogTWFrZWZpbGUuaW4gKEFMTF9DRkxBR1MpOiBDb3JyZWN0IGl0cyBjb21tZW50LgoKMjAwMy0wNy0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobWFrZV9yYW5nZSk6IERvIG5vdCBhY2Nlc3Mgb3BlcmFuZCAxIGZvciBhCgl6ZXJvLW9wZXJhbmQgb3BlcmF0b3IuCgoyMDAzLTA3LTA5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiB0b3BsZXYuYyAod2Fybl9kdW1teSwgV19vcHRpb25zKTogRGllLgoJKGRpc3BsYXlfaGVscCk6IERvbid0IHByaW50IFdfb3B0aW9ucy4KCSogY29tbW9uLm9wdDogQWRkIFdfb3B0aW9ucyBoZWxwIGZyb20gdG9wbGV2LmMuCgoyMDAzLTA3LTA5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBvcHRzLmMgKHdyYXBfaGVscCk6IE9ubHkgcGFzcyBpbnQgYXJndW1lbnRzIGFzIGFyZ3VtZW50cyB0bwoJcHJpbnRmJ3MgJyonIG1vZGlmaWVyLiAgQ2hhbmdlIGFyZ3VtZW50IG9mIGZ1bmN0aW9uLgoKMjAwMy0wNy0wOCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBGaXggbWlzc3BlbGxpbmcgb2YgIkBpdGVtIi4KCjIwMDMtMDctMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBSZW1vdmUgYW4gb2xkIGNvbW1lbnQgYWJvdXQKCU5PVElDRV9VUERBVEVfQ0MuCgoyMDAzLTA3LTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoY2dyYXBoX25vZGVfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShkdW1wX2NncmFwaCk6IFVzZSBpdC4KCSogY2dyYXBoLmggKGNncmFwaF9kdW1wX2ZpbGUpOiBEZWNsYXJlLgoJKGNncmFwaF9ub2RlX25hbWUpOiBEZWNsYXJlLgoJKiBjZ3JhcGh1bml0LmM6IEluY2x1ZGUgdGltZXZhci5oCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBVc2UgdGltZXZhcjsgcmVvcmdhbml6ZSBkdW1wcy4KCShjZ3JhcGhfb3B0aW1pemVfZnVuY3Rpb24pOiBVc2UgVFZfSU5URUdSQVRJT04uCgkoY2dyYXBoX21hcmtfbG9jYWxfZnVuY3Rpb25zKTogcmVvcmdhbml6ZSBkdW1wcy4KCShjZ3JhcGhfbWFya19mdW5jdGlvbnNfdG9faW5saW5lX29uY2UpOiBMaWtld2lzZS4KCShjZ3JhcGhfb3B0aW1pemUpOiBMaWtld2lzZTsgdXNlIHRpbWV2YXIuCgkqIHRpbWV2YXIuZGVmIChUVl9DR1JBUEgsIFRWX0NHUkFQSE9QVCk6IE5ldy4KCSogdG9wbGV2LmMgKGR1bXBfZmlsZV9pbmRleCk6IEFkZCBERklfY2dyYXBoLgoJKGR1bXBfZmlsZV9pbmZvKTogTGlrZXdpc2UuCgkoY2dyYXBoX2R1bXBfZmlsZSk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoZG9fY29tcGlsZSk6IE9wZW4gYW5kIGNsb3NlIGNncmFwaCBkdW1wLgoJKiBpbnZva2UudGV4aSAoLWQpOiBEb2N1bWVudCBuZXcgZmxhZzsgcmVudW1iZXIuCgoyMDAzLTA3LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBjLzExMzcwCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogRG9uJ3QgYm90aGVyIHBvcHBpbmcgdGhlIGFyZ3VtZW50cyBvZmYgb2YKCXRoZSBzdGFjayBhZnRlciBhIG5vcmV0dXJuIGZ1bmN0aW9uIGNhbGw7ICBUaGUgYWRqdXN0bWVudCBpcyBkZWFkLgoJKGV4cGFuZF9jYWxsKTogTGlrZXdpc2UuCgoyMDAzLTA3LTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGV4cHIuYyAoTU9WRV9NQVhfUElFQ0VTKTogTW92ZSBmcm9tIGhlcmUuLi4KCSogZGVmYXVsdHMuaCAoTU9WRV9NQVhfUElFQ0VTKTogLi4uIHRvIGhlcmUuCgoyMDAzLTA3LTA4ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoc3RhZ2UxLXN0YXJ0KTogSGFuZGxlIGFuIGVtcHR5IFNVQkRJUlMuCgoyMDAzLTA3LTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnZW5hdHRyLmMgKGludGVybmFsX2RmYV9pbnNuX2NvZGUpOiBEb24ndCBwcm90b3R5cGUuCgkqIGdlbmF0dHJ0YWIuYyAoYXR0cl9kZXNjKTogQWRkIGBzdGF0aWNfcCcgZmllbGQuCgkoZXhwYW5kX3VuaXRzKTogTWFrZSBibG9ja2FnZSByYW5nZSBhbmQgcmVhZHkgY29zdCBmdW5jdGlvbnMKCXN0YXRpYy4KCSh3cml0ZV9hdHRyX2dldCk6IERvbid0IGFkZCBleHRlcm4gcHJvdG90eXBlcyBpbiBDIGZpbGUuICBNYXJrCglzdGF0aWMgZnVuY3Rpb25zIGFzIGFwcHJvcHJpYXRlLgoJKGZpbmRfYXR0ciwgbWFrZV9pbnRlcm5hbF9hdHRyKTogSW5pdGlhbGl6ZSBzdGF0aWNfcC4KCSogZ2VuYXR0cnRhYi5oIChBVFRSX1NUQVRJQyk6IE5ldyBtYWNyby4KCSogZ2VuYXV0b21hdGEuYyAob3V0cHV0X2ludGVybmFsX3Jlc2V0X2Z1bmMpOiBNYXJrIG91dHB1dCBmdW5jdGlvbgoJYXMgaW5saW5lLgoJKG1ha2VfaW50ZXJuYWxfZGZhX2luc25fY29kZV9hdHRyKTogTWFyayBvdXRwdXQgZnVuY3Rpb24gYXMgc3RhdGljLgoKMjAwMy0wNy0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2VuYXR0cnRhYi5oOiBBZGQgbmV3IG1hY3JvcyBmb3IgYXR0ciBgc3BlY2lhbCcgZmxhZ3MuCgkqIGdlbmF0dHJ0YWIuYyAoYXR0cl9kZXNjKTogUmVvcmRlci9yZXNpemUgZmllbGRzIGJldHRlci4KCVVzZSBhdHRyIGBzcGVjaWFsJyBtYWNyb3MgaW4gYWxsIGNhbGxzIHRvIG1ha2VfaW50ZXJuYWxfYXR0ci4KCSogZ2VuYXV0b21hdGEuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjLWNvbW1vbi5jIChjX2VzdGltYXRlX251bV9pbnNuc18xKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjX2VzdGltYXRlX251bV9pbnNucyk6IE5ldyBnbG9iYWwgZnVuY3Rpb24uCgkqIGMtY29tbW9uLmggKERFQ0xfTlVNX1NUTVRTKTogUmVuYW1lIHRvLi4uCgkoREVDTF9FU1RJTUFURURfSU5TTlMpOiAuLi4gdGhpcy4KCShjX2VzdGltYXRlX251bV9pbnNucyk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBVc2UgREVDTF9FU1RJTUFURURfSU5TTlMuCgkqIGMtbGFuZy5jIChMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfRVNUSU1BVEVfTlVNX0lOU05TKTogTmV3LgoJKiBjLXNlbWFudGljcy5jIChhZGRfc3RtdCk6IERvIG5vdCBhY2NvdW50IHN0YXRlbWVudHMuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VTVElNQVRFX05VTV9JTlNOUyk6CglOZXcuCgkqIGxhbmdob29rcy5oIChsYW5nX2hvb2tzX2Zvcl90cmVlX2lubGluaW5nKTogQWRkCgllc3RpbWF0ZV9udW1faW5zbnMKCSogcGFyYW1zLmRlZiAobWF4LWlubGluZS1pbnNucy1hdXRvLCBtYXgtaW5saW5lLWluc25zLWF1dG8pOiBzZXQKCXRvIDEwMC4KCShtYXgtaW5saW5lLWluc25zKTogc2V0IHRvIDMwMC4KCShtaW4taW5saW5lLWluc25zKTogc2V0IHRvIDEwLgoJKiB0cmVlLWlubGluZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBSZW5hbWUgaW5saW5lZF9zdG10cyB0bwoJaW5saW5lZC1pbnNucy4KCShJTlNOU19QRVJfU1RNVCk6IEtpbGwuCgkoaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBDb21wdXRlIGFuZCBzdG9yZSBib2R5IHNpemUuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogTGlrZXdpc2UuCgkob3B0aW1pemVfaW5saW5lX2NhbGxzKTogTGlrZXdpc2UuCgoyMDAzLTA3LTA4ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkB0dWxpcHRyZWUub3JnPgoKCVBSIHRhcmdldC8xMDAyMQoJKiBlbWl0LXJ0bC5jIChzZXRfbWVtX2F0dHJpYnV0ZV9taW51c19iaXRwb3MpOiBXaGVuIGhhbmRsZSBBUlJBWV9SRUYsCglsb29wIG92ZXIgbmV3IHZhcmlhYmxlIHQyIGluc3RlYWQgb2YgdC4KCjIwMDMtMDctMDggIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYm9vdHN0cmFwLzExNDU1CgkqIGNvbmZpZy9pMzg2L3dpbm50LmM6IFJlcGxhY2UgdXNlIG9mIGVycm9yKCksIHdhcm5pbmcoKSB3aXRoCgllcnJvcl93aXRoX2RlY2woKSwgd2FybmluZ193aXRoX2RlY2woKSwgIHRocm91Z2hvdXQuCgoyMDAzLTA3LTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBvcHRzLmMgKHdyYXBfaGVscCk6IFVzZSB1bnNpZ25lZCBpbnQsIG5vdCBzaXplX3QuCgoyMDAzLTA3LTA4ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoSEFWRV9BU19EV0FSRjJfREVCVUdfTElORSk6IERvbid0IGRlZmluZQoJYXMgLmZpbGUvLmxvYyBkaXJlY3RpdmVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBsaW5rZXIgcmVsYXhhdGlvbi4KCjIwMDMtMDctMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogUmVtb3ZlIGdudS1yZWdleC5bY2hdIGZyb20gZGVwZW5kZW5jaWVzLgoJKiBmaXhpbmMvTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBnbnUtcmVnZXguW29jaF0uCgkqIGZpeGluYy9maXhmaXhlcy5jLCBmaXhpbmMvZml4aW5jbC5jLCBmaXhpbmMvZml4bGliLmMKCSogZml4aW5jL2ZpeHRlc3RzLmM6IFVzZSB4cmVnZXhlYyBub3QgcmVnZXhlYywgeHJlZ2NvbXAgbm90IHJlZ2NvbXAuCgkqIGZpeGluYy9maXhsaWIuaDogSW5jbHVkZSB4cmVnZXguaCBub3QgZ251LXJlZ2V4LmguCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGhwdXgxMF9jcHBfcG93X2lubGluZSwgaHB1eDExX2NwcF9wb3dfaW5saW5lKToKCUVzY2FwZSB7IGFuZCB9IGNoYXJhY3RlcnMgd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHJhbmdlIGV4cHJlc3Npb25zLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvZ251LXJlZ2V4LmMsIGZpeGluYy9nbnUtcmVnZXguaDogRGVsZXRlIGZpbGUuCgoyMDAzLTA3LTA4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJUFIgYy8xNjg3CgkqIHRyZWUtaW5saW5lLmMgKGZpbmRfYWxsb2NhX2NhbGwpOiBVc2UKCXdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMsIGluc3RlYWQgb2Ygd2Fsa190cmVlLgoJKGZpbmRfYnVpbHRpbl9sb25nam1wX2NhbGwpOiBMaWtld2lzZS4KCSogYy1vYmpjLWNvbW1vbi5jIChjX2Nhbm5vdF9pbmxpbmVfZm4pOiBMaWtld2lzZS4KCSogYy1zZW1hbnRpY3MuYyAoZmluZF9yZWFjaGFibGVfbGFiZWwpOiBMaWtld2lzZS4KCjIwMDMtMDctMDggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMvMTE0MjAKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NoZWNrX21vdmFicyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9jaGVja19tb3ZhYnMpOiBOZXcgcHJvdG90eXBlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtb3ZhYnNbc2hxZF1pXzFfcmV4NjQpOiBLaWxsIGJyb2tlbiBhbHRlcm5hdGl2ZS4KCShtb3ZhYnNbc2hxZF1pX1sxMl1fcmV4NjQpOiBBZGQgaXg4Nl9jaGVja19tb3ZhYnMgY2hlY2sgdG8gY29uZGl0aW9ucy4KCjIwMDMtMDctMDggIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1wbyk6IENvcGUgd2l0aCBlbXB0eSBDQVRBTE9HUy4KCjIwMDMtMDctMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL2VsZjY0LmggKFRBUkdFVF9BU01fVU5JUVVFX1NFQ1RJT04pOiBEZWxldGUuCgkoRVhUUkFfU0VDVElPTlMsIEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogRGVsZXRlLgoJKFNFQ1RJT05fRlVOQ1RJT05fVEVNUExBVEUpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL2VsZi5oOiBBcyBmb3IgZWxmNjQuaC4KCShBU01fT1VUUFVUX0FMSUdORURfQlNTKTogVXNlIG5hbWVkX3NlY3Rpb24gcmF0aGVyIHRoYW4gc2Jzc19zZWN0aW9uLgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBBcyBmb3IgZWxmLmgKCSogY29uZmlnL21pcHMvaXJpczZnbGQuaCAoVEFSR0VUX0FTTV9VTklRVUVfU0VDVElPTik6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvaXJpczYuaCAoRVhUUkFfU0VDVElPTlMpOiBEZWxldGUuCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBSZW1vdmUgc2RhdGFfc2VjdGlvbi4gIFJlbW92ZSB0aGUgaGFuZGxpbmcKCW9mIGluX3NkYXRhIGZyb20gY3VycmVudF9zZWN0aW9uX25hbWUgYW5kIGN1cnJlbnRfc2VjdGlvbl9mbGFncy4KCSogY29uZmlnL21pcHMvaXJpczZnbGQuaCAoVEFSR0VUX0FTTV9VTklRVUVfU0VDVElPTik6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChzZGF0YV9zZWN0aW9uLCBzYnNzX3NlY3Rpb24pOiBSZW1vdmUgcHJvdG90eXBlcy4KCShNQVNLX0dQX09QVCwgVEFSR0VUX0dQX09QVCk6IERlbGV0ZS4KCShNQVNLX05PX0ZVU0VEX01BREQpOiBVc2UgTUFTS19HUF9PUFQncyBvbGQgdmFsdWUuCgkoVEFSR0VUX1NXSVRDSEVTKTogTmV1dGVyIGdwT1BULCBncG9wdCwgbm8tZ3BPUFQgYW5kIG5vLWdwb3B0LgoJKFNNQUxMX0RBVEFfU0VDVElPTiwgRVhUUkFfU0VDVElPTlMsIEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogUmVtb3ZlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKFRBUkdFVF9JTl9TTUFMTF9EQVRBX1ApOiBPdmVycmlkZS4KCShUQVJHRVRfU0VDVElPTl9UWVBFX0ZMQUdTKTogT3ZlcnJpZGUgaWYgVEFSR0VUX0lSSVg2LgoJKG1pcHNfY2xhc3NpZnlfc3ltYm9sKTogVXNlIFNZTUJPTF9SRUZfU01BTExfUC4KCShvdmVycmlkZV9vcHRpb25zKTogUmVtb3ZlIHNldHRpbmcgb2YgTUFTS19HUE9QVC4KCShtaXBzX291dHB1dF9leHRlcm5hbCk6IFVzZSBtaXBzX2luX3NtYWxsX2RhdGFfcCB0byBjaGVjayB3aGV0aGVyIGEKCXN5bWJvbCBuZWVkcyBhbiAuZXh0ZXJuIGRpcmVjdGl2ZS4gIERvbid0IGVtaXQgc3VjaCBkaXJlY3RpdmVzIGZvcgoJVEFSR0VUX0VYUExJQ0lUX1JFTE9DUy4KCShtaXBzX2RlY2xhcmVfb2JqZWN0KTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKG1pcHNfc2VsZWN0X3J0eF9zZWN0aW9uKTogQ2FsbCBuYW1lZF9zZWN0aW9uIHJhdGhlciB0aGFuCglTTUFMTF9EQVRBX1NFQ1RJT04uCgkobWlwc19zZWxlY3Rfc2VjdGlvbik6IFVzZSBkZWZhdWx0X2VsZl9zZWN0aW9uX3NlY3Rpb24gZm9yIGV2ZXJ5dGhpbmcKCWV4Y2VwdCAudGV4dCBzdHJpbmcgY29uc3RhbnRzLgoJKG1pcHNfaW5fc21hbGxfZGF0YV9wKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZSBzbWFsbCBkYXRhIGhhbmRsaW5nLgoJKG1pcHNfdW5pcXVlX3NlY3Rpb24pOiBEZWxldGUuCgkoaXJpczZfc2VjdGlvbl90eXBlX2ZsYWdzKTogTmV3IGZ1bmN0aW9uLgoJKiBkb2MvdG0udGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gb2YgLW1ncG9wdCBhbmQgLW1oYWxmLXBpYy4KCjIwMDMtMDctMDggIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgVGFyZ2V0LzExNDUzCgkqIHBhLm1kOiBEaXNwYXJhZ2UgYWxsIG10c2FyIGNvbnN0cmFpbnRzLgoJKGV4dHp2LCBleHR2LCBpbnN2KTogRG9uJ3QgZmFpbCBvbiBsZW5ndGggb2YgezMyfDY0fS4KCjIwMDMtMDctMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzeXN0ZW0uaDogUG9pc29uIE1BUF9DSEFSQUNURVIuCgkqIGNvbmZpZy9pMzcwL2kzNzAtcHJvdG9zLmggKG12c19tYXBfY2hhcik6IERlbGV0ZS4KCSogY29uZmlnL2kzNzAvaTM3MC5jIChhc2NlYmMsIGViY2FzYywgbXZzX21hcF9jaGFyKTogRGVsZXRlLgoJKiBjb25maWcvaTM3MC9pMzcwLmggKE1BUF9DSEFSQUNURVIpOiBEZWxldGUgZGVmaW5pdGlvbi4KCShBU01fT1VUUFVUX0FTQ0lJKTogRG9uJ3QgdXNlIE1BUF9DSEFSQUNURVIuCgoyMDAzLTA3LTA4ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogdG9wbGV2LmMgKHJhbmRvbWl6ZSk6IENvcnJlY3QgY2FsbCB0byB0aW1lKCkuCgoyMDAzLTA3LTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHVucm9sbC5jIChyZWdfZGVhZF9hZnRlcl9sb29wKTogQ2hlY2sgZm9yIHJlZyBpbiBSRUdfRVFVQUwgYW5kCglSRUdfRVFVSVYgbm90ZXMgYXMgd2VsbC4KCjIwMDMtMDctMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvbWQudGV4aTogRml4IHRoZSBkZXNjcmlwdGlvbiBvZiBhZGRtb2RlY2MuCgoyMDAzLTA3LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRvcF9idWlsZGRpcik6IFNldCB0byAiLi4iLCBub3QgIi4iLgoJKElOVExMSUJTLCBJTlRMREVQUyk6IERlbGV0ZS4KCShMSUJJTlRMLCBMSUJJTlRMX0RFUCwgTElCSUNPTlZfREVQKTogTmV3IHZhcmlhYmxlcyB0byBiZSBzdWJzdGl0dXRlZC4KCShMSUJERVBTKTogQWRkICQoTElCSUNPTlZfREVQKS4KCShMSUJTKTogVGFrZSBvdXQgJChJTlRMTElCUyksIGFkZCAkKExJQklOVEwpIGFuZCAkKExJQklDT05WKS4KCShJTkNMVURFUyk6IFJlcGxhY2UgLUkuLi9pbnRsIHdpdGggQElOQ0lOVExALgoJKCQodG9wX2J1aWxkZGlyKS9pbnRsL2xpYmludGwuYSk6IERlbGV0ZSBydWxlLgoJKHN0YWdlMi1zdGFydCwgc3RhZ2UzLXN0YXJ0LCBzdGFnZTQtc3RhcnQsIHN0YWdlcHJvZmlsZS1zdGFydCwKCXN0YWdlZmVlZGJhY2stc3RhcnQpOiBVc2UgJCQgZm9yIHZhcmlhYmxlIHRvIGJlIGV2YWx1YXRlZCBieQoJc2hlbGwsIG5vdCBtYWtlLgoJKiBhY2NvbmZpZy5oIChFTkFCTEVfTkxTLCBIQVZFX0NBVEdFVFMsIEhBVkVfR0VUVEVYVCwKCUhBVkVfTENfTUVTU0FHRVMsIEhBVkVfU1RQQ1BZKTogRGVsZXRlLgoJKiBhY2xvY2FsLm00OiBzaW5jbHVkZSAuLi9jb25maWcvcHJvZ3Rlc3QubTQuICBBZGQKCWNvbnRlbnRzIG9mIGxjbWVzc2FnZS5tNCBmcm9tIGdldHRleHQgZGlzdHJvLgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciB3Y2hhci5oIGFuZCBzZXRsb2NhbGUuICBTZXQKCUxJQklDT05WX0RFUCB0byB0aGUgZW1wdHkgc3RyaW5nIGFuZCBzdWJzdGl0dXRlIGl0LgoJQ2FsbCBBTV9MQ19NRVNTQUdFUy4gIERlbGV0ZSBBQ19BUkdfRU5BQkxFIGZvciAtLWVuYWJsZS1ubHM7Cgl0aGlzIGlzIGhhbmRsZWQgZWxzZXdoZXJlLiAgVXNlIFpXX0dOVV9HRVRURVhUX1NJU1RFUl9ESVIsCglub3QgQ1lfR05VX0dFVFRFWFQuICBDbGVhciAkTElCSUNPTlYgaWYgaXRzIHRleHQgaXMgaW5jbHVkZWQKCWluICRMSUJJTlRMLCB0byBhdm9pZCBsaW5raW5nIGl0IHR3aWNlLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCjIwMDMtMDctMDggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBSZW1vdmUgd2lubnQgc3VwcG9ydC4KCSogZml4aW5jL2ZpeGluYy53aW5udDogRGVsZXRlIHdpdGggZXh0cmVtZSBwcmVqdWRpY2UuCgoyMDAzLTA3LTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IG9wdF90ZXh0IG5vdyBjb250YWlucyB0aGUgJy0nLgoJKiBjLm9wdDogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIGNvbW1vbi5vcHQ6IEFkZCBzb21lIGhlbHAgdGV4dC4KCSogb3B0cy5jOiBJbmNsdWRlIGludGwuaC4KCSh3cmFwX2hlbHAsIHByaW50X2hlbHApOiBOZXcuCgkoZmluZF9vcHQsIGhhbmRsZV9vcHRpb24sIGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogb3B0X3RleHQgbm93Cgljb250YWlucyB0aGUgJy0nLiAgVXNlIHByaW50X2hlbHAgdG8gb3V0cHV0IGhlbHAuCgkqIG9wdHMuaCAoc3RydWN0IGNsX29wdGlvbik6IE5ldyBtZW1iZXIgImhlbHAiLgoJKiBvcHRzLnNoOiBVcGRhdGUgdG8gaGFuZGxlIGhlbHAgdGV4dCBvdXRwdXQgYW5kIHRvIHByZXBlbmQKCW9wdGlvbnMgd2l0aCAnLScuCgkqIHRvcGxldi5jIChkaXNwbGF5X2hlbHApOiBSZW1vdmUgc29tZSBoZWxwIHRleHQuCgoyMDAzLTA3LTA3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgkgICAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlndXJlLmluOiBUZXN0IGZvciBQb3dlclBDIG1mY3IgZmllbGQgc3VwcG9ydCBpbiBhc3NlbWJsZXIuCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWdlbmRlcmF0ZWQuCgoJKiBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZDogQWRkIG1mY3JmIHJlc2VydmF0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAobWZjcl9vcGVyYXRpb24pOiBEZWNsYXJlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChtZmNyX29wZXJhdGlvbik6IERlZmluZS4KCShwcmludF9vcGVyYW5kKTogQWRkICdRJyBjYXNlIGZvciBtZmNyZi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoVEFSR0VUX01GQ1JGKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYXR0cmlidXRlICJ0eXBlIik6IEFkZCBtZmNyZi4KCShtb3ZjY19pbnRlcm5hbDEpOiBFbWl0IG9wdGlvbmFsIGZpZWxkIG9wZXJhbmQgZm9yIG1mY3IgYW5kIHNldAoJInR5cGUiIGF0dHJpYnV0ZSBhcHByb3ByaWF0ZWx5LgoJKG1mY3IgU0NDKTogTGlrZXdpc2UuCgkobW92ZXNpX2Zyb21fY3Jfb25lKTogTmV3LgoKMjAwMy0wNy0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBDb3JyZWN0IGNoZWNrLWluIG9mIGluY29ycmVjdCB2ZXJzaW9uLgoKMjAwMy0wNy0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYml0bWFwLmMgKGRlYnVnX2JpdG1hcF9maWxlKTogTWVyZ2UgdXNlcyBvZiBIT1NUX1BUUl9QUklOVEYgd2l0aAoJYWRqYWNlbnQgc3RkaW8gY2FsbHMuCgkqIGMtZGVjbC5jIChjX3ByaW50X2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jICh3cml0ZV92YXJyYXksIHdyaXRlX29iamVjdCwgYWxsb2NhdGVfY2x1c3Rlcik6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogTGlrZXdpc2UuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZV9icmllZiwgcHJpbnRfbm9kZSk6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaCAoSE9TVF9QVFJfUFJJTlRGKTogRW5zdXJlIHdlIGhhdmUgYSBsaXRlcmFsIHN0cmluZy4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ09NUElMRV9DSEVDS19TSVpFT0YpOiBDaGVjayBmb3IgYHZvaWQgKicuCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDctMDcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRhcmdldC8xMDk3OQoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChhdGFuMmRmMywgYXRhbjJzZjMsIGF0YW4yeGYzLCBhdGFuMnRmMyk6CglDaGFuZ2VkIHRvIGRlZmluZV9leHBhbmQgcGF0dGVybnMgdGhhdCBjb3B5IG9wZXJhbmRbMV0gdG8gcHJldmVudAoJaXQgZnJvbSBiZWluZyBjbG9iYmVyZWQgYmVmb3JlIGVtaXR0aW5nIGFuIGF0YW4yP2YzXzEgaW5zbi4KCShhdGFuMmRmM18xLCBhdGFuMnNmM18xLCBhdGFuMnhmXzEsIGF0YW4ydGYzXzEpOiBOZXcgZGVmaW5lX2luc24KCXBhdHRlcm5zIHRoYXQgYWN0dWFsbHkgc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHg4NydzIEZQQVRBTi4KCjIwMDMtMDctMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX291dHB1dF9taV90aHVuayk6IFJlbW92ZSBib2d1cwoJY2xlYXJpbmcgb2YgU1lNQk9MX0ZMQUdfTE9DQUwgYml0LgoJSWYgdmNhbGxfb2Zmc2V0IGZpdHMgaW50byBzaWduZWQgMTYtYml0IGltbWVkaWF0ZSwgdXNlCglvbmUgaW5zdHJ1Y3Rpb24gZm9yIGJvdGggYWRkaXRpb24gYW5kIGxvYWQuCgoyMDAzLTA3LTA3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogQ29ycmVjdCBoYW5kbGluZyBvZiB0aGUKCS1mYWxpZ24tIHN3aXRjaGVzIHRoYXQgZG8gYW5kIGRvbid0IHRha2UgYW4gYXJndW1lbnQuCgoyMDAzLTA3LTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChwdXNocWkxX2g4MzAwaHMpOiBSZXZlcnQgbXkgcGF0Y2gKCXRvZGF5LgoJKHB1c2hoaTFfaDgzMDBocyk6IExpa2V3aXNlLgoKMjAwMy0wNy0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZ2VuZXh0cmFjdC5jOiBDb252ZXJ0IHJlbWFpbmluZyBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgoJKiBjcHBsZXguYyAoX2NwcF9mcmVlX2J1ZmYpOiBDb252ZXJ0IHByb3RvdHlwZSB0byBJU08gQzkwLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfc2luZ2xlX2JpdF90ZXN0KTogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuYyAoZGVmYXVsdF9kaWFnbm9zdGljX2ZpbmFsaXplcik6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAocnRsX3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCk6IExpa2V3aXNlLgoKCSogZ2VuZ3R5cGUuYyAod3JpdGVfYXJyYXkpOiBHZW5lcmF0ZSBJU08gQzkwIHByb3RvdHlwZXMuCgoJKiBnZW5mbGFncy5jIChnZW5fcHJvdG8pOiBHZW5lcmF0ZSBJU08gQzkwIHByb3RvdHlwZXMuCgoyMDAzLTA3LTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTEwNTkKCSogZXhwci5jIChjYW5fc3RvcmVfYnlfcGllY2VzKTogUmV0dXJuIHRydWUgaWYgbGVuZ3RoIGlzIHplcm8uCgkoc3RvcmVfYnlfcGllY2VzKTogSWYgbGVuZ3RoIGlzIHplcm8gYW5kIGVuZHAgaXMgdHdvLCBhYm9ydCwKCW90aHdlcmlzZSwgaWYgbGVuZ3RoIGlzIHplcm8gYW5kIGVuZHAgaXMgbm90IHR3bywgcmV0dXJuICJ0byIuCgkoY2xlYXJfYnlfcGllY2VzKTogRG8gbm90aGluZyBpZiBsZW5ndGggaXMgemVyby4KCShjbGVhcl9zdG9yYWdlKTogRG8gbm90aGluZyBpZiBsZW5ndGggaXMgemVyby4KCShzdG9yZV9jb25zdHJ1Y3Rvcik6IFNpbXBsaWZ5IGNvZGUgd2hlbiBzaXplIGlzIHplcm8sIG9yIHRoZQoJdGFyZ2V0IGhhcyBhbHJlYWR5IGJlZW4gY2xlYXJlZC4gIFRoaXMgYXZvaWRzIGVtaXR0aW5nIGEKCWJsb2NrYWdlIGluc3RydWN0aW9uIHdoZW4gaW5pdGlhbGl6aW5nIGVtcHR5IHN0cnVjdHVyZXMuCgoyMDAzLTA3LTA3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBtaXBzLXRmaWxlLmM6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBtaXBzLXRkdW1wLmM6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoKMjAwMy0wNy0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5oIChlbWl0X2xpbmVfbm90ZSk6IFRha2UgYSBsb2NhdGlvbl90LgoJKGVtaXRfbGluZV9ub3RlX2ZvcmNlKTogUmVtb3ZlLgoJKHNldF9maWxlX2FuZF9saW5lX2Zvcl9zdGF0ZW1lbnQpOiBUYWtlIGEgbG9jYXRpb25fdC4KCSogdHJlZS5nIChlbWl0X2xpbmVfbm90ZSk6IFRha2UgYSBsb2NhdGlvbl90LgoJKiBlbWl0LXJ0bC5jIChlbWl0X2xpbmVfbm90ZSk6IFRha2UgYSBsb2NhdGlvbl90LgoJKGVtaXRfbGluZV9ub3RlX2ZvcmNlKTogUmVtb3ZlLgoJKiBmdW5jdGlvbi5jIChpbml0X2Z1bmN0aW9uX3N0YXJ0KTogQWRqdXN0IGVtaXRfbGluZV9ub3RlIGNhbGwuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IFVzZSBmb3JjZV9uZXh0X2xpbmVfbm90ZSwgbm90CgllbWl0X2xpbmVfbm90ZV9mb3JjZS4KCSogYy1wYXJzZS5pbiAobWF5YmVfdHlwZV9xdWFsKTogQWRqdXN0IGVtaXRfbGluZV9ub3RlIGNhbGxzLgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfZG9fcHVzaGxldmVsLCBnZW5ydGxfZ290b19zdG10LAoJZ2VucnRsX2V4cHJfc3RtdF92YWx1ZSwgZ2VucnRsX2RlY2xfc3RtdCwgZ2VucnRsX2lmX3N0bXQsCglnZW5ydGxfd2hpbGVfc3RtdCwgZ2VucnRsX2RvX3N0bXRfMSwgZ2VucnRsX3JldHVybl9zdG10LAoJZ2VucnRsX2Zvcl9zdG10LCBnZW5ydGxfYnJlYWtfc3RtdCwgZ2VucnRsX2NvbnRpbnVlX3N0bXQsCglnZW5ydGxfY29udGludWVfc3RtdCwgZ2VucnRsX3N3aXRjaF9zdG10LAoJZ2VucnRsX2FzbV9zdG10KTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogc3RtdC5jIChzZXRfZmlsZV9hbmRfbGluZV9mb3Jfc3RtdCk6IFRha2UgYSBsb2NhdGlvbl90LgoJKGV4cGFuZF9kZWNsX2luaXQpOiBBZGp1c3QgZW1pdF9saW5lX25vdGUgY2FsbC4KCjIwMDMtMDctMDcgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLXRyYW1wLmFzbTogIEZpeCB0cmFtcG9saW5lcy4gIFBSIDEwOTAwLgoKMjAwMy0wNy0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaDogQ29udmVydCBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBVc2UgZ2VuX2ludF9tb2RlIGluc3RlYWQgb2YKCUdFTl9JTlQgKHRydW5jX2ludF9mb3JfbW9kZSAoLi4uKSkuCgoyMDAzLTA3LTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChwdXNocWkxX2g4MzAwaHMpOiBPcHRpbWl6ZSBieSBwdXNoaW5nCgkyIGJ5dGVzIGFuZCB0aGVuIHN1YnRyYWN0IDIgZnJvbSB0aGUgc3RhY2sgcG9pbnRlci4KCShwdXNoaGkxX2g4MzAwaHMpOiBMaWtld2lzZS4KCjIwMDMtMDctMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW4gKGVuYWJsZV9jb3ZlcmFnZSk6IFJlbW92ZSAtRFNFTEZfQ09WRVJBR0UsIGFkZAoJLWZyYW5kb20tc2VlZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogTWFrZWZpbGUuaW46IFJlbW92ZSBleHRyYW5lb3VzIGNvbW1lbnQuCgkqIHRvcGxldi5jIChyYW5kb21pemUpOiBQcm90ZWN0IGFnYWluc3QgcG90ZW50aWFsIG11bHRpcGxlIGNhbGxzLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mcmFuZG9tLXNlZWQpOiBEb2N1bWVudCB1c2UgZm9yIGluIGNvdmVyYWdlCglmaWxlcy4KCjIwMDMtMDctMDcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTExOTgKCSogYWxpYXMuYyAob2JqZWN0c19tdXN0X2NvbmZsaWN0X3ApOiBSZXR1cm4gMSBpZiB0aGUgdHlwZXMgaGF2ZQoJdGhlIHNhbWUgYWxpYXMgc2V0LCBub3QgaWYgdGhlIGFsaWFzIHNldHMgb25seSBjb25mbGljdC4KCjIwMDMtMDctMDcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY3BwY2hhcnNldC5jIChJQ09OVl9DT05TVCk6IERlZmluZSBpZmYgIUhBVkVfSUNPTlYuCgkoY29udmVydF9jc2V0KTogQ2hhbmdlIGluYnVmIHRvIHR5cGUgSUNPTlZfQ09OU1QgY2hhci4KCSogTWFrZWZpbGUuaW4gKExJQlMpOiBBZGQgTElCSUNPTlYuCgoJKiBkb2MvaW52b2tlLnRleGkgKC1mYWxpZ24tZnVuY3Rpb25zKTogRG9jdW1lbnQgdGhhdAoJd2hlbiBuIGlzIHplcm8gdGhlbiBhIG1hY2hpbmUtZGVwZW5kZW50IGRlZmF1bHQgaXMgdXNlZC4KCSgtZmFsaWduLWxhYmVscyk6IERvY3VtZW50IHRoYXQgd2hlbiBuIGlzIHplcm8gdGhlbiBhCgltYWNoaW5lLWRlcGVuZGVudCBkZWZhdWx0IGlzIHVzZWQgYW5kIHRoYXQgLWZhbGlnbi1sYWJlbHMgPTEKCWlzIGVxdWl2YWxlbnQgdG8gLWZuby1hbGlnbi1sYWJlbHMuCgkoLWZhbGlnbi1sb29wcyk6IExpa2V3aXNlLgoJKC1mYWxpZ24tanVtcHMpOiBMaWtld2lzZS4KCjIwMDMtMDctMDYgIEFydCBIYWFzICA8YWhhYXNAYWlybWFpbC5uZXQ+CgoJKiBmL2dsb2JhbC5jIChmZmVnbG9iYWxfdHlwZV9zdHJpbmdfKTogRml4IG9ic29sZXRlIEdDQyBhcnJheQoJaW5pdGlhbGl6ZXIgc3ludGF4LgoKMjAwMy0wNy0wNiAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25AdHVsaXB0cmVlLm9yZz4KCglQUiBvcHRpbWl6YXRpb24vOTgxMgoJKiBydGwuaCAobWVtX2Zvcl9jb25zdF9kb3VibGUpOiBEZWxldGUgcHJvdG90eXBlLgoJKiB2YXJhc20uYyAobWVtX2Zvcl9jb25zdF9kb3VibGUpOiBEZWxldGUgZnVuY3Rpb24uCgkqIGNvbmZpZy9tNjhrL2hwMzIwLmgsIGNvbmZpZy9tNjhrL2xpbnV4LmgsIGNvbmZpZy9tNjhrL202OGtlbGYuaCwKCWNvbmZpZy9tNjhrL202OGt2NC5oLCBjb25maWcvbTY4ay9uZXRic2QtZWxmLmgKCShMRUdJVElNQVRFX1BJQ19PUEVSQU5EX1ApOiBEZWxldGUgZHVwbGljYXRlIGRlZmluaXRpb25zLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IERpc2FsbG93IFhGbW9kZS4KCShMRUdJVElNQVRFX1BJQ19PUEVSQU5EX1ApOiBEZWxldGUgQ09OU1RfRE9VQkxFIHRlc3RzLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChtb3Z4Zik6IEFkZCByZWxvYWRfaW5fcHJvZ3Jlc3MgZ3VhcmQuICBBZGQKCWNvbW1lbnQgYWJvdXQgY29uZnVzZWQgc3VwcG9ydCBmb3IgWEZtb2RlIGNvbnN0YW50cy4KCjIwMDMtMDctMDcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ2xheW91dC5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogQ2FsbCBkZWxldGVfZGVhZF9qdW1wdGFibGVzLgoKMjAwMy0wNy0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvYXRobG9uLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvcGVudGl1bS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2l0YW5pdW0xLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaXRhbml1bTIubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9tMzJyLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9zcjcxay5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL3QtaXJpczUtYXM6IExpa2V3aXNlLgoJKiBjb25maWcvbW1peC9tbWl4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9uczMyay9OT1RFUzogRml4IGEgdHlwby4KCjIwMDMtMDctMDYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHN0bXQuYzogQ29udmVydCByZW1haW5pbmcgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBjZmdsYXlvdXQuYzogTGlrZXdpc2UuCgkqIGRieG91dC5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnZW5lbWl0LmM6IExpa2V3aXNlLgoKCSogYmFzaWMtYmxvY2suaDogQ29udmVydCBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgkqIGMtcGFyc2UuaW46IExpa2V3aXNlLgoJKiBjLXByYWdtYS5oOiBMaWtld2lzZS4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIGNmZ2hvb2tzLmg6IExpa2V3aXNlLgoJKiBjZmdsb29wYW5hbC5jOiBMaWtld2lzZS4KCSogZGJ4b3V0Lmg6IExpa2V3aXNlLgoJKiBkZWJ1Zy5oOiBMaWtld2lzZS4KCSogZHdhcmYyYXNtLmg6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBnZW5ndHlwZS1sZXgubDogTGlrZXdpc2UuCgkqIHNjaGVkLWludC5oOiBMaWtld2lzZS4KCSogdGltZXZhci5jOiBMaWtld2lzZS4KCjIwMDMtMDctMDYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMtY29tbW9uLmggKGNfY29tb25faGFuZGxlX2ZpbGVuYW1lLAoJY19jb21tb25fbWlzc2luZ19hcmd1ZW1lbnQpOiBOZXcuCgkqIGMtbGFuZy5jIChMQU5HX0hPT0tTX0hBTkRMRV9GSUxFTkFNRSwKCUxBTkdfSE9PS1NfTUlTU0lOR19BUkdVTUVOVCk6IE5ldy4KCSogYy1vcHRzLmMgKG1pc3NpbmdfYXJnKTogUmVuYW1lIGNfY29tbW9uX21pc3NpbmdfYXJndW1lbnQsCgl1cGRhdGUgdG8gYmUgYW4gYXBwcm9wcmlhdGUgbGFuZ2hvb2suCgkoY19jb21tb25faGFuZGxlX29wdGlvbik6IERvbid0IGhhbmRsZSBmaWxlbmFtZXMuCgkoY19jb21tb25faGFuZGxlX2ZpbGVuYW1lKTogTmV3LgoJKiBob29rcy5jIChob29rX3ZvaWRfY29uc3RjaGFycHRyLAoJaG9va19ib29sX2NvbnN0Y2hhcnB0cl9zaXplX3RfZmFsc2UpOiBOZXcuCgkqIGhvb2tzLmggKGhvb2tfdm9pZF9jb25zdGNoYXJwdHIsCglob29rX2Jvb2xfY29uc3RjaGFycHRyX3NpemVfdF9mYWxzZSk6IE5ldy4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0hBTkRMRV9GSUxFTkFNRSwKCUxBTkdfSE9PS1NfTUlTU0lOR19BUkdVTUVOVCk6IE5ldy4KCShMQU5HX0hPT0tTX0lOSVRJQUxJWkVSKTogVXBkYXRlLgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3MpOiBBZGQgaGFuZGxlX2ZpbGVuYW1lIGFuZAoJbWlzc2luZ19hcmd1bWVudC4KCSogb3B0cy5jIChoYW5kbGVfb3B0aW9uKTogRG9uJ3QgaGFuZGxlIGZpbGVuYW1lcyBoZXJlLCBidXQgLi4uCgkoaGFuZGxlX29wdGlvbnMpOiAuLi4gaGVyZS4KCShjb21tb25faGFuZGxlX29wdGlvbik6IERvbid0IGhhbmRsZSBtaXNzaW5nIGFyZ3VtZW50cyBoZXJlLgoJKiBvYmpjL29iamMtbGFuZy5jIChMQU5HX0hPT0tTX0hBTkRMRV9GSUxFTkFNRSwKCUxBTkdfSE9PS1NfTUlTU0lOR19BUkdVTUVOVCk6IE5ldy4KCjIwMDMtMDctMDYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2ZpbGUuaW46IFJlbW92ZSB0cmFjZXMgb2YgbWJjaGFyLgoJKiBjLXBhcnNlLmluIChNVUxUSUJZVEVfQ0hBUlMpOiBSZW1vdmUuCgkqIGNvbmZpZy5pbiAoTVVMVElCWVRFX0NIQVJTKTogUmVtb3ZlLgoJKiBjb25maWd1cmU6IFJlbW92ZSAtLWVuYWJsZS1tYmNoYXIuCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIC0tZW5hYmxlLW1iY2hhci4KCSogbWJjaGFyLmMsIG1iY2hhci5oOiBSZW1vdmUuCgkqIHN5c3RlbS5oOiBQb2lzb24gTVVMVElCWVRFX0NIQVJTLgoJKiBjb25maWcvbGludXgtYW91dC5oIChNVUxUSUJZVEVfQ0hBUlMpOiBSZW1vdmUuCgkqIGNvbmZpZy9saW51eC5oIChNVUxUSUJZVEVfQ0hBUlMpOiBSZW1vdmUuCgkqIGNvbmZpZy9zdnI0LmggKE1VTFRJQllURV9DSEFSUyk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKE1VTFRJQllURV9DSEFSUyk6IFJlbW92ZS4KCjIwMDMtMDctMDYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHZhcnJheS5jICh2YXJyYXlfY2hlY2tfZmFpbGVkKTogRml4IHR5cG8uCgoJKiB1bnJvbGwuYzogQ29udmVydCBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgkqIHZhcmFzbS5jOiBMaWtld2lzZS4KCSogdmFycmF5LmM6IExpa2V3aXNlLgoJKiB2YXJyYXkuaDogTGlrZXdpc2UuCgkqIHZtc2RiZ291dC5jOiBMaWtld2lzZS4KCSogeGNvZmZvdXQuYzogTGlrZXdpc2UuCgkqIHhjb2Zmb3V0Lmg6IExpa2V3aXNlLgoKMjAwMy0wNy0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjb3YtaW8uaDogQWRkIGEgbG9jYWwgdGltZSBzdGFtcC4KCShzdHJ1Y3QgZ2Nvdl9pbmZvKTogQWRkIHN0YW1wIGZpZWxkLgoJKGdjb3ZfdHJ1bmNhdGUpOiBOZXcuCgkqIGNvdmVyYWdlLmMgKHJlYWRfY291bnRzX2ZpbGUpOiBTa2lwIHRoZSBzdGFtcC4KCShjb3ZlcmFnZV9iZWdpbl9vdXRwdXQpOiBXcml0ZSB0aGUgc3RhbXAuCgkoYnVpbGRfZ2Nvdl9pbmZvKTogRGVjbGFyZSBhbmQgaW5pdCB0aGUgc3RhbXAuCgkoY292ZXJhZ2VfZmluaXNoKTogT25seSB1bmxpbmsgZGF0YSBmaWxlLCBpZiBzdGFtcCBpcyB6ZXJvLgoJKiBnY292LWR1bXAuYyAoZHVtcF9maWxlKTogRHVtcCB0aGUgc3RhbXAuCgkqIGdjb3YuYyAoYmJnX3N0YW1wKTogTmV3LgoJKHJlbGVhc2Vfc3RydWN0dXJlcyk6IENsZWFyIGJiZ19zdGFtcC4KCShyZWFkX2dyYXBoX2ZpbGUpOiBSZWFkIHN0YW1wLgoJKHJlYWRfY291bnRfZmlsZSk6IENoZWNrIHN0YW1wLgoJKiBsaWJnY292LmMgKGdjb3ZfZXhpdCk6IENoZWNrIHN0YW1wIGFuZCB0cnVuY2F0ZSBpZiBuZWVkZWQuCgoyMDAzLTA3LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChkZWZhdWx0X2ZsYWdfcmFuZG9tX3NlZWQpOiBSZW1vdmUuCgkqIHRvcGxldi5oIChsb2NhbF90aWNrKTogRGVjbGFyZS4KCSogdHJlZS5jIChmbGFnX3JhbmRvbV9zZWVkLCBkZWZhdWx0X2ZsYWdfcmFuZG9tX3NlZWQpOiBNb3ZlIHRvCgl0b3BsZXYuYy4KCShhcHBlbmRfcmFuZG9tX2NoYXJzKTogRG9uJ3QgY2FsbCBkZWZhdWx0X2ZsYWdfcmFuZG9tX3NlZWQuCgkqIHRvcGxldi5jIChmbGFnX3JhbmRvbV9zZWVkKTogRGVmaW5lIGhlcmUuIFNldCBsb2NhbF90aWNrLgoJKGxvY2FsX3RpY2spOiBEZWZpbmUuCgkocmFuZG9taXplKTogTmV3LCBtb3ZlZCBmcm9tIHRyZWUuYy4KCShwcmludF9zd2l0Y2hfdmFsdWVzKTogQWRqdXN0LgoJKHRvcGxldl9tYWluKTogQ2FsbCByYW5kb21pemUuCgoyMDAzLTA3LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChjcmMzMl9zdHJpbmcpOiBEZWNsYXJlLgoJKiB0cmVlLmMgKGFwcGVuZF9yYW5kb21fY2hhcnMpOiBSZW1vdmUuCgkoY3JjMzJfc3RyaW5nKTogTmV3LgoJKGdldF9maWxlX2Z1bmN0aW9uX25hbWVfbG9uZyk6IFVzZSBjcmMzMl9zdHJpbmcgaGVyZS4KCjIwMDMtMDctMDYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGdjYy5jOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogZ2NjLmg6IExpa2V3aXNlLgoJKiBnY292LWR1bXAuYzogTGlrZXdpc2UuCgkqIGdjb3YtaW92LmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoJKiBnZW5hdHRydGFiLmg6IExpa2V3aXNlLgoJKiBnZ2MuaDogTGlrZXdpc2UuCgkqIGdsb2JhbC5jOiBMaWtld2lzZS4KCSogZ3JhcGguYzogTGlrZXdpc2UuCgkqIGdyYXBoLmg6IExpa2V3aXNlLgoJKiBob3N0aG9va3MuaDogTGlrZXdpc2UuCgkqIGhvb2tzLmg6IExpa2V3aXNlLgoJKiBob29rcy5jOiBMaWtld2lzZS4KCSogaGFzaHRhYmxlLmg6IExpa2V3aXNlLgoJKiBoYXNodGFibGUuYzogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmM6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuaDogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jOiBMaWtld2lzZS4KCSogaW5wdXQuaDogTGlrZXdpc2UuCgkqIGlmY3Z0LmM6IExpa2V3aXNlLgoJKiBqdW1wLmM6IExpa2V3aXNlLgoJKiBsYW5naG9va3MtZGVmLmg6IExpa2V3aXNlLiAgQWRkIGV4dGVybiB0byBwcm90b3R5cGVzLgoJKiBsYW5naG9va3MuYzogTGlrZXdpc2UuCgkqIGxhbmdob29rcy5oOiBMaWtld2lzZS4KCSogbGNtLmM6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jOiBMaWtld2lzZS4KCSogbG9vcC1pbml0LmM6IExpa2V3aXNlLgoJKiBsb29wLXVucm9sbC5jOiBMaWtld2lzZS4KCSogbG9vcC11bnN3aXRjaC5jOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogbG9vcC5oOiBMaWtld2lzZS4gQWRkIGV4dGVybiB0byBwcm90b3R5cGVzLgoJKiBtYWNobW9kZS5oOiBMaWtld2lzZS4KCSogbWFpbi5jOiBMaWtld2lzZS4KCSogbWJjaGFyLmM6IExpa2V3aXNlLgoJKiBtYmNoYXIuaDogTGlrZXdpc2UuCgkqIG1rZGVwcy5jOiBMaWtld2lzZS4KCSogbWtkZXBzLmg6IExpa2V3aXNlLgoJKiBvcHRhYnMuYzogTGlrZXdpc2UuCgkqIG9wdGFicy5oOiBMaWtld2lzZS4KCSogb3V0cHV0Lmg6IExpa2V3aXNlLgoJKiBnY2NzcGVjLmM6IExpa3dpc2UuCgkqIHBvc3RyZWxvYWQuYzogTGlrZXdpc2UuCgkqIHByZWZpeC5jOiBMaWtld2lzZS4KCSogcHJlZml4Lmg6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYzogTGlrZXdpc2UuCgkqIHByaW50LXRyZWUuYzogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYzogTGlrZXdpc2UuCgkqIHJlYWQtcnRsLmM6IExpa2V3aXNlLgoJKiByZWFsLmM6IExpa2V3aXNlLgoJKiByZWFsLmg6IExpa2V3aXNlLgoJKiByZWNvZy5jOiBMaWtld2lzZS4KCSogcmVjb2cuaDogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYzogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYzogTGlrZXdpc2UuCgkqIHJlZ3JlbmFtZS5jOiBMaWtld2lzZS4KCSogcmVncy5oOiBMaWtld2lzZS4KCSogcmVsb2FkLmM6IExpa2V3aXNlLgoJKiByZWxvYWQuaDogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYzogTGlrZXdpc2UuCgkqIHJlb3JnLmM6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuaDogTGlrZXdpc2UuCgkqIHJ0bC1lcnJvci5jOiBMaWtld2lzZS4KCSogcnRsLmM6IExpa2V3aXNlLgoJKiBydGwuaDogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYzogTGlrZXdpc2UuCgkqIHNiaXRtYXAuYzogTGlrZXdpc2UuCgkqIHNiaXRtYXAuaDogTGlrZXdpc2UuCgkqIHNjYW4tZGVjbHMuYzogTGlrZXdpc2UuCgkqIHNjYW4uYzogTGlrZXdpc2UuCgkqIHNjaGVkLWRlcHMuYzogTGlrZXdpc2UuCgkqIHNjaGVkLWViYi5jOiBMaWtld2lzZS4KCSogc2NoZWQtaW50Lmg6IExpa2V3aXNlLgoJKiBzY2hlZC1yZ24uYzogTGlrZXdpc2UuCgkqIHNjaGVkLXZpcy5jOiBMaWtld2lzZS4KCSogc2liY2FsbC5jOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmM6IExpa2V3aXNlLgoJKiBzcmVhbC5jOiBMaWtld2lzZS4KCSogc3JlYWwuaDogTGlrZXdpc2UuCgkqIHNzYS1jY3AuYzogTGlrZXdpc2UuCgkqIHNzYS1kY2UuYzogTGlrZXdpc2UuCgkqIHNzYS5jOiBMaWtld2lzZS4KCSogc3NhLmg6IExpa2V3aXNlLgoJKiBzdGFjay5oOiBMaWtld2lzZS4KCSogc3RtdC5jOiBMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYzogTGlrZXdpc2UuCgkqIHN0cmluZ3Bvb2wuYzogTGlrZXdpc2UuCgkqIHRhcmdldC5oOiBMaWtld2lzZS4KCSogdGltZXZhci5jOiBMaWtld2lzZS4KCSogdGltZXZhci5oOiBMaWtld2lzZS4KCSogdGxpbmsuYzogTGlrZXdpc2UuCgkqIHRyYWNlci5jOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYzogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmg6IExpa2V3aXNlLgoJKiB0cmVlLmM6IExpa2V3aXNlLgoJKiB0cmVlLmg6IExpa2V3aXNlLgoKMjAwMy0wNy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYyAobm9uemVyb19iaXRzMSk6IEZpeCBhIHdhcm5pbmcuCgoyMDAzLTA3LTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGNvbXB1dGVfbW92X2xlbmd0aCk6IENvcnJlY3QgdGhlCglsZW5ndGggb2YgbG9hZGluZyBDT05TVDBfUlRYIChTRm1vZGUpLgoKMjAwMy0wNy0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRvcGxldi5jIChvdXRwdXRfY2xlYW5fc3ltYm9sX25hbWUpOiBSZW1vdmUuCgkqIHRvcGxldi5oIChvdXRwdXRfY2xlYW5fc3ltYm9sX25hbWUpOiBSZW1vdmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jICh1bmljb3Nta19vdXRwdXRfbW9kdWxlX25hbWUpOiBVc2UKCWxiYXNlbmFtZSAmIGNsZWFuX3N5bWJvbF9uYW1lLgoKMjAwMy0wNy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGdnYy5oOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3dpbm50LmM6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBMaWtld2lzZS4KCjIwMDMtMDctMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidC1sb2FkLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjLWluY3BhdGguYzogTGlrZXdpc2UuCgkqIGNmZy5jOiBMaWtld2lzZS4KCSogY2ZnY2xlYW51cC5jOiBMaWtld2lzZS4KCSogY2ZnbG9vcC5oOiBMaWtld2lzZS4KCSogY2ZnbG9vcG1hbmlwLmM6IExpa2V3aXNlLgoJKiBjZmdydGwuYzogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuaDogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogZXQtZm9yZXN0LmM6IExpa2V3aXNlLgoJKiBldC1mb3Jlc3QuaDogTGlrZXdpc2UuCgkqIGV4cHIuYzogTGlrZXdpc2UuCgkqIGdjc2UuYzogTGlrZXdpc2UuCgkqIGdlbmF0dHIuYzogTGlrZXdpc2UuCgkqIGp1bXAuYzogTGlrZXdpc2UuCgkqIGxhbmdob29rcy5oOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYzogTGlrZXdpc2UuCgkqIGxvb3AtdW5yb2xsLmM6IExpa2V3aXNlLgoJKiBsb29wLXVuc3dpdGNoLmM6IExpa2V3aXNlLgoJKiByYS1idWlsZC5jOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYzogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYzogTGlrZXdpc2UuCgkqIHJ0bC5kZWY6IExpa2V3aXNlLgoJKiBydGxhbmFsLmM6IExpa2V3aXNlLgoJKiBzY2hlZC1lYmIuYzogTGlrZXdpc2UuCgkqIHNjaGVkLXJnbi5jOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmM6IExpa2V3aXNlLgoJKiBzc2EuYzogTGlrZXdpc2UuCgkqIHRyYWNlci5jOiBMaWtld2lzZS4KCSogdHJlZS5jOiBMaWtld2lzZS4KCjIwMDMtMDctMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBjaGFyc2V0LmM6IFVzZSB0aGUgY29ycmVjdCByZXR1cm4gdHlwZSBmb3IgdGhlIGZhbGxiYWNrIGljb252CgltYWNyby4KCjIwMDMtMDctMDUgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglCbGFtZSB0byBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkqIGNmZ2xheW91dC5jIChyZWNvcmRfZWZmZWN0aXZlX2VuZHBvaW50cyk6IFNwbGl0IGluc25zIGJlZm9yZQoJZmlyc3QgYmFzaWMgYmxvY2sgY29ycmVjdGx5LgoKMjAwMy0wNy0wNSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX1JFRik6IFdoZW4gc2VlaW5nIGlmIHNob3VsZCB1c2UKCWJpdGZpZWxkIG9wZXJhdGlvbnMsIHVzZSBTVFJJQ1RfQUxJR05NRU5ULCBub3QgU0xPV19VTkFMSUdORURfQUNDRVNTCglpZiBFWFBBTkRfQ09OU1RfQUREUkVTUyBvciBFWFBBTkRfSU5JVElBTElaRVIuCgoyMDAzLTA3LTA1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBnZW5hdHRydGFiLmMgKHdyaXRlX2F0dHJfZ2V0KTogUmV2ZXJ0IHBhcnQgb2YgbGFzdCBwYXRjaCB0bwoJYWx3YXlzIHdyaXRlIG91dCBhIHByb3RvdHlwZS4KCgkqIGdlbmVtaXQuYyAoZ2VuX3NwbGl0KTogUmVhZGQgbG9zdCB1bnVzZWQgYXR0cmlidXRlcyBpbiBsYXN0CglwYXRjaC4KCjIwMDMtMDctMDUgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZ2xvb3BtYW5pcC5jIChmb3JjZV9zaW5nbGVfc3VjY19sYXRjaGVzKTogRm9yY2UgbGF0Y2ggdG8gYmUKCWRpZmZlcmVudCBmcm9tIGhlYWRlci4KCjIwMDMtMDctMDUgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IFJlbW92ZSBjb2RlIHByb3RlY3RlZCBieSBDUkRTLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBMaWtld2lzZS4KCjIwMDMtMDctMDUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCglQUiBkcml2ZXIvMTE0MTcKCSogYy1vcHRzLmMgKHBlcm1pdF9mb3J0cmFuX29wdGlvbnMpOiBOZXcuCgkoY19jb21tb25faW5pdF9vcHRpb25zKTogQWNjZXB0IGZvcnRyYW4gZnJvbnQgZW5kIG9wdGlvbnMgaWYKCWl0IGxvb2tzIGxpa2Ugd2UgbWlnaHQgYmUgcHJlcHJvY2Vzc2luZyBGb3J0cmFuLgoJKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBEb24ndCByZWplY3Qgc3dpdGNoIGlmIHBlcm1pdF9mb3RyYW5fb3B0aW9ucy4KCjIwMDMtMDctMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbmF0dHIuYyAoaW50ZXJuYWxfZGZhX2luc25fY29kZSk6IE91dHB1dCBwcm90b3R5cGUuCgkqIGdlbmF0dHJ0YWIuYzogRG9uJ3Qgb3V0cHV0IHVubmVjZXNzYXJ5IGRlY2xzLCBvdXRwdXQgaW4gSVNPIEMuCgkqIGdlbmF1dG9tYXRhLmM6IExpa2V3aXNlLgoJKiBnZW5jb25kaXRpb25zLmM6IExpa2V3aXNlLgoJKiBnZW5lbWl0LmM6IExpa2V3aXNlLgoJKiBnZW5leHRyYWN0LmM6IExpa2V3aXNlLgoJKiBnZW5nZW5ydGwuYzogTGlrZXdpc2UuCgkqIGdlbmd0eXBlLmM6IExpa2V3aXNlLgoJKiBnZW5vcGluaXQuYzogTGlrZXdpc2UuCgkqIGdlbm91dHB1dC5jOiBMaWtld2lzZS4KCSogZ2VucGVlcC5jOiBMaWtld2lzZS4KCSogZ2VucmVjb2cuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbGliLmggKENQUF9BVF9OQU1FLCBDUFBfT0JKQ19TVFJJTkcpOiBOZXcgdG9rZW4gdHlwZXMuCgkoc3RydWN0IGNwcF9vcHRpb25zKTogQWRkIG5hcnJvd19jaGFyc2V0LCB3aWRlX2NoYXJzZXQsCglieXRlc19iaWdfZW5kaWFuIGZpZWxkcy4gIFJlbW92ZSBFQkNESUMgZmllbGQuCgkoY3BwX2luaXRfaWNvbnYsIGNwcF9pbnRlcnByZXRfc3RyaW5nKTogTmV3IGV4dGVybmFsIGludGVyZmFjZXMuCgoJKiBjcHBoYXNoLmg6IEluY2x1ZGUgPGljb252Lmg+IGlmIHdlIGhhdmUgaXQsIG90aGVyd2lzZQoJcHJvdmlkZSBhIGR1bW15IGRlZmluaXRpb24gb2YgaWNvbnZfdC4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IEFkZCBuYXJyb3dfY3NldF9kZXNjIGFuZCB3aWRlX2NzZXRfZGVzYyBmaWVsZHMuCgkoX2NwcF92YWxpZF91Y24pOiBVcGRhdGUgcHJvdG90eXBlLgoJKF9jcHBfZGVzdHJveV9pY29udik6IE5ldyBwcm90b3R5cGUuCgoJKiBkb2MvY3BwLnRleGk6IERvY3VtZW50IGNoYXJhY3RlciBzZXQgaGFuZGxpbmcuCgkqIGRvYy9jcHBvcHRzLnRleGk6IERvY3VtZW50IC1mZXhlYy1jaGFyc2V0PSBhbmQgLWZleGVjLXdpZGUtY2hhcnNldD0uCgkqIGRvYy9leHRlbmQudGV4aTogRGVsZXRlIGVudGlyZSBzZWN0aW9uIG9uIG11bHRpbGluZSBzdHJpbmdzLgoJUmV3cml0ZSBzZWN0aW9uIG9uIF9fRlVOQ1RJT05fXyBldGMgbm93IHRoYXQgdGhlc2UgYXJlCgl2YXJpYWJsZXMgaW4gQy4KCgkqIGNwcHVjbmlkLnRhYiwgY3BwdWNuaWQucGw6IE5ldyBmaWxlcy4KCSogY3BwdWNuaWQuaDogTmV3IGdlbmVyYXRlZCBmaWxlLgoJKiBjcHBjaGFyc2V0LmM6IEluY2x1ZGUgY3BwdWNuaWQuaC4gIExvdHMgb2YgY29tbWVudGFyeSBhZGRlZC4KCShpY29udl9vcGVuLCBpY29udiwgaWNvbnZfY2xvc2UpOiBQcm92aWRlIGR1bW15IGRlZmluaXRpb25zCglpZiAhSEFWRV9JQ09OVi4KCShTT1VSQ0VfQ0hBUlNFVCwgc3RydWN0IHN0cmJ1ZiwgaW5pdF9pY29udl9kZXNjLCBjcHBfaW5pdF9pY29udiwKCV9jcHBfZGVzdHJveV9pY29udiwgY29udmVydF9jc2V0LCB3aWR0aF90b19tYXNrLCBjb252ZXJ0X3VjbiwKCWVtaXRfbnVtZXJpY19lc2NhcGUsIGNvbnZlcnRfaGV4LCBjb252ZXJ0X29jdCwgY29udmVydF9lc2NhcGUsCgljcHBfaW50ZXJwcmV0X3N0cmluZywgbmFycm93X3N0cl90b19jaGFyY29uc3QsCgl3aWRlX3N0cl90b19jaGFyY29uc3QpOiBOZXcuCgkodWNuX3ZhbGlkX2luX2lkZW50aWZpZXIpOiBVc2UgYSBiaW5hcnkgc2VhcmNoIHRocm91Z2ggdGhlCgl1Y25yYW5nZXMgdGFibGUgZGVmaW5lZCBpbiBjcHB1Y25pZC5oLCBub3QgYSBsb25nIGNoYWluIG9mIGlmCglzdGF0ZW1lbnRzLgoJKF9jcHBfdmFsaWRfdWNuKTogQWRkIGEgbGltaXQgcG9pbnRlci4gIERvd25ncmFkZSAidW5pdmVyc2FsCgljaGFyYWN0ZXIgbmFtZXMgYXJlIG9ubHkgdmFsaWQgaW4gQysrIGFuZCBDOTkiIHRvIGEgd2FybmluZy4KCUlzc3VlIHRoZSAibWVhbmluZyBvZiBcW3VVXSBpcyBkaWZmZXJlbnQgaW4gdHJhZGl0aW9uYWwgQyIKCXdhcm5pbmcgaGVyZS4gIFRha2UgY2FyZSBub3QgdG8gbGV0IGljb252IHNlZSBhbiBpbnZhbGlkIFVDUwoJdmFsdWUgaWYgd2UgZ2V0IGEgbWFsZm9ybWVkIFVDTi4gIElzc3VlIGFuIGVycm9yIGlmIHdlIGRvbid0CgloYXZlIGljb252LgoJKGNwcF9pbnRlcnByZXRfY2hhcmNvbnN0KTogTW92ZWQgaGVyZSBmcm9tIGNwcGxleC5jLiAgVXNlCgljcHBfaW50ZXJwcmV0X3N0cmluZyB0byBkbyB0aGUgaGVhdnkgbGlmdGluZy4KCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBJbml0aWFsaXplIGJ5dGVzX2JpZ19lbmRpYW4sCgluYXJyb3dfY2hhcnNldCwgd2lkZV9jaGFyc2V0IGZpZWxkcyBvZiBvcHRpb25zIHN0cnVjdHVyZS4KCShjcHBfZGVzdHJveSk6IENhbGwgX2NwcF9kZXN0cm95X2ljb252LgoJKiBjcHBsZXguYyAoZm9ybXNfaWRlbnRpZmllcl9wKTogQWRqdXN0IGNhbGwgdG8gX2NwcF92YWxpZF91Y24uCgkobWF5YmVfcmVhZF91Y24sIGhleF9kaWdpdF92YWx1ZSwgY3BwX3BhcnNlX2VzY2FwZSk6IERlbGV0ZS4KCShjcHBfaW50ZXJwcmV0X2NoYXJjb25zdCk6IE1vdmVkIHRvIGNwcGNoYXJzZXQuYy4KCSogY3BwbGliLmMgKGRlcXVvdGVfc3RyaW5nKTogRGVsZXRlLgoJKGludGVycHJldF9zdHJpbmdfbm90cmFuc2xhdGUpOiBOZXcuCgkoZG9fbGluZSwgZG9fbGluZW1hcmtlcik6IFVzZSBpbnRlcnByZXRfc3RyaW5nX25vdHJhbnNsYXRlLgoKCSogTWFrZWZpbGUuaW4gKGNwcGNoYXJzZXQubyk6IERlcGVuZCBvbiBjcHB1Y25pZC5oLgoKCSogYy1jb21tb24uYyAoZm5hbWVfc3RyaW5nLCBjb21iaW5lX3N0cmluZ3MpOiBEZWxldGUuCgkqIGMtY29tbW9uLmggKGZuYW1lX3N0cmluZywgY29tYmluZV9zdHJpbmdzKTogRGVsZXRlIHByb3RvdHlwZXMuCgkqIGMtbGV4LmMgKGlnbm9yZV9lc2NhcGVfZmxhZyk6IERlbGV0ZS4KCShjYl9pZGVudCk6IFVzZSBjcHBfaW50ZXJwcmV0X3N0cmluZywgbm90IGxleF9zdHJpbmcuCgkoZ2V0X25vbnBhZGRpbmdfdG9rZW4pOiBOZXcgZnVuY3Rpb24uCgkoY19sZXgpOiBIYW5kbGUgT2JqZWN0aXZlLUMgQC1wcmVmaXhlZCBpZGVudGlmaWVycyBhbmQgc3RyaW5ncyBoZXJlLgoJQWRqdXN0IGNhbGxzIHRvIGxleF9zdHJpbmcuICBEb24ndCB3cml0ZSAqdmFsdWUgdHdpY2UuCgkobGV4X3N0cmluZyk6IE5vdyBoYW5kbGVzIHN0cmluZyBjb25zdGFudCBjb25jYXRlbmF0aW9uLgoJTW9zdCBvZiB0aGUgd29yayBoYW5kZWQgb2ZmIHRvIGNwcF9pbnRlcnByZXRfc3RyaW5nLgoJQ2FsbCBmaXhfc3RyaW5nX3R5cGUgaGVyZS4KCSogYy1wYXJzZS5pbiAoU1RSSU5HX0ZVTkNfTkFNRSwgVkFSX0ZVTkNfTkFNRSk6IFJlcGxhY2Ugd2l0aAoJRlVOQ19OQU1FLCB0aHJvdWdob3V0LgoJKE9CSkNfU1RSSU5HKTogTmV3IHRva2VuIHR5cGUuCgkocHJpbWFyeTpTVFJJTkcpOiBObyBuZWVkIHRvIGNhbGwgZml4X3N0cmluZ190eXBlIGhlcmUuCgkocHJpbWFyeTpvYmpjX3N0cmluZyk6IE1ha2UgdGhhdCBPQkpDX1NUUklORy4KCShvYmpjX3N0cmluZyBub250ZXJtaW5hbCk6IERlbGV0ZS4KCSh5eWxleG5hbWUpOiBEZWxldGUgY29kZSB0byBoYW5kbGUgZmFrZSBzdHJpbmcgY29uc3RhbnRzLgoJKHl5bGV4c3RyaW5nKTogRGVsZXRlIGVudGlyZWx5LgoJKF95eWxleCk6IEhhbmRsZSBDUFBfQVRfTkFNRSBhbmQgQ1BQX09CSkNfU1RSSU5HLiAgTm8gbmVlZAoJdG8gaGFuZGxlIENQUF9BVFNJR04uCgoJKiBjLm9wdCAoLWZleGVjLWNoYXJzZXQ9LCAtZndpZGUtZXhlYy1jaGFyc2V0PSk6IE5ldyBvcHRpb25zLgoJKiBjLW9wdHMuYyAobWlzc2luZ19hcmcsIGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUKCU9QVF9mZXhlY19jaGFyc2V0XyBhbmQgT1BUX2Z3aWRlX2V4ZWNfY2hhcnNldF8uCgkoY19jb21tb25faW5pdCk6IFNldCBjcHBfb3B0cy0+Ynl0ZXNfYmlnX2VuZGlhbiwgbm90CgljcHBfb3B0cy0+RUJDRElDLiAgQ2FsbCBjcHBfaW5pdF9pY29udi4KCShwcmludF9oZWxwKTogRG9jdW1lbnQgLWZleGVjLWNoYXJzZXQ9IGFuZCAtZmV4ZWMtd2lkZS1jaGFyc2V0PS4KCShUQVJHRVRfRUJDRElDKTogRGVsZXRlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0KTogTm8gbmVlZCB0bwoJaGFuZGxlIHN0cmluZyBjb25zdGFudCBjb25jYXRlbmF0aW9uLgoKMjAwMy0wNy0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IEZpeCB0eXBvcy4KCSogZG9jL2ludm9rZS50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGk6IExpa2V3aXNlLgoKMjAwMy0wNy0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9wYS9mcHRyLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjb25maWcvcGEvcGEtNjQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwLzYwMy5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvN3h4Lm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvZnJlZWJzZC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9zcGUuaDogTGlrZXdpc2UuCgoyMDAzLTA3LTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC8yMDY0Lm1kOiBDaGFuZ2UgR05VIENDIHRvIEdDQy4KCSogY29uZmlnL3MzOTAvMjA4NC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL2ZpeGRmZGkuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL2xpbnV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLW1vZGVzLmRlZjogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MHguaDogTGlrZXdpc2UuCgoyMDAzLTA3LTA0ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCVBSIGMvMTE0MjgKCSogZXhwci5jIChkb19zdG9yZV9mbGFnKTogUGFzcyBpbiB0aGUgY29ycmVjdCByZXN1bHQgdHlwZQoJd2hlbiBjYWxsaW5nIGZvbGRfc2luZ2xlX2JpdF90ZXN0LgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfc2luZ2xlX2JpdF90ZXN0KTogVXNlIHJlc3VsdF90eXBlIGZvciB0aGUKCXJlc3VsdCB3aGVuIGZvbGRpbmcgYSBzaWduIGJpdCB0ZXN0LgoKMjAwMy0wNy0wNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbnMpOiBOZWdhdGUgc2Vuc2Ugb2YgLWZhbGlnbi0gc3dpdGNoZXMuCgoyMDAzLTA3LTA0ICBILkouIEx1IDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZXBsYWNlIFBXRCB3aXRoIFBXRF9DT01NQU5ELgoKMjAwMy0wNy0wNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnbG9vcGFuYWwuYyAoY291bnRfc3RyYW5nZV9sb29wX2l0ZXJhdGlvbnMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGNvbnN0YW50X2l0ZXJhdGlvbnMsIGNvdW50X2xvb3BfaXRlcmF0aW9ucywgc2ltcGxlX2xvb3BfZXhpdF9wKToKCUhhbmRsZSBzdHJhbmdlIGxvb3BzLgoKMjAwMy0wNy0wNCAgVG9vbiBNb2VuZSAgPHRvb25AbW9lbmUuaW5kaXYubmx1dWcubmw+CgoJKiBpbnN0YWxsLnRleGk6IEV2ZW4gdGhlIGc3NyBtYW5wYWdlIGlzIGRlcml2ZWQgZnJvbQoJdGhlIGZ1bGwgZzc3IG1hbnVhbC4KCjIwMDMtMDctMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBBQk9VVC1OTFM6IERlbGV0ZS4KCSogaW50bDogRGVsZXRlIGVudGlyZSBkaXJlY3RvcnkuCgkqIGFjbG9jYWwubTQ6IEluY2x1ZGUgLi4vY29uZmlnL2dldHRleHQubTQuICBEZWxldGUKCUFDX0lTQ19QT1NJWCwgQU1fTEFOR0lORk9fQ09ERVNFVCwgam1fR0xJQkMyMSwgQU1fTENfTUVTU0FHRVMsCglBTV9QQVRIX1BST0dfV0lUSF9URVNULCBBTV9XSVRIX05MUywgYW5kIEFNX0dOVV9HRVRURVhULgoJKiBjb25maWd1cmUuaW46IFVzZSBDWV9HTlVfR0VUVEVYVCwgbm90IEFNX0dOVV9HRVRURVhULgoJUmVtb3ZlIGludGwvTWFrZWZpbGUgZnJvbSBhbGxfb3V0cHV0cy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmluOiBFeHB1bmdlIGFsbCByZWZlcmVuY2VzIHRvIGludGwgc3ViZGlyZWN0b3J5LgoJQWRkIC1JLi4vaW50bCB0byBJTkNMVURFUy4KCSogaW50bC5oOiBJbmNsdWRlIGxpYmludGwuaCBpZiBhbmQgb25seSBpZiBFTkFCTEVfTkxTIGlzIGRlZmluZWQuCgoyMDAzLTA3LTA0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWl4NTEuaCAoVEFSR0VUX0M5OV9GVU5DVElPTlMpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvYWl4NTIuaCAoVEFSR0VUX0M5OV9GVU5DVElPTlMpOiBMaWtld2lzZS4KCjIwMDMtMDctMDQgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzUyODcsIFBSIGMrKy83OTEwLCBQUiBjKysvMTEwMjEKCSogY29uZmlnL2kzODYvd2lubnQuYyAoaXg4Nl9oYW5kbGVfZGxsX2F0dHJpYnV0ZSk6IERvbid0IGFkZAoJZGxsaW1wb3J0IGF0dHJpYnV0ZSBpZiBmdW5jdGlvbiBpcyBkZWZpbmVkIGF0IGRlY2xhcmF0aW9uLCBidXQKCXJlcG9ydCBlcnJvciBpbnN0ZWFkLiBMaWtld2lzZSBmb3IgZGxsaW1wb3J0J2QgdmFyaWFibGUKCWRlZmluaXRpb25zLiAgU2V0IGltcGxpY2l0IFRSRUVfUFVCTElDIGZvciBkbGxpbXBvcnQnZCB2YXJpYWJsZXMKCWRlY2xhcmVkIHdpdGhpbiBmdW5jdGlvbnMsIFJlcG9ydCBlcnJvciBpZiBkbGxpbXBvcnQgb3IgZGxsZXhwb3J0CglzeW1ib2wgaXMgbm90IGdsb2JhbC4KCShpMzg2X3BlX2RsbGltcG9ydF9wKTogSWdub3JlIGRsbGltcG9ydCBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zCglpZiBkZWZpbmVkIGFmdGVyIGRlY2xhcmF0aW9uIG9yIGlmIGlubGluZWQuIERvbid0IGFsbG93IGRlZmluaXRpb24KCW9mIHN0YXRpYyBkYXRhIG1lbWJlcnMgb2YgQysrIGNsYXNzZXMuIERvbid0IGRsbGltcG9ydCB2aXJ0dWFsCgltZXRob2RzLgoJKGkzODZfcGVfbWFya19kbGxleHBvcnQpOiBXYXJuIGFib3V0IGluY29uc2lzdGVudCBkbGwgYXR0cmlidXRlcy4KCShpMzg2X3BlX21hcmtfZGxsaW1wb3J0KTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrcy4KCShpMzg2X3BlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBXYXJuIGlmIHRoZSBkbGxpbXBvcnQgYXR0cmlidXRlCglhbmQgc3ltYm9sIHByZWZpeCBoYXZlIGJlZW4gaW5zdGFudGlhdGVkIGFuZCB0aGVuIG92ZXJyaWRkZW4uCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGRsbGltcG9ydCBhbmQgZGxsZXhwb3J0IGF0dHJpYnV0ZXMuCgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX291dHB1dF9sYWJlbHJlZik6IEZpeCBpbmRlbnRzLgoKMjAwMy0wNy0wMyBVd2UgU3RpZWJlciA8dXdlQGthb3MtZ3JvdXAuZGU+CgoJKiBjb25maWcva2Fvcy5oIChDUFBfUFJFREVGSU5FUyk6IERlbGV0ZS4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTmV3LgoKMjAwMy0wNy0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1hdXgtaW5mby5jOiBJbmNsdWRlIHRvcGxldi5oIGFmdGVyIGMtdHJlZS5oLgoJKiBjLWNvbW1vbi5jOiBMaWtld2lzZS4KCShHQ0NfRElBR19TVFlMRSk6IFVuZGVmLgoJKiBjLXNlbWFudGljcy5jIChHQ0NfRElBR19TVFlMRSk6IERlZmluZS4KCSogYy10cmVlLmggKEdDQ19ESUFHX1NUWUxFKTogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuaCAoaW5mb3JtKTogTW92ZSBwcm90b3R5cGUgdG8gdG9wbGV2LmguCgkqIGp1bXAuYzogSW5jbHVkZSBkaWFnbm9zdGljLmggYmVmb3JlIHRvcGxldi5oLgoJKiB0b3BsZXYuaCAoR0NDX0RJQUdfU1RZTEUsIEFUVFJJQlVURV9HQ0NfRElBRyk6IERlZmluZS4KCSh3YXJuaW5nLCBlcnJvciwgZmF0YWxfZXJyb3IsIHBlZHdhcm4sIHNvcnJ5LCBpbmZvcm0sCgllcnJvcl9mb3JfYXNtLCB3YXJuaW5nX2Zvcl9hc20pOiBNYXJrIHdpdGggQVRUUklCVVRFX0dDQ19DWFhESUFHLgoKMjAwMy0wNy0wMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnbGF5b3V0LmMgKGNmZ19sYXlvdXRfZHVwbGljYXRlX2JiKTogRG8gbm90IHVwZGF0ZSBmcmVxdWVuY2llcwoJYXQgYWxsIGlmIGVkZ2UgaXMgbm90IHNwZWNpZmllZC4KCShjYW5fY29weV9iYnNfcCwgY29weV9iYnMpOiBOZXcuCgkqIGNmZ2xheW91dC5oIChjYW5fY29weV9iYnNfcCwgY29weV9iYnMpOiBEZWNsYXJlLgoJKiBjZmdsb29wLmMgKGdldF9sb29wX2JvZHkpOiBDb21tZW50IG1vcmUgcHJlY2lzZWx5LgoJKiBjZmdsb29wbWFuaXAuYyAoY29weV9iYnMsIHJlY29yZF9leGl0X2VkZ2VzKTogUmVtb3ZlZC4KCShzY2FsZV9iYnNfZnJlcXVlbmNpZXMpOiBGaXggY29tbWVudCB0eXBvLgoJKGNhbl9kdXBsaWNhdGVfbG9vcF9wKTogVXNlIGNhbl9jb3B5X2Jic19wLgoJKGR1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlKTogU2ltcGxpZnkgYnkgdXNpbmcgY29weV9iYnMuCgoyMDAzLTA3LTAzICBEZXZhbmcgUGF0ZWwgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBjLW9wdHMuYyAoY19jb21tb25fcGFyc2VfZmlsZSk6IFJlbW92ZSBleHRyYQoJZGVidWdfaG9va3MtPnN0YXJ0X3NvdXJjZV9maWxlIGNhbGwuCgoyMDAzLTA3LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlYWwuYyAocmVhbF90cnVuYywgcmVhbF9mbG9vciwgcmVhbF9jZWlsKTogTmV3IGZ1bmN0aW9ucwoJdG8gaW1wbGVtZW50IHRydW5jLCBmbG9vciBhbmQgY2VpbCByZXNwZWN0aXZlbHkuCgkqIHJlYWwuaCAocmVhbF90cnVuYywgcmVhbF9mbG9vciwgcmVhbF9jZWlsKTogUHJvdG90eXBlIGhlcmUuCgkqIGJ1aWx0aW5zLmMgKGludGVnZXJfdmFsdWVkX3JlYWxfcCk6IE5ldyBmdW5jdGlvbiB0byB0ZXN0IGlmCglhIGZsb2F0aW5nIHBvaW50IGV4cHJlc3Npb24gaGFzIGFuIGludGVnZXIgdmFsdWVkIHJlc3VsdC4KCShmb2xkX3RydW5jX3RyYW5zcGFyZW50X21hdGhmbik6IE9wdGltaXplIGZvbyhmb28oeCkpIGFzCglmb28oeCkgd2hlcmUgZm9vIGlzIGFuIGludGVnZXIgcm91bmRpbmcgZnVuY3Rpb24uICBTaW1pbGFybHksCglvcHRpbWl6ZSBmb28oYmFyKHgpKSBhcyBiYXIoeCksIGFuZCBmb28oKGRvdWJsZSkoaW50KXgpIGFzCgkoZG91YmxlKShpbnQpeCB3aGVuIGJvdGggZm9vIGFuZCBiYXIgYXJlIGludGVnZXIgcm91bmRpbmcKCWZ1bmN0aW9ucyBhbmQgd2UgZG9uJ3QgbmVlZCB0byBob25vciBlcnJuby4KCShmb2xkX2J1aWx0aW5fdHJ1bmMsIGZvbGRfYnVpbHRpbl9mbG9vciwgZm9sZF9idWlsdGluX2NlaWwpOgoJTmV3IGZ1bmN0aW9ucyB0byBmb2xkIHRydW5jLCBmbG9vciBhbmQgY2VpbC4KCShmb2xkX2J1aWx0aW4pOiBVc2UgZm9sZF9idWlsdGluX3RydW5jIHRvIGZvbGQgQlVJTFRfSU5fVFJVTkMqLAoJZm9sZF9idWlsdGluX2Zsb29yIHRvIGZvbGQgQlVJTFRfSU5fRkxPT1IqIGFuZCBmb2xkX2J1aWx0aW5fY2VpbAoJdG8gZm9sZCBCVUlMVF9JTl9DRUlMKi4KCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IEhhbmRsZSBGTE9BVF9FWFBSIGFuZAoJdGhlIHJlbWFpbmluZyBpbnRlZ2VyIHJvdW5kaW5nIGZ1bmN0aW9ucy4KCjIwMDMtMDctMDMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MpOiBVc2UKCVNQQVJDX0lOVF9BUkdfTUFYIHRvIGRldGVybWluZSB3aGVyZSB0byBzcGxpdCB1bm5hbWVkCgljb21wbGV4IEZQIGFyZ3VtZW50cy4KCjIwMDMtMDctMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJhc2ljLWJsb2NrLmggKGNyZWF0ZV9iYXNpY19ibG9jaywgbWVyZ2VfYmxvY2tzX25vbW92ZSk6IEtpbGwuCgkqIGNmZ2NsZWFudXAuYyAobWVyZ2VfYmxvY2tzKTogUmVuYW1lIHRvIG1lcmdlX2Jsb2Nrc19tb3ZlLgoJKG1lcmdlX2Jsb2Nrc19tb3ZlX3ByZWRlY2Vzc29yX25vanVtcHMsCgkgbWVyZ2VfYmxvY2tzX21vdmVfc3VjY2Vzc29yX25vanVtcHMpOiBVc2UgbWVyZ2VfYmxvY2tzLgoJKHRyeV9vcHRpbWl6ZV9jZmcpOiBVc2UgbWVyZ2VfYmxvY2tzX21vdmUuCgkqIGNmZ3J0bC5jIChjcmVhdGVfYmFzaWNfYmxvY2spOiBSZW5hbWUgdG8gcnRsX2NyZWF0ZV9iYXNpY19ibG9jay4KCShtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogUmVuYW1lIHRvIHJ0bF9tZXJnZV9ibG9ja3MuCgkoY2ZnX2xheW91dF9jcmVhdGVfYmFzaWNfYmxvY2spOiBOZXcuCgkocnRsX2Nhbl9tZXJnZV9ibG9ja3MpOiBOZXcuCgkoY2ZnX2xheW91dF9zcGxpdF9ibG9jayk6IERvIG5vdCBhbGxvYyBhdXggYnkgaGFuZC4KCSogY2ZnaG9va3MuaCAoY2ZnX2hvb2tzKTogQWRkIGNyZWF0ZV9iYXNpY19ibG9jaywgY2FuX21lcmdlX2Jsb2Nrc19wLAoJbWVyZ2VfYmxvY2tzLgoJKGNyZWF0ZV9iYXNpY19ibG9jaywgY2FuX21lcmdlX2Jsb2Nrc19wLCBtZXJnZV9ibG9ja3MpOiBOZXcgbWFjcm9zLgoJKiBjZmdsYXlvdXQuYyAoY2ZnX2xheW91dF9kdXBsaWNhdGVfYmIpOiBEbyBub3QgYWxsb2NhdGUgYXV4IGJ5IGhhbmQuCgkqIGNmZ2xvb3BtYW5pcC5jIChsb29wX3NwbGl0X2VkZ2Vfd2l0aCk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChtZXJnZV9pZl9ibG9jayk6IFVzZSBtZXJnZV9ibG9ja3Nfbm9tb3ZlLgoKCSogYmFzaWMtYmxvY2suaCAoYmFzaWNfYmxvY2tfZGVmKTogQWRkIGZpZWxkICdyYmknLgoJKiBiYi1yZW9yZGVyLmMgKGZpbmRfdHJhY2VzLCByb3RhdGVfbG9vcCwgbWFya19iYl92aXNpdGVkLAoJZmluZF90cmFjZXNfMV9yb3VuZCwgY29weV9iYiwgY29ubmVjdF90cmFjZXMpOiBVcGRhdGUgdXNlIG9mIHJiaS4KCSogY2ZnLmMgKGVudHJ5X2V4aXRfYmxvY2tzKTogQWRkIG5ldyBmaWVsZC4KCSogY2ZnbGF5b3V0LmM6IEluY2x1ZGUgYWxsb2MtcG9vbC5oOwoJKGNmZ19sYXlvdXRfcG9vbCk6IE5ldy4KCShyZWNvcmRfZWZmZWN0aXZlX2VuZHBvaW50cywgZml4dXBfcmVvcmRlcl9jaGFpbiwKCWZpeHVwX2ZhbGx0aHJ1X2V4aXRfcHJlZGVjZXNzb3IsIGNmZ19sYXlvdXRfZHVwbGljYXRlX2JiKTogVXBkYXRlIHVzZQoJb2YgcmJpLgoJKGNmZ19sYXlvdXRfaW5pdGlhbGl6ZV9yYmkpOiBOZXcgZnVuY3Rpb24uCgkoY2ZnX2xheW91dF9pbml0aWFsaXplKTogVXNlIGl0LgoJKGNmZ19sYXlvdXRfZmluYWxpemUpOiBDbGVhciByYmkgZmllbGRzLgoJKiBjZmdsYXlvdXQuaCAoUkJJKTogS2lsbC4KCShjZmdfbGF5b3V0X2luaXRpYWxpemVfcmJpKTogRGVjbGFyZS4KCSogY2ZnbG9vcG1hbmlwLmMgKGNvcHlfYmJzKTogVXNlIHJiaS4KCShyZWNvcmRfZXhpdF9lZGdlcyk6IExpa2V3aXNlLgoJKGR1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlKTogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jIChjZmdfbGF5b3V0X2NyZWF0ZV9iYXNpY19ibG9jayk6IFVzZQoJY2ZnX2xheW91dF9pbml0aWFsaXplX3JiaS4KCShjZmdfbGF5b3V0X3NwbGl0X2Jsb2NrKTogVXNlIHJiaS4KCShjZmdfbGF5b3V0X2RlbGV0ZV9ibG9jayk6IExpa2V3aXNlLgoJKiBsb29wLWluaXQuYyAobG9vcF9vcHRpbWl6ZXJfZmluYWxpemUpOiBMaWtld2lzZS4KCSogbG9vcC11bnN3aXRjaC5jICh1bnN3aXRjaF9sb29wKTogTGlrZXdpc2UuCgkqIHRyYWNlci5jIChzZWVuLCB0YWlsX2R1cGxpY2F0ZSwgbGF5b3V0X3N1cGVyYmxvY2tzKTogTGlrZXdpc2UuCgoJKiBjZmdydGwuYzogVXBkYXRlIGNvbW1lbnRzLgoJKHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6IE5ldyBhcmd1bWVudC4KCShyZWRpcmVjdF9icmFuY2hfZWRnZSk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKHJ0bF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiAuLi4gdGhpcyBvbmUuCgkodXBkYXRlX2NmZ19hZnRlcl9ibG9ja19tZXJnaW5nKTogQnJlYWsgb3V0IGZyb20gLi4uCgkocnRsX21lcmdlX2Jsb2Nrcyk6IC4uLiB0aGlzIG9uZS4KCShjZmdfbGF5b3V0X3NwbGl0X2VkZ2UpOiBOZXcuCgkoY2ZnX2xheW91dF9tZXJnZV9ibG9ja3MpOiBOZXcuCgkoY2ZnX2xheW91dF9jYW5fbWVyZ2VfYmxvY2tzX3ApOiBOZXcuCgkoY2ZnX2xheW91dF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiBSZW9yZ2FuaXplLgoJKGNmZ19sYXlvdXRfcnRsX2NmZ19ob29rcyk6IEZpbGwgaW4uCgkoY2ZnX2xheW91dF9kZWxldGVfYmxvY2spOiBLaWxsIGJhcnJpZXJzLgoJKiBjZmdhbmFsLmMgKGNhbl9mYWxsdGhydSk6IERlYWwgd2l0aCBleGl0IGJsb2NrcwoJKiBjZmdsYXlvdXQuYyAoY2ZnX2xheW91dF9mdW5jdGlvbl9oZWFkZXIpOiBOZXcgZnVuY3Rpb24KCShyZWNvcmRfZWZmZWN0aXZlX2VuZHBvaW50cyk6IFJlY29yZCBmdW5jdGlvbiBoZWFkZXIuCgkoZml4dXBfcmVvcmRlcl9jaGFpbik6IEZpeHVwIGRlYWQganVtcHRhYmxlczsgcGxhY2UgaGVhZGVyCgoJKiBiYXNpYy1ibG9jay5oIChDTEVBTlVQX0NGR0xBWU9VVCk6IE5ldyBmbGFnLgoJKiBiYi1yZW9yZGVyLmMgKGNmZ19sYXlvdXRfaW5pdGlhbGl6ZSk6IFVwZGF0ZSBjYWxsLgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9vcHRpbWl6ZV9jZmcpOiBTdXByZXNzIG9wdGltaXphdGlvbnMgb2YgZmFsbHRocnUKCWVkZ2VzIGluIGNmZ2xheW91dCBtb2RlLgoJKiBjZmdsYXlvdXQuYyAoY2xlYW51cF91bmNvbmRpdGlvbmFsX2p1bXBzKTogS2lsbC4KCShjZmdfbGF5b3V0X2luaXRpYWxpemUpOiBLaWxsIGFncnVtZW50IGxvb3BzOyB1c2UgY2ZnY2xlYW51cC4KCSogY2ZnbGF5b3V0LmggKGNmZ19sYXlvdXRfaW5pdGlhbGl6ZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGNmZ2xvb3AuaCAoQ1BfSU5TSURFX0NGR0xBWU9VVCk6IEtpbGwuCgkqIGNmZ2xvb3BtYW5pcC5jIChsb29wX3NwbGl0X2VkZ2Vfd2l0aCk6IFVzZSBzcGxpdF9lZGdlLgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9ibG9jayk6IERvIG5vdCBjcmFzaCB3aGVuIGJhc2ljIGJsb2NrIGVuZHMKCWJ5IGZpcnN0IGluc24gaW4gdGhlIGNoYWluLgoJKiBsb29wLWluaXQuYyAobG9vcF9vcHRpbWl6ZXJfaW5pdCk6ICBGaXJzdCBlbnRlciBjZmdsYXlvdXQgbW9kZTsgbGF0ZXIKCWRvIGxvb3AgZGlzY292ZXJ5LgoJKiB0cmFjZXIuYyAodHJhY2VyKTogVXBkYXRlIGNhbGwgb2YgY2ZnX2xheW91dF9pbml0aWFsaXplLgoKMjAwMy0wNy0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW46IFVzZSBkZXBlbmRlbmN5IHZhcmlhYmxlcyBpbiBsaWV1IG9mIGV4cGxpY2l0CglmaWxlcyB0aHJvdWdob3V0LgoKMjAwMy0wNy0wMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogcnRsLmggKEVDRl8qLCBmbGFnc19mcm9tX2RlY2xfb3JfdHlwZSk6IE1vdmUgZnJvbSBoZXJlLi4uCgkqIHRyZWUuaDogLi4udG8gaGVyZS4KCjIwMDMtMDctMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvczM5MC8yMDY0Lm1kOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL3MzOTAvMjA4NC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jOiBMaWtld2lzZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15LWFiaTogRml4IGEgdHlwby4KCjIwMDMtMDctMDMgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3Qub3JnPgoKCSogTWFrZWZpbGUuaW4gKGlmY3Z0Lm8pOiBEZXBlbmQgb24gT1BUQUJTX0guCgoyMDAzLTA3LTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKHNhdmVfYXJndik6IERlbGV0ZS4KCjIwMDMtMDctMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRhcmdldC8xMDcwMAoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2XzEpOiBUaGVyZSdzIG5vdGhpbmcgdGhhdCBjYW4gYmUgZG9uZQoJaWYgdGhlIGV4cHJlc3Npb24gaXMgYSBTQVZFX0VYUFIuCgoyMDAzLTA3LTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL20zMnIvbTMyci5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jOiBMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5jOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9uZXRic2QuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTAzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZGJ4b3V0LmMgKHBlbmRpbmdfYmluY2xzKTogTW92ZSBkZWNsIGRvd24gaW5zaWRlCglEQlhfREVCVUdHSU5HX0lORk8gfHwgWENPRkZfREVCVUdHSU5HX0lORk8gc2VjdGlvbi4KCjIwMDMtMDctMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGwuaCAoTk9URV9EQVRBKTogUmVmZXIgdG8gd2hvbGUgdW5pb24uCgkqIGVtaXQtcnRsLmMgKGVtaXRfbm90ZSk6IFVzZSBtZW1zZXQgdG8gY2xlYXIgTk9URV9EQVRBLgoKMjAwMy0wNy0wMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTEzODEKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogQ2hlY2sgdGhhdAoJdHdvIGVxdWFsIG9wZXJhbmRzIGhhdmUgbm8gc2lkZS1lZmZlY3RzIGJlZm9yZSBzaW1wbGlmeWluZwoJdGhlIGNvbXBhcmlzb24uCgoyMDAzLTA3LTAyICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZXhwci5jIChkb19zdG9yZV9mbGFnKTogUmVtb3ZlIHNwZWNpYWwgY2FzZSBmb2xkaW5nIGZvcgoJc2luZ2xlIGJpdCB0ZXN0cy4gIEluc3RlYWQgY2FsbCBiYWNrIGludG8gdGhlIGNvbW1vbml6ZWQgZm9sZGVyCglyb3V0aW5lLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfc2luZ2xlX2JpdF90ZXN0KTogTmV3IGZ1bmN0aW9uLCBtb3N0bHkKCWV4dHJhY3RlZCBmcm9tIGRvX3N0b3JlX2ZsYWcsIHdpdGggYW4gYWRkaXRpb25hbCBjYXNlIGV4dHJhY3RlZAoJZnJvbSBmb2xkLgoJKGZvbGQpOiBDYWxsIGZvbGRfc2luZ2xlX2JpdF90ZXN0IGFwcHJvcHJpYXRlbHkuCgkqIHRyZWUuaCAoZm9sZF9zaW5nbGVfYml0X3Rlc3QpOiBQcm90b3R5cGUuCgoyMDAzLTA3LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3lzdGVtLmg6IEluY2x1ZGUgZmlsZW5hbWVzLmguCgkoSVNfRElSX1NFUEFSQVRPUiwgSVNfQUJTT0xVVEVfUEFUSE5BTUUpOiBEb24ndCBkZWZpbmUuCgkoRElSX1NFUEFSQVRPUiwgRElSX1NFUEFSQVRPUl8yKTogSWYgbm90IGFscmVhZHkgZGVmaW5lZCwKCWRlZmluZSBiYXNlZCBvbiBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTS4KCSogY29uZmlnL2kzODYveG0tY3lnd2luLmgsIGNvbmZpZy9pMzg2L3htLWRqZ3BwLmgKCSogY29uZmlnL2kzODYveG0tbWluZ3czMi5oOiBEb24ndCBkZWZpbmUKCUhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNLAoJRElSX1NFUEFSQVRPUiwgb3IgRElSX1NFUEFSQVRPUl8yLgoJKiBkb2MvaG9zdGNvbmZpZy50ZXhpOiBVcGRhdGUgdG8gbWF0Y2guCgoJKiBjcHBmaWxlcy5jLCBnY2MuYywgZ2Vuc3VwcG9ydC5jLCBwcm90b2l6ZS5jLAoJY29uZmlnL2kzODYvY3lnd2luLmg6CglVc2UgSVNfQUJTT0xVVEVfUEFUSCB0aHJvdWdob3V0LgoJKiBnY2MuYyAoRElSX1VQKTogRGVsZXRlLCB1bnVzZWQuCgkqIHByb3RvaXplLmMgKElTX1NBTUVfUEFUSCk6IERlZmluZSBpbiB0ZXJtcyBvZgoJRklMRU5BTUVfQ01QLgoJKGlzX2Fic3BhdGgpOiBEZWxldGUuCgoyMDAzLTA3LTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2kzODYvZW1taW50cmluLmg6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9zY281Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pdGFuaXVtMi5tZDogTGlrZXdpc2UuCgoyMDAzLTA3LTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBkYnhvdXQuYyAocGVuZGluZ19iaW5jbHMpOiBSZXBsYWNlIERCWF9VU0VfQklOQ0xTIHdpdGgKCURCWF9VU0VfQklOQ0wuCgkoZW1pdF9iaW5jbF9zdGFiKTogU2FtZS4KCShlbWl0X3BlbmRpbmdfYmluY2xzKTogU2FtZS4KCjIwMDMtMDctMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoY29tcHV0ZV9tb3ZfbGVuZ3RoKTogRml4IHRoZSBsZW5ndGggb2YKCWxvYWRpbmcgQ09OU1QwX1JUWCAoU0Ztb2RlKS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKENPTlNUX0RPVUJMRV9PS19GT1JfTEVUVEVSX1ApOiBDaGFuZ2UKCSdHJyB0byBDT05TVDBfUlRYIChTRm1vZGUpLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKG1vdnNmX2g4MzAwKTogQ2hhbmdlIHRoZSBmaXJzdAoJY29uc3RyYWludCB0byAnRycuCgkobW92c2ZfaDgzMDBoKTogTGlrZXdpc2UuCgoyMDAzLTA3LTAyICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLWNvbW1vbi5oIChjX2NvbW1vbl9pbml0X29wdGlvbnMpOiBOZXcgcHJvdG90eXBlLgoJKiBjLW9wdHMuYyAoZGVmZXJyZWRfc2l6ZSk6IFJlbW92ZS4KCShkZWZlcl9vcHQpOiBBcnJheSBpcyBub3cgcHJlLWFsbG9jYXRlZC4KCShjX2NvbW1vbl9pbml0X29wdGlvbnMpOiBQcmUtYWxsb2NhdGUgZGVmZXJyZWRfb3B0cy4gIE1ha2UKCWxhbmdfZmxhZ3MgdW5zaWduZWQuCgkocHVzaF9jb21tYW5kX2xpbmVfb3B0aW9ucyk6IEZyZWUgZGVmZXJyZWRfb3B0cy4KCSogaG9va3MuYyAoaG9va191aW50X3VpbnRfY29uc3RjaGFycHRycHRyXzApOiBOZXcuCgkqIGhvb2tzLmggKGhvb2tfdWludF91aW50X2NvbnN0Y2hhcnB0cnB0cl8wKTogTmV3LgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfSU5JVF9PUFRJT05TKTogVXBkYXRlLgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3MpOiBOZXcgcHJvdG90eXBlIGZvciBpbml0X29wdGlvbnMuCgkqIG1haW4uYyAobWFpbik6IENhc3QgYXJndi4KCSogb3B0cy5jIChoYW5kbGVfb3B0aW9uLCBoYW5kbGVfb3B0aW9ucyk6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKGRlY29kZV9vcHRpb25zKTogc2F2ZV9hcmdjLCBzYXZlX2FyZ3YgYXJlIG5vdCBnbG9iYWwuICBDb25zdGlmeS4KCSogb3B0cy5oIChkZWNvZGVfb3B0aW9ucyk6IE5ldyBwcm90b3R5cGUuCgkqIHRvcGxldi5jIChnZW5lcmFsX2luaXQpOiBOZXcgcHJvdG95cGUuCgkoc2F2ZV9hcmd2KTogTWFrZSBzdGF0aWMuCgkoc2F2ZV9hcmdjKTogUmVtb3ZlLgoJKHByaW50X3N3aXRjaF92YWx1ZXMsIGdlbmVyYWxfaW5pdCk6IENvbnN0aWZ5LgoJKHRvcGxldl9tYWluKTogU2F2ZSBhcmd2LgoJKiB0b3BsZXYuaCAodG9wbGV2X21haW4pOiBVcGRhdGUgcHJvdG90eXBlLgoJKHNhdmVfYXJnYywgc2F2ZV9hcmd2KTogUmVtb3ZlLgoKMjAwMy0wNy0wMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZGJ4b3V0LmMgKHBlbmRpbmdfYmluY2xzKTogR3VhcmQgd2l0aCBEQlhfVVNFX0JJTkNMUy4KCShlbWl0X2JpbmNsX3N0YWIpOiBTYW1lLgoJKGVtaXRfcGVuZGluZ19iaW5jbHMpOiBTYW1lLgoKMjAwMy0wNy0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTEwNzIKCSogZ2luY2x1ZGUvc3RkZGVmLmggKG9mZnNldG9mKTogUmVtb3ZlIGNhc3QgdG8gJ2NoYXIgJicuIEV4cGxhaW4gd2h5LgoKMjAwMy0wNy0wMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGRieG91dC5jIChwZW5kaW5nX2JpbmNscyk6IE9ubHkgZGVmaW5lIGlmIERCWF9ERUJVR0dJTkdfSU5GTy4KCjIwMDMtMDctMDIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExMjEwCgkqIGV4cHIuYyAoaGFuZGxlZF9jb21wb25lbnRfcCkgW05PUF9FWFBSXTogQWRkID8/PyBub3RlCglhYm91dCB0aGUgYmVoYXZpb3VyIHdpdGggcmVnYXJkIHRvIGJpdGZpZWxkcy4KCSogZm9sZC1jb25zdCAoZGVjb2RlX2ZpZWxkX3JlZmVyZW5jZSk6IFJlY29yZCBvdXRlcm1vc3QgdHlwZSBpbgoJY2FzZSB0aGUgZXhwcmVzc2lvbiBpcyBhIE5PUC4gU3RyaXAgYWxsIE5PUHMuIFNldCB0aGUgc2lnbmVkbmVzcwoJdG8gdGhhdCBvZiB0aGUgb3V0ZXJtb3N0IHR5cGUgKGlmIGFueSkgd2hlbiB0aGUgYml0c2l6ZSBpcyBlcXVhbAoJdG8gdGhlIHNpemUgb2YgdGhlIHR5cGUuCgoyMDAzLTA3LTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChhZGRzaTMpOiBSZW1vdmUgd29ya2Fyb3VuZCBmb3IgYWRkcyBvZiAtMzI3NjguCgkoYWRkc2kzX2ludGVybmFsLCBhZGRkaTMsIGFkZGRpM19pbnRlcm5hbF8yKTogTGlrZXdpc2UuCgkoYWRkZGkzX2ludGVybmFsXzMsIGFkZHNpM19pbnRlcm5hbF8yKTogTGlrZXdpc2UuCgoyMDAzLTA3LTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgbmV3IGZpZWxkczoKCWlnbm9yZV9oYXphcmRfbGVuZ3RoX3AgYW5kIGFsbF9ub3Jlb3JkZXJfcC4KCShtaXBzX2ZsYWdfZGVsYXllZF9icmFuY2gpOiBOZXcgdmFyaWFibGUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFRyZWF0ICcvJyBhcyBhbiBvcGVyYW5kIHB1bmN0dWF0aW9uIGNoYXJhY3Rlci4KCVNldCB1cCBtaXBzX2ZsYWdfZGVsYXllZF9icmFuY2guCgkocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAnLycuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBQdXQgdGhlIHdob2xlIGZ1bmN0aW9uIGluCgkuc2V0IG5vcmVvcmRlciBhbmQgLnNldCBub21hY3JvIGlmIGFsbF9ub3Jlb3JkZXJfcCBpcyB0cnVlLgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogRW5kIHRoZSBub3Jlb3JkZXIvbm9tYWNybyBzZXF1ZW5jZS4KCShtaXBzMTZfb3B0aW1pemVfZ3ApOiBSZW1vdmUgImZpcnN0IGluc24iIHBhcmFtZXRlci4KCShtaXBzMTZfbGF5X291dF9jb25zdGFudHMpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIG1pcHNfcmVvcmcuCgkobWlwc19hdm9pZF9oYXphcmQsIG1pcHNfYXZvaWRfaGF6YXJkcyk6IE5ldyBmdW5jdGlvbnMuCgkobWlwc19yZW9yZyk6IEZvciBtaXBzMTYgY29kZSwgY2FsbCBtaXBzMTZfbGF5X291dF9jb25zdGFudAoJYW5kIChvcHRpb25hbGx5KSBtaXBzMTZfb3B0aW1pemUuICBJZiBUQVJHRVRfRVhQTElDSVRfUkVMT0NTLAoJZG8gZGVsYXllZC1icmFuY2ggc2NoZWR1bGluZyBmb2xsb3dlZCBieSBoYXphcmQgZGV0ZWN0aW9uLgoJKG1pcHNfYWRqdXN0X2luc25fbGVuZ3RoKTogT25seSBhY2NvdW50IGZvciBoYXphcmRzIGlmCgkhaWdub3JlX2hhemFyZF9sZW5ndGhfcC4KCShtaXBzX291dHB1dF9sb2FkX2xhYmVsKTogQWRkIGEgbm9wIHRvIHRoZSBvMzIgc2VxdWVuY2UgaWYKCXRoZSB0YXJnZXQgc3VmZmVycyBmcm9tIGxvYWQgZGVsYXlzLgoJKG1pcHNfb3V0cHV0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IEFkZCAlLyB0byB0aGUgZW5kIG9mIGJyYW5jaGVzLgoJKG1pcHNfb3V0cHV0X2RpdmlzaW9uKTogRmlsbCB0aGUgYnJhbmNoIGRlbGF5IHNsb3Qgd2l0aCAlIy4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogUmVtb3ZlIHJlZHVuZGFudCAnJSonIGZyb20gbWlwczE2IGJyYW5jaAoJaW5zdHJ1Y3Rpb25zLiAgRW5kIGFsbCBvdGhlciAlKiBicmFuY2hlcyB3aXRoICUvLgoJKGZmc3NpMiwgZmZzZGkyKTogRml4IGxlbmd0aHMuCgkodHJ1bmNkaXNpMiwgdHJ1bmNkaWhpMiwgdHJ1bmNkaXFpMik6IEFkZCBzdG9yZSBhdHRyaWJ1dGVzLgoJKGZpeF90cnVuY2Rmc2kyX21hY3JvKTogVHVybiBvZmYgLnNldCBub21hY3JvIGlmIGFwcHJvcHJpYXRlLgoJKGZpeF90cnVuY3Nmc2kyX21hY3JvKTogTGlrZXdpc2UuCgkobW92X2x3bCk6IFNldCBoYXphcmQgdG8gIm5vbmUiLgoJKGFzaGxkaTNfaW50ZXJuYWwpOiBGaWxsIHRoZSBicmFuY2ggZGVsYXkgc2xvdCB3aXRoICUjLgoJKGFzaHJkaTNfaW50ZXJuYWwsIGxzaHJkaTNfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShleGNlcHRpb25fcmVjZWl2ZXIpOiBFeHBsaWNpdGx5IHNldCAkMjguCgkoaGF6YXJkX25vcCk6IE5ldyBwYXR0ZXJuLgoKMjAwMy0wNy0wMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfdW5pdCk6IFNldCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wKCWJlZm9yZSBjYWxsaW5nIHRyZWVfaW5saW5hYmxlX2Z1bmN0aW9uX3AuCgoyMDAzLTA3LTAyICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGlyaXhfc3RkaW9fdmFfbGlzdCk6IEFwcGx5IHRvIElSSVggNi41Cgk8aW50ZXJuYWwvc3RkaW9fY29yZS5oPiB0b28uCgkoc3RkaW9fdmFfbGlzdCk6IEFwcGx5IHRvIElSSVggNi41IDxpbnRlcm5hbC9zdGRpb19jb3JlLmg+IGFuZAoJPGludGVybmFsL3djaGFyX2NvcmUuaD4gdG9vLgoJU3Vic3RpdHV0ZSB2YV9saXN0IHVzZXMgaW4gaW5saW5lIGRlZmluaXRpb24uCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTAyICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKFNFVF9GSUxFX05VTUJFUik6IE1vdmVkIGhlcmUgZnJvbSBpcmlzMy5oLgoJVW5kZWYgYmVmb3JlIHJlZGVmaW5pdGlvbi4KCShMQUJFTF9BRlRFUl9MT0MpOiBMaWtld2lzZS4KCShERUZBVUxUX1NJR05FRF9DSEFSKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9BU0NJSSk6IE1vdmVkIGhlcmUgZnJvbSBpcmlzNC5oLgoJRml4IElSSVggc3BlbGxpbmcuCgoJKiBjb25maWcvbWlwcy9pcmlzMy5oOiBSZW1vdmUsIHVudXNlZC4KCSogY29uZmlnL21pcHMvaXJpczQuaDogTGlrZXdpc2UuCgoJKiBjb25maWcvbWlwcy9taXBzLmggKFNUQUNLX0FSR1NfQURKVVNUKTogUmVtb3ZlLCB1bnVzZWQuCgoJKiBjb25maWcvbWlwcy9pcmlzNS5oIChUQVJHRVRfREVGQVVMVCk6IE1vdmUgLi4uCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2Km8zMiwgbWlwcy1zZ2ktaXJpeDUqKTogLi4uIGhlcmUgdG8KCXRhcmdldF9jcHVfZGVmYXVsdC4KCgkqIGNvbmZpZy9taXBzL2lyaXM1Lmg6IE1vdmUgZXhwbGljaXQgaW5jbHVkZXMgLi4uCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2Km8zMiwgbWlwcy1zZ2ktaXJpeDUqKTogLi4uIGhlcmUuCgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChNSVBTX0lTQV9ERUZBVUxULCBNSVBTX0FCSV9ERUZBVUxUKTogTW92ZSAuLi4KCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqLCBtaXBzLXNnaS1pcml4NWNyb3NzNjQpOiAuLi4gaGVyZSB0bwoJdG1fZGVmaW5lcy4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKFRBUkdFVF9ERUZBVUxUKTogTW92ZSAuLi4KCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqLCBtaXBzLXNnaS1pcml4NWNyb3NzNjQpOiAuLi4gaGVyZSB0bwoJdGFyZ2V0X2NwdV9kZWZhdWx0LgoKCSogY29uZmlnL21pcHMvaXJpczYuaDogRml4IElSSVggc3BlbGxpbmcuCgkoTVVMVElMSUJfREVGQVVMVFMpOiBVbmRlZiBiZWZvcmUgcmVkZWZpbml0aW9uLgoKCSogY29uZmlnL21pcHMvaXJpczYuaDogTW92ZSBleHBsaWNpdCBpbmNsdWRlcyAuLi4KCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqLCBtaXBzLXNnaS1pcml4NWNyb3NzNjQpOiAuLi4gaGVyZS4KCjIwMDMtMDctMDIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfbWFya19uZWVkZWRfbm9kZSwgY2dyYXBoX3ZhcnBvb2xfbWFya19uZWVkZWRfbm9kZSwKCWNncmFwaF92YXJwb29sX2ZpbmFsaXplX2RlY2wsIGNncmFwaF92YXJwb29sX2Fzc2VtYmxlX3BlbmRpbmdfZGVjbHMpOgoJVXNlIG5leHRfbmVlZGVkIGZpZWxkIGluc3RlYWQgb2YgYXV4IHRvIG1haW50YWluIHRoZSBxdWV1ZS4KCSogY2dyYXBoLmggKGNncmFwaF9ub2RlKTogQWRkIG5leHRfbmVlZGVkLgoJKGNncmFwaF92YXJwb29sX25vZGUpOiBBZGQgbmV4dF9uZWVkZWQ7IHJlbW92ZSBhdXguCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBVc2UgbmV4dF9uZWVkZWQuCgoyMDAzLTA3LTAyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IFNldCBmaW5hbGl6ZWQuCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogRG8gbm90IGV4YW1pbmUgaW5saW5hYmxpbGl0eS4KCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCk6IERvIGl0IGhlcmUuCgkqIGNncmFwaC5oIChjZ3JhcGhfbG9jYWxfaW5mbyk6IEFkZCBmaW5hbGl6ZWQgZmllbGQuCgoyMDAzLTA3LTAyICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGdnYy1jb21tb24uYyAoZ3RfcGNoX3NhdmUpOiBDYXN0IE1BUF9GQUlMRUQgdG8gdm9pZCAqLgoJKGd0X3BjaF9yZXN0b3JlKTogTGlrZXdpc2UuCgoyMDAzLTA3LTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjb25maWcvYWxwaGEvZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS90LWFybS1jb2ZmOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS90LXN0cm9uZ2FybS1wZTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0veHNjYWxlLWVsZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIuaDogTGlrZXdpc2UuCgoyMDAzLTA3LTAxICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogc3RtdC5jIChhbnlfcGVuZGluZ19jbGVhbnVwcyk6IFJlbW92ZSBhbm90aGVyIHJlZHVuZGFudCB0ZXN0LgoKMjAwMy0wNy0wMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGN0cntzLGR9aV9pbnRlcm5hbD8pOiBBZGQgZWFybHljbG9iYmVyCglmb3IgTUVNIGNhc2UuCgoyMDAzLTA3LTAxICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogZGJ4b3V0LmMgKERCWE9VVF9ERUNSX05FU1RJTkcpOiBFbWl0IHBlbmRpbmcgYmluY2xzLCBpZiByZXF1aXJlZC4KCShiaW5jbHN0YXR1cyk6IE5ldy4KCShzdHJ1Y3QgZGJ4X2ZpbGUpOiBOZXcgbWVtYmVycyAtIGJpbmNsX3N0YXR1cywgcGVuZGluZ19iaW5jbF9uYW1lIGFuZAoJcHJldi4KCShwZW5kaW5nX2JpbmNscyk6IE5ldy4KCShkYnhvdXRfaW5pdCk6IEluaXRpYWxpemUgbmV3IGRieF9maWxlIG1lbWJlcnMuCgkoZGJ4b3V0X3N0YXJ0X3NvdXJjZV9maWxlKTogU2FtZS4KCShlbWl0X2JpbmNsX3N0YWIpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9wZW5kaW5nX2JpbmNscyk6IFNhbWUuCgkoZW1pdF9wZW5kaW5nX2JpbmNsc19pZl9yZXF1aXJlZCk6IFNhbWUuCgkoZGJ4b3V0X2VuZF9zb3VyY2VfZmlsZSk6IEVtaXQgRUlOQ0wgc3RhYiBvbmx5IGlmIEJJTkNMIGlzICBhbHJlYWR5Cglwcm9jZXNzZWQuCgkoZGJ4b3V0X2JlZ2luX2Jsb2NrKTogRW1pdCBwZW5kaW5nIEJJTkNMIHN0YWJzLgoJKGRieG91dF9lbmRfYmxvY2spOiBTYW1lLgoJKGRieG91dF9mdW5jdGlvbl9kZWNsKTogU2FtZS4KCShkYnhvdXRfY29udGludWUpOiBTYW1lLgoJKGRieG91dF90eXBlKTogU2FtZS4KCShkYnhvdXRfY2xhc3NfbmFtZV9xdWFsaWZpZXJzKTogU2FtZS4KCShkYnhvdXRfc3ltYm9sKTogU2FtZS4KCShkYnhvdXRfc3ltYm9sX2xvY2F0aW9uKTogU2FtZS4KCShkYnhvdXRfcGFybXMpOiBTYW1lLgoKMjAwMy0wNy0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2Nhc2VfbGFiZWwpOiBGaXggZm9ybWF0IHNwZWNpZmllciBidWcuCgkqIGNmZ3J0bC5jIChydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogTGlrZXdpc2UuCgoyMDAzLTA3LTAxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBmb2xkLWNvbnN0LmM6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBmdW5jdGlvbi5jOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uaDogTGlrZXdpc2UuCgoyMDAzLTA3LTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2NvbnRyaWIudGV4aTogRml4IHR5cG9zLgoJKiBkb2MvaW52b2tlLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvcGFzc2VzLnRleGk6IExpa2V3aXNlLgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMDctMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBiYXNpYy1ibG9jay5oOiBGaXggY29tbWVudCB0eXBvcy4KCSogYmItcmVvcmRlci5jOiBMaWtld2lzZS4KCSogYy1mb3JtYXQuYzogTGlrZXdpc2UuCgkqIGNmZ2NsZWFudXAuYzogTGlrZXdpc2UuCgkqIGNmZ2hvb2tzLmg6IExpa2V3aXNlLgoJKiBjZmdsb29wLmM6IExpa2V3aXNlLgoJKiBjZmdsb29wbWFuaXAuYzogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jOiBMaWtld2lzZS4KCSogY2dyYXBoLmg6IExpa2V3aXNlLgoJKiBjZ3JhcGh1bml0LmM6IExpa2V3aXNlLgoJKiBjb21iaW5lLmM6IExpa2V3aXNlLgoJKiBjb252ZXJ0LmM6IExpa2V3aXNlLgoJKiBkYnhvdXQuYzogTGlrZXdpc2UuCgkqIGRmLmM6IExpa2V3aXNlLgoJKiBkZi5oOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBldC1mb3Jlc3QuaDogTGlrZXdpc2UuCgkqIGZsb3cuYzogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYzogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmg6IExpa2V3aXNlLgoJKiBnY292LWlvLmg6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoJKiBnZW5hdXRvbWF0YS5jOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jOiBMaWtld2lzZS4KCSogZ2djLXBhZ2UuYzogTGlrZXdpc2UuCgkqIGxvb3AtdW5yb2xsLmM6IExpa2V3aXNlLgoJKiBsb29wLXVuc3dpdGNoLmM6IExpa2V3aXNlLgoJKiBsb29wLmM6IExpa2V3aXNlLgoJKiBtaXBzLXRmaWxlLmM6IExpa2V3aXNlLgoJKiBvcHRhYnMuYzogTGlrZXdpc2UuCgkqIHJhLWJ1aWxkLmM6IExpa2V3aXNlLgoJKiByYS1jb2xvcml6ZS5jOiBMaWtld2lzZS4KCSogcmEtcmV3cml0ZS5jOiBMaWtld2lzZS4KCSogcmEuaDogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYzogTGlrZXdpc2UuCgkqIHJlbG9hZC5jOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jOiBMaWtld2lzZS4KCSogc2NoZWQtZWJiLmM6IExpa2V3aXNlLgoJKiBzY2hlZC1pbnQuaDogTGlrZXdpc2UuCgkqIHNjaGVkLXZpcy5jOiBMaWtld2lzZS4KCSogc3JlYWwuYzogTGlrZXdpc2UuCgkqIHNzYS1jY3AuYzogTGlrZXdpc2UuCgkqIHNzYS5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jOiBMaWtld2lzZS4KCSogdmFsdWUtcHJvZi5jOiBMaWtld2lzZS4KCSogdmFsdWUtcHJvZi5oOiBMaWtld2lzZS4KCjIwMDMtMDctMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGwuaCAoZW1pdF9saW5lX25vdGVfYWZ0ZXIpOiBSZW1vdmUuCgkoZW1pdF9ub3RlX2NvcHlfYWZ0ZXIsIGVtaXRfbm90ZV9jb3B5KTogTmV3LgoJKiBlbWl0LXJ0bC5jIChyZW9yZGVyX2luc25zX3dpdGhfbGluZV9ub3Rlcyk6IFJlcGxhY2UKCWVtaXRfbGluZV9ub3RlX2FmdGVyIHdpdGggZW1pdF9ub3RlX2NvcHlfYWZ0ZXIuCgkoZW1pdF9pbnNuX2FmdGVyX3dpdGhfbGluZV9ub3Rlcyk6IExpa2V3aXNlLgoJKGVtaXRfbGluZV9ub3RlX2FmdGVyKTogS2lsbC4KCShlbWl0X25vdGVfY29weV9hZnRlcik6IE5ldy4KCShlbWl0X25vdGVfY29weSk6IE5ldy4KCSogZnVuY3Rpb24uYyAoZW1pdF9yZXR1cm5faW50b19ibG9jayk6IFVzZSBlbWl0X25vdGVfY29weV9hZnRlci4KCSh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogVXNlIGVtaXRfbm90ZV9jb3B5LgoJKGNvcHlfaW5zbl9saXN0KTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSk6IExpa2V3aXNlLgoJKiBjZmdsYXlvdXQuYyAoZHVwbGljYXRlX2luc25fY2hhaW4pOiBMaWtld2lzZS4KCjIwMDMtMDctMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXRyZWUuaCAoZGVmaW5lX2xhYmVsKTogUmVwbGFjZSBmaWxlbmFtZSBhbmQgbGluZW5vIGFyZ3VtZW50cwoJd2l0aCBhIGxvY2F0aW9uX3QuCgkqIGMtZGVjbC5jIChwb3BsZXZlbCk6IEFkanVzdCBkZWZpbmVfbGFiZWwgY2FsbC4KCShwb3BfbGFiZWxfbGV2ZWwpOiBMaWtld2lzZS4KCShkZWZpbmVfbGFiZWwpOiBSZXBsYWNlIGZpbGVuYW1lIGFuZCBsaW5lbm8gYXJndW1lbnRzIHdpdGggYQoJbG9jYXRpb25fdC4KCShzdG9yZV9wYXJtX2RlY2xzKTogVXNlIERFQ0xfU09VUkNFX0xPQ0FUSU9OLgoJKiBjLXBhcnNlLmluIChsYWJlbCk6IEFkanVzdCBkZWZpbmVfbGFiZWwgY2FsbC4KCjIwMDMtMDctMDEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy9zb2wyLmgsIGNvbmZpZy9hbHBoYS9hbHBoYS5oLCBjb25maWcvYWxwaGEvbGludXguaCwKCWNvbmZpZy9pMzg2L2kzODYtaW50ZXJpeC5oLCBjb25maWcvaWE2NC9ocHV4LmgsIGNvbmZpZy9taXBzL2lyaXM2LmgsCgljb25maWcvbWlwcy9saW51eC5oLCBjb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9wYS9wYS1ocHV4LmgsCgljb25maWcvcGEvcGEtaHB1eDEwLmgsIGNvbmZpZy9wYS9wYS1ocHV4MTEuaCwgY29uZmlnL3BhL3BhLXByby1lbmQuaCwKCWNvbmZpZy9wYS9wYS5oLCBjb25maWcvcGEvcnRlbXMuaDogVXNlIGNfZGlhbGVjdF8gbWFjcm9zLgoKMjAwMy0wNy0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZmluYWwuYzogQ29udmVydCBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgkqIGZsb3cuYzogTGlrZXdpc2UuCgkqIGZsYWdzLmg6IExpa2V3aXNlLgoJKiBnY292LWlvLmM6IExpa2V3aXNlLgoJKiBnY292LWlvLmg6IExpa2V3aXNlLgoKMjAwMy0wNi0zMCAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AY2xpc3Aub3JnPgoKCVBSIG1pZGRsZS1lbmQvNjU3OAoJKiBsaWJnY2MyLmMgKF9fc3VidnNpMyk6IFJlbW92ZSBzaW1wbGlmaWNhdGlvbiB0aGF0IHdvdWxkIG5vdCB3b3JrCgl3aGVuIHN1YnRyYWN0aW5nIC0weDgwMDAwMDAwLgoJKF9fc3VidmRpMyk6IFJlbW92ZSBzaW1wbGlmaWNhdGlvbiB0aGF0IHdvdWxkIHJldHVybiBhIHdyb25nIHJlc3VsdC4KCShfX211bHZzaTMpOiBGaXggb3ZlcmZsb3cgY2hlY2suCgkoX19hYnN2ZGkyKTogRml4IHNpbXBsaWZpY2F0aW9uIHRoYXQgd291bGQgcmV0dXJuIGEgd3JvbmcgcmVzdWx0LgoJKF9fbXVsdmRpMyk6IEZpeCBvdmVyZmxvdyBjaGVjay4KCjIwMDMtMDYtMzAgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKGFueV9wZW5kaW5nX2NsZWFudXBzKTogTG9zZSBhcmd1bWVudCBUSElTX0NPTlRPVVIsIGl0Cgl3YXMgYWx3YXlzIHBhc3NlZCBpbiB0aGUgdmFsdWUgJzEnLiAgU2ltcGxpZnkgYm9keSBhcHByb3ByaWF0ZWx5LgoJKiB0cmVlLmggKGFueV9wZW5kaW5nX2NsZWFudXBzKTogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoJKiBjYWxscy5jOiAoZXhwYW5kX2NhbGwpOiBDb3JyZXNwb25kaW5nIGNoYW5nZXMuCgoyMDAzLTA2LTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogRG9uJ3QgYm90aGVyIFJFR19XQVNfMC4KCSogY3NlLmMgKGNzZV9pbnNuKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IExpa2V3aXNlLgoJKiBqdW1wLmMgKGR1cGxpY2F0ZV9sb29wX2V4aXRfdGVzdCk6IExpa2V3aXNlLgoJKiBydGwuYyAocmVnX25vdGVfbmFtZSk6IFJlbW92ZSBSRUdfV0FTXzAuCgkqIHJ0bC5oIChSRUdfV0FTXzApOiBSZW1vdmUuCgkqIHVucm9sbC5jIChmaW5hbF9yZWdfbm90ZV9jb3B5KTogRG9uJ3QgYm90aGVyIFJFR19XQVNfMC4KCSogY29uZmlnL2F2ci9hdnIuYyAob3V0cHV0X21vdnFpKTogRG9uJ3QgdXNlIHJlZ193YXNfMC4KCShvdXRwdXRfbW92aGkpOiBMaWtld2lzZS4KCShvdXRwdXRfbW92c2lzZik6IExpa2V3aXNlLgoJKHJlZ193YXNfMCk6IFJlbW92ZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX2dlbl9tb3ZoaSk6IERvbid0IHVzZQoJUkVHX1dBU18wLgoJKG02OGhjMTFfZ2VuX21vdnFpKTogTGlrZXdpc2UuCgkqIGNvbmZpZy92YXgvdmF4LXByb3Rvcy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCXJlZ193YXNfMF9wLgoJKiBjb25maWcvdmF4L3ZheC5jIChmb2xsb3dzX3ApOiBSZW1vdmUuCgkocmVnX3dhc18wX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL3ZheC92YXgubWQgKG1vdnNpKTogRG9uJ3QgdXNlIHJlZ193YXNfMF9wLgoJKG1vdmhpKTogTGlrZXdpc2UuCgkobW92cWkpOiBMaWtld2lzZS4KCSogZG9jL3J0bC50ZXhpIChSRUdfV0FTXzApOiBSZW1vdmUuCgoyMDAzLTA2LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUuaCAoX19ldl9zZXRfc3BlZnNjcl9mcm1jKTogU2V0IHRoZSBmbGFnLgoKMjAwMy0wNi0zMCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvbGliMWZ1bmNzLmFzbTogVXNlICJ4dGVuc2EtY29uZmlnLmgiIGZyb20KCXRvcC1sZXZlbCBpbmNsdWRlIGRpcmVjdG9yeS4KCSogY29uZmlnL3h0ZW5zYS9saWIyZnVuY3MuUzogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmg6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1jb25maWcuaDogUmVtb3ZlLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBVcGRhdGUgbG9jYXRpb24gb2YgInh0ZW5zYS1jb25maWcuaCIgaGVhZGVyLgoKMjAwMy0wNi0zMCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2V4dHJhX2NvbnN0cmFpbnQpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfZXh0cmFfY29uc3RyYWludCk6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRVhUUkFfQ09OU1RSQUlOVCk6IFVzZSBpdC4KCSogY29uZmlnL3MzOTAvczM5MC5jIChxX2NvbnN0cmFpbnQpOiBSZW1vdmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHFfY29uc3RyYWludCk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmggKEVYVFJBX01FTU9SWV9DT05TVFJBSU5UKTogQWRkICdSJywgJ1MnLCAnVCcuCgkoRVhUUkFfQUREUkVTU19DT05TVFJBSU5UKTogRGVmaW5lLgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChsYXJsX29wZXJhbmQpOiBSZWZ1c2Ugb3V0LW9mLXJhbmdlIG9wZXJhbmRzLgoJKERJU1BfSU5fUkFOR0UsIHMzOTBfc2hvcnRfZGlzcGxhY2VtZW50KTogTmV3LgoJKGxlZ2l0aW1hdGVfcmVsb2FkX29wZXJhbmRfcCk6IFN1cHBvcnQgbG9uZyBkaXNwbGFjZW1lbnRzLgoJKHMzOTBfZGVjb21wb3NlX2FkZHJlc3MpOiBMaWtld2lzZS4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkobGVnaXRpbWl6ZV9hZGRyZXNzKTogTGlrZXdpc2UuCgkoczM5MF9maXh1cF9jbG9iYmVyZWRfcmV0dXJuX3JlZyk6IExpa2V3aXNlLgoJKHMzOTBfZW1pdF9wcm9sb2d1ZSwgczM5MF9lbWl0X2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoczM5MF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKGF0dHIgIm9wX3R5cGUiKTogQWRkICJSWFkiLCAiUlNZIiwgIlNJWSIuCgkoYXR0ciAiYXR5cGUiLCBhdHRyICJsZW5ndGgiKTogQWRkIGRlZmF1bHRzIGZvciBuZXcgb3BfdHlwZXMuCgkoYWxsIGluc25zKTogQ2hhbmdlIG9wX3R5cGUgYXR0cmlidXRlIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSgiKm1vdmRpX2xheSIsICIqbW92c2lfbGF5IiwgIipleHRlbmRxaWRpMiIsICIqZXh0ZW5kcWlzaTIiKTogTmV3IGluc25zLgoJKCIqdG1xaV9leHQiLCAiKnRtZGlfbWVtIiwgIip0bXNpX21lbSIsICIqdG1oaV9tZW0iLCAqdG1xaV9tZW0iLAoJIip0c3RzaSIsICIqdHN0c2lfY2Nvbmx5IiwgIip0c3RoaUNDVCIsICIqdHN0aGlDQ1RfY2Nvbmx5IiwKCSIqdHN0aGkiLCAiKnRzdGhpX2Njb25seSIsICIqdHN0cWlDQ1QiLCAiKnRzdHFpQ0NUX2Njb25seSIsCgkiKnRzdHFpIiwgIip0c3RxaV9jY29ubHkiLCAiKmNtcHNpX2Njc19zaWduIiwgIipjbXBzaV9jY3MiLAoJIipjbXBzaV9jY3UiLCAiKmNtcGhpX2NjdSIsICIqY21wcWlfY2N1IiwgIipjbGkiLAoJIm1vdnRpIiwgIiptb3ZkaV82NCIsICIqbW92ZGlfMzEiLCAiKm1vdnNpIiwgIm1vdmhpIiwgIm1vdnFpXzY0IiwKCSJtb3ZxaSIsICIqbW92c3RyaWN0cWkiLCAiKm1vdnN0cmljdGhpIiwgIm1vdnN0cmljdHNpIiwKCSIqbW92ZGZfNjQiLCAiKm1vdmRmXzMxIiwgIiptb3ZzZiIsCgkiKmxvYWRfbXVsdGlwbGVfc2kiLCAiKnN0b3JlX211bHRpcGxlX2RpIiwKCSIqc2V0aGlnaHFpc2kiLCAiKnNldGhpZ2hoaXNpIiwgIipzZXRoaWdocWlkaV8zMSIsICIqZXh0ZW5kaGlzaTIiLAoJIipsYV82NCIsICIqbGFfMzEiLCAiKmxhXzMxX2FuZCIsICJmb3JjZV9sYV8zMSIsCgkiKmFkZHNpM19jYXJyeTFfY2MiLCAqYWRkc2kzX2NhcnJ5MV9jY29ubHkiLAoJIiphZGRzaTNfY2FycnkyX2NjIiwgKmFkZHNpM19jYXJyeTJfY2Nvbmx5IiwKCSIqYWRkc2kzX2NjIiwgIiphZGRzaTNfY2Nvbmx5IiwgIiphZGRzaTNfY2Nvbmx5MiIsCgkiKmFkZHNpM19zaWduIiwgIiphZGRzaTNfc3ViIiwgImFkZHNpMyIsCgkiKnN1YnNpM19ib3Jyb3dfY2MiLCAiKnN1YnNpM19ib3Jyb3dfY2Nvbmx5IiwgIipzdWJzaTNfY2MiLAoJIipzdWJzaTNfY2Nvbmx5IiwgIipzdWJzaTNfc2lnbiIsICIqc3Vic2kzX3N1YiIsICJzdWJzaTMiLAoJIm11bHNpMyIKCSIqYW5kc2kzX2NjIiwgIiphbmRzaTNfY2Nvbmx5IiwgImFuZHNpMyIsCgkiKmFuZHFpM19zcyIsICIqYW5kcWkzX3NzX2ludiIsCgkiKmlvcnNpM19jYyIsICIqaW9yc2kzX2Njb25seSIsICJpb3JzaTMiLAoJIippb3JxaTNfc3MiLCAiKmlvcnFpM19zc19pbnYiLAoJIip4b3JzaTNfY2MiLCAiKnhvcnNpM19jY29ubHkiLCAieG9yc2kzIiwKCSIqeG9ycWkzX3NzIiwgIip4b3JxaTNfc3NfaW52IiwKCSIqdGxzX2xvYWRfMzEiKTogQWRkIGFsdGVybmF0aXZlcyBmb3IgbG9uZy1kaXNwbGFjZW1lbnQgaW5zdHJ1Y3Rpb25zLgoKCSgiKmNtcGRmX2NjcyIsICIqY21wZGZfY2NzX2libSIsICIqY21wc2ZfY2NzIiwgIipjbXBzZl9jY3NfaWJtIiwKCSIqbG9hZF9tdWx0aXBsZV9kaSIsICIqc3RvcmVfbXVsdGlwbGVfZGkiLAoJIipzZXRoaWdocWlkaV82NCIsICIqemVyb19leHRlbmRoaXNpMl8zMSIsCgkidHJ1bmNkZnNmMl9pYm0iLCAiZXh0ZW5kc2ZkZjJfaWVlZSIsICJleHRlbmRzZmRmMl9pYm0iLAoJImFkZGRmMyIsICIqYWRkZGYzIiwgIiphZGRkZjNfaWJtIiwKCSJhZGRzZjMiLCAiKmFkZHNmMyIsICIqYWRkc2YzX2libSIsCgkic3ViZGYzIiwgIipzdWJkZjMiLCAiKnN1YmRmM19pYm0iLAoJInN1YnNmMyIsICIqc3Vic2YzIiwgIipzdWJzZjNfaWJtIiwKCSJtdWxzaV82NDMyIiwgImRpdm1vZGRpc2kzIiwKCSJtdWxkZjMiLCAiKm11bGRmMyIsICIqbXVsZGYzX2libSIsCgkibXVsc2YzIiwgIiptdWxzZjMiLCAiKm11bHNmM19pYm0iLAoJImRpdmRmMyIsICIqZGl2ZGYzIiwgIipkaXZkZjNfaWJtIiwKCSJkaXZzZjMiLCAiZGl2KnNmMyIsICIqZGl2c2YzX2libSIsCgkic3FydGRmMiIsICJzcXJ0c2YyIiwKCSIqY2p1bXBfbG9uZyIsICIqaWNqdW1wX2xvbmciLCAiaW5kaXJlY3RfanVtcCIsICJjYXNlc2lfanVtcCIsCgkiKmRvbG9vcF9zaV9sb25nIiwgIipkb2xvb3BfZGlfbG9uZyIsICJiYXNfNjQiLCAiYmFzXzMxIiwKCSJiYXNfcl82NCIsICJiYXNfcl8zMSIsICJiYXNfdGxzXzMxIiwgImJhc190bHNfNjQiKTogQWRhcHQgbWVtb3J5CglhbmQgYWRkcmVzcyBjb25zdHJhaW50cyBmb3IgaW5zdHJ1Y3Rpb25zIHRoYXQgZG8gbm90IGFjY2VwdCBsb25nCglkaXNwbGFjZW1lbnRzLgoKMjAwMy0wNi0zMCAgSGFydG11dCBQZW5uZXIgIDxocGVubmVyQGRlLmlibS5jb20+CgkgICAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvMjA4NC5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQ6IEluY2x1ZGUgaXQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9hZGp1c3RfcHJpb3JpdHkpOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX1NDSEVEX0FESlVTVF9QUklPUklUWSk6IERlZmluZS4KCShzMzkwX2ZpcnN0X2N5Y2xlX211bHRpcGFzc19kZmFfbG9va2FoZWFkKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9TQ0hFRF9GSVJTVF9DWUNMRV9NVUxUSVBBU1NfREZBX0xPT0tBSEVBRCk6IERlZmluZS4KCShzMzkwX3NjaGVkX3Jlb3JkZXIyKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9TQ0hFRF9SRU9SREVSMik6IERlZmluZS4KCShzMzkwX2FkanVzdF9jb3N0KTogU3VwcG9ydCBQUk9DRVNTT1JfMjA4NF9aOTkwIGNwdSB0eXBlLgoJKHMzOTBfaXNzdWVfcmF0ZSk6IExpa2V3aXNlLgoKTW9uIEp1biAzMCAyMzo0NzozMyBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluIChHVEZJTEVTKTogQWRkIGNncmFwaC5oLgoJKiBjZ3JhcGguYyAoa25vd25fZGVjbHMpOiBSZW1vdmUuCgkoY2dyYXBoX2hhc2gsIGNncmFwaF9ub2RlcywgY2dyYXBoX25vZGVzX3F1ZXVlLAoJY2dyYXBoX3ZhcnBvb2xfaGFzaCwgY2dyYXBoX3ZhcnBvb2xfbm9kZXNfcXVldWUpOiBHVFlpemUuCgkoY2dyYXBoX25vZGUpOiBEbyBub3QgYWxsb2NhdGUga25vd25fZGVjbHM7IHVzZSBwb2x1dGF0ZSBoYXNodGFibGUuCgkoY2dyYXBoX3ZhcnBvb2xfbm9kZSk6IExpa2V3aXNlOyBhZGQgbmV4dCBwb2ludGVyLgoJKGNncmFwaF92YXJwb29sX25vZGVzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCSogY2dyYXBoLmggKGNncmFwaF9sb2NhbF9pbmZvLCBjZ3JhcGhfZ2xvYmFsX2luZm8sIGNncmFwaF9ydGxfaW5mbywKCWNncmFwaF9ub2RlLCBjZ3JhcGhfZWRnZSwgY2dyYXBoX3ZhcnBvb2xfbm9kZSwgY2dyYXBoX25vZGVzLCBjZ3JhcGhfbl9ub2RlcywKCWNncmFwaF92YXJwb29sX25fbm9kZXMsIGNncmFwaF92YXJwb29sX25vZGVzX3F1ZXVlKTogR1RZaXplLgoJKiBnZW5ndHlwZS5jIChvcGVuX2Jhc2VfZmlsZXMpOiBJbmNsdWRlIGNncmFwaC5oCgoyMDAzLTA2LTMwICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogQ2hhbmdlbG9nOiBSZW1vdmUgIj4+Pj4+Pj4iIGZyb20gcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0wNi0zMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMuYzogRml4IHNwZWxsaW5nIGZvciAidGVzdGNhc2UiLgoJKiBjb25maWcvY3Jpcy9jcmlzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL21taXgvY3J0aS5hc206IExpa2V3aXNlLgoJKiBjb25maWcvbW1peC9tbWl4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbW1peC9tbWl4Lm1kOiBMaWtld2lzZS4KCjIwMDMtMDYtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogTWFrZSBpdCBhbHdheXMKCTEuCgoyMDAzLTA2LTMwICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcuZ2NjIFtzMzkwKi0qLSpdOiBTdXBwb3J0IC0td2l0aC1hcmNoLCAtLXdpdGgtdHVuZSwgYW5kCgktLXdpdGgtbW9kZSBjb25maWd1cmUgb3B0aW9ucy4KCSogY29uZmlnL3MzOTAvczM5MC5oIChPUFRJT05fREVGQVVMVF9TUEVDUyk6IERlZmluZS4KCShEUklWRVJfU0VMRl9TUEVDUyk6IERlZmluZS4KCSogY29uZmlnL3MzOTAvbGludXguaCAoQVNNX1NQRUMpOiBQYXNzIGFyY2hpdGVjdHVyZSBtb2RlIGFuZCBjcHUKCWFyY2hpdGVjdHVyZSB0byBhc3NlbWJsZXIuCgkoTElOS19TUEVDKTogTWVyZ2UgMzEtYml0IGFuZCA2NC1iaXQgdmFyaWFudHMuCgkoTElOS19BUkNIMzFfU1BFQywgTElOS19BUkNINjRfU1BFQywgRVhUUkFfU1BFQ1MpOiBSZW1vdmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IE5ldyBkZWZhdWx0IHJ1bGVzIGZvcgoJYXJjaGl0ZWN0dXJlIG1vZGUgYW5kIGNwdSBhcmNoaXRlY3R1cmUgc2VsZWN0aW9uLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tZXNhLCAtbXphcmNoLCAtbWFyY2gsIC1tdHVuZSk6IERvY3VtZW50CgluZXcgZGVmYXVsdCBydWxlcy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoZW51bSBwcm9jZXNzb3JfdHlwZSk6IEFkZCBQUk9DRVNTT1JfMjA4NF9aOTkwLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChhdHRyICJjcHUiKTogQWRkICJ6OTkwIiBwcm9jZXNzb3IgdHlwZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChvdmVycmlkZV9vcHRpb25zKTogQWRkICJ6OTkwIiB0bwoJcHJvY2Vzc29yX2FsaWFzX3RhYmxlLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tYXJjaCk6IERvY3VtZW50ICJ6OTkwIiBwcm9jZXNzb3IgdHlwZS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF90dW5lX2ZsYWdzLCBzMzkwX2FyY2hfZmxhZ3MpOiBOZXcgdmFyaWFibGVzLgoJKiBjb25maWcvczM5MC9zMzkwLmggKHMzOTBfdHVuZV9mbGFncywgczM5MF9hcmNoX2ZsYWdzKTogRGVjbGFyZS4KCShlbnVtIHByb2Nlc3Nvcl9mbGFncywgVEFSR0VUX0NQVV9JRUVFX0ZMT0FULCBUQVJHRVRfQ1BVX1pBUkNILAoJVEFSR0VUX0NQVV9MT05HX0RJU1BMQUNFTUVOVCwgVEFSR0VUX0xPTkdfRElTUExBQ0VNRU5UKTogTmV3LgoJKiBjb25maWcvczM5MC9zMzkwLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBSZXBsYWNlIGVudW0gcHRhX2ZsYWdzIGJ5CgllbnVtIHByb2Nlc3Nvcl9mbGFncy4gIEZpbGwgaW4gczM5MF90dW5lX2ZsYWdzIGFuZCBzMzkwX2FyY2hfZmxhZ3MuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfY3B1KTogUmVuYW1lIHRvIC4uLgoJKHMzOTBfdHVuZSk6IC4uLiB0aGlzLgoJKiBjb25maWcvczM5MC9zMzkwLmggKHMzOTBfY3B1LCBzMzkwX3R1bmUpOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2lzc3VlX3JhdGUsIG92ZXJyaWRlX29wdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoYXR0ciAiY3B1Iik6IExpa2V3aXNlLgoKMjAwMy0wNi0zMCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1jb21tb24uYyAoZW51bSBjX2xhbmd1YWdlX2tpbmQsIGZsYWdfb2JqYyk6IFJlbW92ZS4KCShmaXhfc3RyaW5nX3R5cGUsIGNoZWNrX2Nhc2VfdmFsdWUsIGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucywKCWNfYWRkX2Nhc2VfbGFiZWwsIGZpbmlzaF9sYWJlbF9hZGRyX2V4cHIsIGJvb2xlYW5faW5jcmVtZW50KToKCVVzZSBjX2RpYWxlY3RfIG1hY3Jvcy4KCSogYy1jb21tb24uaCAoZW51bSBjX2xhbmd1YWdlX2tpbmQpOiBFeHRlbmQuCgkoY19kaWFsZWN0X2N4eCwgY19kaWFsZWN0X29iamMpOiBOZXcuCgkoZmxhZ19vYmpjKTogUmVtb3ZlLgoJKGNfY29tbW9uX2luaXRfb3B0aW9ucyk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGMtY3BwYnVpbHRpbi5jIChkZWZpbmVfX0dOVUNfXywgY19jcHBfYnVpbHRpbnMpOiBVc2UgY19kaWFsZWN0XwoJbWFjcm9zLgoJKiBjLWRlY2wuYyAoZmluc2loX2RlY2wsIGdyb2tmaWVsZCwgZmluaXNoX3N0cnVjdCk6IFVzZSBjX2RpYWxlY3RfCgltYWNyb3MuCgkqIGMtZm9ybWF0LmMgKENfU1REX1ZFUiwgQ19TVERfTkFNRSk6IFNpbWlsYXJseS4KCSogYy1sYW5nLmMgKGNfaW5pdF9vcHRpb25zKTogUmVtb3ZlLgoJKGNfbGFuZ3VhZ2UpOiBEZWZpbmUuCgkoTEFOR19IT09LU19JTklUX09QVElPTlMpOiBVc2UgY29tbW9uIGhvb2suCgkqIGMtbGV4LmMgKGxleF9jaGFyY29uc3QpOiBVc2UgY19kaWFsZWN0XyBtYWNyb3MuCgkqIGMtb3B0cy5jIChsYW5nX2ZsYWdzKTogTWFrZSBmdW5jdGlvbi1sb2NhbC4KCShjX2NvbW1vbl9pbml0X29wdGlvbnMpOiBVc2UgY19kaWFsZWN0XyBtYWNyb3MuICBIYW5kbGUKCUMrKyBkaWFnbm9zdGljIHJlcXVpcmVtZW50cy4KCShjX2NvbW1vbl9oYW5kbGVfb3B0aW9uLCBjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBVc2UgZmxhZ19jeHguCgkqIGMtcGFyc2UuaW4gKGluaXRfcmVzd29yZHMpOiBVc2UgY19kaWFsZWN0X29iamMgKCkuCgkqIGMtcGNoLmMgKGdldF9pZGVudCk6IFVzZSBjX2xhbmd1YWdlLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX2Jvb2xfbGl0ZXJhbCk6IFVzZSBjX2RpYWxlY3RfIG1hY3Jvcy4KCSogYy10eXBlY2suYyAoY29tcHR5cGVzLCBidWlsZF9jX2Nhc3QpOiBTaW1pbGFybHkuCgkqIG9iamMvb2JqYy1sYW5nLmMgKGNfbGFuZ3VhZ2UpOiBEZWZpbmUuCgkoTEFOR19IT09LU19JTklUX09QVElPTlMpOiBVc2UgY29tbW9uIGhvb2suCgkob2JqY19pbml0X29wdGlvbnMpOiBSZW1vdmUuCgoyMDAzLTA2LTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKEZVTkNUSU9OX0FSR19QQURESU5HKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvdW5pY29zbWsuaDogRG9uJ3QgI3VuZGVmIEZVTkNUSU9OX0FSR19QQURESU5HLgoKMjAwMy0wNi0zMCAgV29sZmdhbmcgQmFuZ2VydGggIDxiYW5nZXJ0aEBkZWFsaWkub3JnPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IERvbid0IHJlZmVyZW5jZSBnbmF0cy5odG1sIGFueSBtb3JlLgoKMjAwMy0wNi0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChjb21wdXRlX21vdl9sZW5ndGgpOiBGaXggbGVuZ3RoIG9mCgltb3Y6U0Ygb24gSDgvMzAwLgoKMjAwMy0wNi0zMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKEJJR0dFU1RfRklFTERfQUxJR05NRU5UKTogTWFrZSBkZWZpbnRpb24KCWNvbnN0YW50LgoKTW9uIEp1biAzMCAxNTozNjoyOSBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkoZnlsMnhfc2Z4ZjMsIGZ5bDJ4X2RmeGYzLCBmc2NhbGVfc2Z4ZjMsIGZzY2FsZV9kZnhmMyk6IEZpeCBjb25kaXRpb24uCgoyMDAzLTA2LTMwIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3NwbGl0X2FsdGl2ZWNfaW5fZ3Bycyk6IE5ldyBmdW5jdGlvbi4KCShhbHRpdmVjX2luX2dwcnNfcCk6IE5ldyBmdW5jdGlvbi4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3RvcyAocnM2MDAwX3NwbGl0X2FsdGl2ZWNfaW5fZ3Bycyk6IE5ldwoJcHJvdG90eXBlLgoJKGFsdGl2ZWNfaW5fZ3Byc19wKTogTmV3IHByb3RvdHlwZS4KCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoKm1vdnY0c2lfaW50ZXJuYWwpOiBDaGFuZ2UKCW11bHRpLWFzc2VtYmxlciBhbHRlcm5hdGl2ZSB0byAnIycuIEFkZCBwb3N0cmVsb2FkIHNwbGl0dGVyIHRvCgloYW5kbGUgdGhpcyBjYXNlcy4KCSgqbW92djRoaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKCptb3Z2NHFpX2ludGVybmFsKTogTGlrZXdpc2UuCgkoKm1vdnY0c2ZfaW50ZXJuYWwpOiBMaWtld2lzZS4KCjIwMDMtMDYtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGVmYXVsdHMuaCAoUFVTSF9BUkdTX1JFVkVSU0VEKTogRGVmaW5lIGRlZmF1bHQgaGVyZS4KCSogY2FsbHMuYzogTm90IGhlcmUuCgoyMDAzLTA2LTMwICBCZW4gRWxsaXN0b24gIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fcnR4X2Nvc3RzKTogUmVtb3ZlICNpZiAwIGJsb2NrLgoJKGJhZF9zaWduZWRfYnl0ZV9vcGVyYW5kKTogTGlrZXdpc2UuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGFybV9maW5hbF9wcmVzY2FuX2luc24pOiBMaWtld2lzZS4KCjIwMDMtMDYtMzAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY2ZncnRsLmMgKG1hcmtfa2lsbGVkX3JlZ3MpOiBDYXN0IEhBUkRfUkVHTk9fTlJFR1MgdG8gaW50LgoKMjAwMy0wNi0zMCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjLXBjaC5jIChjX2NvbW1vbl93cml0ZV9wY2gpOiBGbHVzaCBhc21fb3V0X2ZpbGUgdG8gYWxsb3cgZm9yCglzdWJzZXF1ZW50IHdyaXRlcy4KCk1vbiBKdW4gMzAgMTA6MDM6MDIgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdydGwuYyAodmVyaWZ5X2Zsb3dfaW5mbyk6IEFjY2VwdCBkZWdlbmVyYXRlZCBjb25kanVtcHMKCWluIGNmZ2xheW91dCBtb2RlLgoKTW9uIEp1biAzMCAwOTo1MjozOSBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoc3RhbmRhcmRfODAzODdfY29uc3RhbnRfcCk6IEFjY2VwdCBURm1vZGUgY29uc3RhbnRzIHRvby4KCShpbml0X2V4dF84MDM4N19jb25zdGFudHMpOiBMaWtld2lzZS4KCShzdGFuZGFyZF84MDM4N19jb25zdGFudF9ydHgpOiBMaWtld2lzZS4KCSogaTM4Ni5tZCAoYXRhbnhmKTogRGlzYWJsZSBmb3IgVEFSR0VUXzEyOEJJVF9MT05HX0xPTkcKCShhdGFudGYpOiBEaXNhYmxlIGZvciAhVEFSR0VUXzEyOEJJVF9MT05HX0xPTkcKCShmeWwyeF9zZnhmMywgZnlsMnhfZGZ4ZjMpOiBBY2NlcHQgVEZtb2RlIG9wZXJhbmRzLgoJKGZ5bDJ4X3hmeGYzLCBmeWwyeF90ZnhmMyk6IEVuYWJsZS9kaXNhYmxlIGFzIG5lZWRlZC4KCShmc2NhbGVfc2Z4ZjMsIGZzY2FsZV9kZnhmMyk6IEFjY2VwdCBURm1vZGUgb3BlcmFuZHMuCgkoZnNjYWxlX3hmeGYzLCBmc2NhbGVfdGZ4ZjMpOiBFbmFibGUvZGlzYWJsZSBhcyBuZWVkZWQuCgkoZnJuZGludHRmMik6IE5ldy4KCShmMnhtMXRmMik6IE5ldy4KCShleHA/ZjIpOiBVc2UgZXhwc2YyX3RmIHdoZW4gbmVlZGVkLgoJKGV4cD9mMl90Zik6IE5ldy4KCShleHB0Zik6IE5ldy4KCjIwMDMtMDYtMjkgVXdlIFN0aWViZXIgPHV3ZUBrYW9zLWdyb3VwLmRlPgoKCSogY29uZmlnLmdjYyAoc2gqLSota2FvcyopOiBQdXQgdG1fZmlsZSBzZXR0aW5nIGluIHNlcGFyYXRlIGNhc2UKCXN0YXRlbWVudCBmcm9tIHRtYWtlX2ZpbGUgc2V0LgoKMjAwMy0wNi0yOSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25AdHVsaXB0cmVlLm9yZz4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBDaGFuZ2UgcHVzaF9yZWxvYWRzIHRvIHB1c2hfcmVsb2FkIGluCgljb21tZW50LgoJKiByZWxvYWQxLmMgKGVsaW1pbmF0ZV9yZWdzKTogTGlrZXdpc2UuCgkoZHVtcF9uZWVkcyk6IERlbGV0ZSBwcm90b3R5cGUgZm9yIGRlbGV0ZWQgZnVuY3Rpb24uCgoyMDAzLTA2LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGluLWF0dHJzLmRlZiAoZ2NjX2RpYWcsIGdjY19jZGlhZywgZ2NjX2N4eGRpYWcpOiBOZXcKCWZvcm1hdCBhdHRyaWJ1dGVzLgoJKiBjLWZvcm1hdC5jIChlbnVtIGZvcm1hdF90eXBlKTogQWRkIGdjY19kaWFnX2Zvcm1hdF90eXBlLAoJZ2NjX2NkaWFnX2Zvcm1hdF90eXBlLCBhbmQgZ2NjX2N4eGRpYWdfZm9ybWF0X3R5cGUuCgkoZ2NjX2RpYWdfbGVuZ3RoX3NwZWNzLCBnY2NfY2RpYWdfbGVuZ3RoX3NwZWNzLAoJZ2NjX2N4eGRpYWdfbGVuZ3RoX3NwZWNzLCBnY2NfZGlhZ19mbGFnX3BhaXJzLAoJZ2NjX2NkaWFnX2ZsYWdfcGFpcnMsIGdjY19jeHhkaWFnX2ZsYWdfcGFpcnMsIGdjY19kaWFnX2ZsYWdfc3BlY3MsCglnY2NfY2RpYWdfZmxhZ19zcGVjcywgZ2NjX2N4eGRpYWdfZmxhZ19zcGVjcywgZ2NjX2RpYWdfY2hhcl90YWJsZSwKCWdjY19jZGlhZ19jaGFyX3RhYmxlLCBnY2NfY3h4ZGlhZ19jaGFyX3RhYmxlKTogTmV3LgoJKGZvcm1hdF90eXBlc19vcmlnKTogQWRkIG5ldyBkYXRhLgoJKGZpbmRfY2hhcl9pbmZvX3NwZWNpZmllcl9pbmRleCwgaW5pdF9keW5hbWljX2RpYWdfaW5mbyk6IE5ldwoJZnVuY3Rpb25zLgoJKGhhbmRsZV9mb3JtYXRfYXR0cmlidXRlKTogVXBkYXRlIHRvIGhhbmRsZSBuZXcgZm9ybWF0IGF0dHJpYnV0ZXMuCgoyMDAzLTA2LTI5ICBEYXJhIEhhemVnaGkgIDxkaGF6ZWdoaUB5YWhvby5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBSZW1vdmUgaW5zdGFsbCBkb2N1bWVudGF0aW9uIGZvciBvYnNvbGV0ZWQgdGFyZ2V0cwoJaT84Ni0qLXNjbywgaT84Ni0qLXNjbzMuMnY0LCBwb3dlcnBjbGUtKi1wZSwgcG93ZXJwY2xlLSotd2lubnQsCglhcm0tKi1hb2YuCglVcGRhdGUgaW5mb3JtYXRpb24gYWJvdXQgSUE2NCB0b29sY2hhaW4sIEFJWCBtYWtlIHJlcXVpcmVtZW50cywKCWFuZCBiaW51dGlscyBmb3IgbTY4ay0qLWhwdXggYW5kICotKi1saW51eGFvdXQgdGFyZ2V0cy4KCk1vbiBKdW4gMzAgMDA6NTA6NDMgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWdtb3ZlLmMgKHJlZ21vdmVfb3B0aW1pemUpOiBEb24ndCB0cnkgdG8gbWFrZSBzcmMgYW5kIGRzdCBtYXRjaAoJd2hlbiB0aGV5IGFyZSBpbiBkaWZmZXJlbnQgbW9kZXMuCgpTdW4gSnVuIDI5IDIzOjA2OjMyIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWF0aGZuLCBleHBhbmRfYnVpbHRpbl9tYXRoZm5fMik6IEF2b2lkCglidXN5IHdvcmsgd2hlbiBidWlsdGluIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGJhY2tlbmQuCgoyMDAzLTA2LTI5ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBsb29wLmMgKGNvdW50X29uZV9zZXQpOiBGaXggZGV0ZWN0aW9uIG9mIHJlZ2lzdGVycyBzZXQgaW4gbW9yZQoJdGhhbiBvbmUgYmFzaWMgYmxvY2suCgoyMDAzLTA2LTI5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB0YXJnZXQtZGVmLmg6IFJlbW92ZSB1c2FnZSBvZiBPQkpFQ1RfRk9STUFUX1JPU0UuCgkqIHN5c3RlbS5oOiBQb2lzb24gT0JKX0ZPUk1BVF9ST1NFLgoJKiBkb2MvdG0udGV4aSAoTWFjcm9zIGZvciBJbml0aWFsaXphdGlvbik6IFJlbW92ZSBkb2N1bWVudGF0aW4gb2YKCU9CSkVDVF9GT1JNQVRfUk9TRS4KCSogY29uZmlnL3JzNjAwMC9seW54Lmg6IFJlbW92ZSB1bmRlZiBvZiBPQkpFQ1RfRk9STUFUX1JPU0UuCgkqIGNvbGxlY3QyLmM6IFJlbW92ZSB1c2FnZSBvZiBPQkpFQ1RfRk9STUFUX1JPU0UuCgoyMDAzLTA2LTI5ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAodXBkYXRlX3RvdGFsX2NvZGVfYnl0ZXMpOiBOZXcgZnVuY3Rpb24uCgkobGFzdF9hZGRyZXNzKTogTnVtYmVyIG9mIGJ5dGVzIG91dHB1dCBmb3IgYSBmdW5jdGlvbiBhbmQgaXRzCglhc3NvY2lhdGVkIHRodW5rcy4KCShjb21wdXRlX2ZyYW1lX3NpemUpOiBVc2UgQklUU19QRVJfVU5JVC4KCShwYV9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBDb21wdXRlIGxhc3RfYWRkcmVzcy4gIFVzZQoJdXBkYXRlX3RvdGFsX2NvZGVfYnl0ZXMuCgkob3V0cHV0X2xicmFuY2gpOiBIYW5kbGUgbG9uZyBicmFuY2ggb24gcG9ydGFibGUgcnVudGltZS4KCShhdHRyX2xlbmd0aF9taWxsaWNvZGVfY2FsbCwgYXR0cl9sZW5ndGhfY2FsbCwKCWF0dHJfbGVuZ3RoX2luZGlyZWN0X2NhbGwpOiBPbmx5IHVzZSB0b3RhbF9jb2RlX2J5dGVzIGZvciBjYWxscyBpbgoJdGhlIHRleHQgc2VjdGlvbi4KCShvdXRwdXRfY2FsbCk6IE9ubHkgdXNlIGFuIGluZGlyZWN0IGNhbGwgc2VxdWVuY2Ugd2hlbiB0aGUgdGFyZ2V0IGlzCglub3QgbG9jYWwuCgkocGFfYXNtX291dHB1dF9taV90aHVuayk6IEhhbmRsZSB1cGRhdGluZyBvZiB0b3RhbF9jb2RlX2J5dGVzLiAgSW1wcm92ZQoJdGVzdCB0byBkZXRlcm1pbmUgd2hlbiBhbiBJQS1yZWxhdGl2ZSBicmFuY2ggY2FuIGJlIHVzZWQuICBBZGQgdmFyaW91cwoJbG9uZyBicmFuY2ggc2VxdWVuY2VzLiAgQXZvaWQgdXNpbmcgYW4gaW5kaXJlY3QgYnJhbmNoIG9uIGFsbCBwb3J0cwoJZXhjZXB0IFNPTS4KCjIwMDMtMDYtMjkgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGV4cHIuYyAoY2xlYXJfYnlfcGllY2VzKTogRml4IHByb3RvdHlwZS4KCjIwMDMtMDYtMjkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNzZS5jOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogY3NlbGliLmM6IExpa2V3aXNlLgoJKiBjc2VsaWIuaDogTGlrZXdpc2UuCgkqIGRieG91dC5jOiBMaWtld2lzZS4KCSogZGVidWcuYzogTGlrZXdpc2UuCgkqIGRmLmM6IExpa2V3aXNlLgoJKiBkZi5oOiBMaWtld2lzZS4KCSogZG9qdW1wLmM6IExpa2V3aXNlLgoJKiBkb2xvb3AuYzogTGlrZXdpc2UuCgkqIGRvbWluYW5jZS5jOiBMaWtld2lzZS4KCSogZHdhcmYyYXNtLmM6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5oOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogZXhjZXB0Lmg6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogZXQtZm9yZXN0LmM6IExpa2V3aXNlLgoJKiBldC1mb3Jlc3QuaDogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogZXhwbG93LmM6IExpa2V3aXNlLgoJKiBleHBtZWQuYzogTGlrZXdpc2UuCgkqIGV4cHIuYzogTGlrZXdpc2UuCgkqIGV4cHIuaDogTGlrZXdpc2UuCgoyMDAzLTA2LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWxsb2MtcG9vbC5jOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBiaXRtYXAuYzogTGlrZXdpc2UuCgkqIGJpdG1hcC5oOiBMaWtld2lzZS4KCSogYnQtbG9hZC5jOiBMaWtld2lzZS4KCSogYnVpbHRpbnMuYzogTGlrZXdpc2UuCgkqIGNhbGxlci1zYXZlLmM6IExpa2V3aXNlLgoJKiBjZmdhbmFsLmM6IExpa2V3aXNlLgoJKiBjZmdydGwuYzogTGlrZXdpc2UuCgkqIGNvbGxlY3QyLmM6IExpa2V3aXNlLgoJKiBjc2UuYzogTGlrZXdpc2UuCgkqIGRmLmM6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmM6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IExpa2V3aXNlLgoJKiBleHBtZWQuYzogTGlrZXdpc2UuCgkqIGZpbmFsLmM6IExpa2V3aXNlLgoJKiBmbGFncy5oOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY292LWlvLmg6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBnZW5hdHRydGFiLmM6IExpa2V3aXNlLgoJKiBnZW5hdXRvbWF0YS5jOiBMaWtld2lzZS4KCSogbGliZ2Nvdi5jOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jOiBMaWtld2lzZS4KCSogb3B0YWJzLmM6IExpa2V3aXNlLgoJKiBwcmVmaXguYzogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYzogTGlrZXdpc2UuCgkqIHN0bXQuYzogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmM6IExpa2V3aXNlLgoJKiB0b3BsZXYuYzogTGlrZXdpc2UuCgkqIHZhcmFzbS5jOiBMaWtld2lzZS4KCSogdm1zZGJnb3V0LmM6IExpa2V3aXNlLgoKMjAwMy0wNi0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuYyAoZW1pdF9zaW5nbGVfcHVzaF9pbnNuKTogSWYgcGFkZGluZyBpcyBuZWVkZWQKCWRvd253YXJkLCBhZGp1c3QgdGhlIHN0YWNrIHBvaW50ZXIgZmlyc3QsIGFuZCB0aGVuIHN0b3JlIHRoZQoJZGF0YSBpbnRvIHRoZSBzdGFjayBsb2NhdGlvbiB1c2luZyBhbiBvZmZzZXQuCgoyMDAzLTA2LTI5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb2xsZWN0Mi5oOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogY29sbGVjdDIuYzogTGlrZXdpc2UuCgkqIGNvbmZsaWN0LmM6IExpa2V3aXNlLgoJKiBjb3ZlcmFnZS5jOiBMaWtld2lzZS4KCSogY29udmVydC5oOiBMaWtld2lzZS4KCSogY29udmVydC5jOiBMaWtld2lzZS4KCjIwMDMtMDYtMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoY19pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBhIGxvY2F0aW9uX3QuIFNldCBpbnB1dAoJZmlsZW5hbWUgdG8gPGludGVybmFsPi4KCSogdHJlZS5jIChtYWtlX25vZGUpOiBKdXN0IGNvcHkgdGhlIGN1cnJlbnQgbG9jYXRpb24uCgoyMDAzLTA2LTI5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMTIxMAoJKiBmb2xkLWNvbnN0IChkZWNvZGVfZmllbGRfcmVmZXJlbmNlKTogUmV2ZXJ0IDIwMDMtMDYtMjYgcGF0Y2guCgoyMDAzLTA2LTI5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiB0b3BsZXYuYyAoZmxhZ19kdW1teSk6IFJlbW92ZS4KCShmX29wdGlvbnMpOiBSZXN0b3JlIGZsYWcgcG9pbnRlcnMuCgoyMDAzLTA2LTI5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogQWRkIDk3MC4KCSogY29uZmlnLmdjYzogQWRkIDk3MC4KCjIwMDMtMDYtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX0FUX3N0cmluZyk6IFJlcGxhY2UgZ2djX2FsbG9jX3N0cmluZyAoWCwKCS0xKSB3aXRoIGdnY19zdHJkdXAuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBMaWtld2lzZS4KCjIwMDMtMDYtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaXAyay9pcDJrLmMgKGlwMmtfcmVvcmcpOiBVc2UgSU5TTl9QIGluc3RlYWQgb2YgaXRzCglkZWZpbml0aW9uLgoKMjAwMy0wNi0yOSAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogb3B0cy5jOiBJbmNsdWRlIGluc24tYXR0ci5oLgoJKiBNYWtlZmlsZS5pbiAob3B0cy5vKTogRGVwZW5kIG9uIElOU05fQVRUUl9ILgoKMjAwMy0wNi0yNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IFVzZSBwcm9wZXIgdGVzdCBmb3IgYSByZWdpc3RlcgoJYmVpbmcgcGFydCBvZiB0aGUgcmV0dXJuIHZhbHVlLgoKMjAwMy0wNi0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hdnIvYXZyLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDMtMDYtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaDogUmVwbGFjZSBhdnJfc2ltcGxpZnlfY29tcGFyaXNpb25fcAoJd2l0aCBhdnJfc2ltcGxpZnlfY29tcGFyaXNvbl9wLgoJKiBjb25maWcvYXZyL2F2ci5jOiBMaWtld2lzZS4KCjIwMDMtMDYtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidWlsdGlucy5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGNncmFwaC5jOiBMaWtld2lzZS4KCSogY3BwbGV4LmM6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9pd21teHQubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4Lm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmg6IExpa2V3aXNlLgoKMjAwMy0wNi0yOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IFByZWRpY2F0ZQoJX19tYzY4MDIwX18gb24gVEFSR0VUXzY4MDIwLgoKMjAwMy0wNi0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDAzLTA2LTI4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1wYXJzZS5pbiAoeXlsZXhzdHJpbmcpOiBVc2UgYSBsb2NhdGlvbl90LgoKCSogZGlhZ25vc3RpYy5oIChkaWFnbm9zdGljX3NldF9pbmZvKTogUmVwbGFjZSBmaWxlIGFuZCBsaW5lbm8KCXBhcmFtZXRlcnMgd2l0aCBhIGxvY2F0aW9uX3QuCgkqIGRpYWdub3N0aWMuYyAoZGlhZ25vc3RpY19zZXRfaW5mbyk6IFJlcGxhY2UgZmlsZSBhbmQgbGluZW5vCglwYXJhbWV0ZXJzIHdpdGggYSBsb2NhdGlvbl90LgoJKGluZm9ybSwgd2FybmluZywgcGVkd2FybiwgZXJyb3IsIHNvcnJ5LCBmYXRhbF9lcnJvciwKCWludGVybmFsX2Vycm9yLCB3YXJuaW5nX3dpdGhfZGVjbCwgcGVkd2Fybl93aXRoX2RlY2wsCgllcnJvcl93aXRoX2RlY2wpOiBBZGp1c3QuCgkqIGMtZXJyb3IuYyAocGVkd2Fybl9jOTkpOiBBZGp1c3QuCgkqIGMtZm9ybWF0LmMgKHN0YXR1c193YXJuaW5nKTogQWRqdXN0LgoJKiBydGwtZXJyb3IuYyAoZmlsZV9hbmRfbGluZV9mb3JfYXNtKTogUmVuYW1lIHRvIC4uLgoJKGxvY2F0aW9uX2Zvcl9hc20pOiBSZXR1cm4gYSBsb2NhdGlvbl90LgoJKGRpYWdub3N0aWNfZm9yX2FzbSk6IEFkanVzdC4KCjIwMDMtMDYtMjggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcHRyYWQuYyAoc2tpcF9tYWNyb19ibG9ja19jb21tZW50KTogTmV3LgoJKGNvcHlfY29tbWVudCk6IFVzZSBpdCBpZiBhcHByb3ByaWF0ZS4KCjIwMDMtMDYtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnY3NlLmMgKGNvbXB1dGVfbGRfbW90aW9uX21lbXMpOiBVc2UgSU5TTl9QIGluc3RlYWQgb2YgaXRzCglkZWZpbml0aW9uLgoJKHN0b3JlX2tpbGxlZF9pbl9pbnNuKTogTGlrZXdpc2UuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBMaWtld2lzZS4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2ZpbmFsX3ByZXNjYW5faW5zbik6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKGRlYWRfcmVnaXN0ZXJfaGVyZSk6IExpa2V3aXNlLgoJKG02OGhjMTFfcmVhc3NpZ25fcmVncyk6IExpa2V3aXNlLgoJKG02OGhjMTFfcmVvcmcpOiBMaWtld2lzZS4KCjIwMDMtMDYtMjggIEdhYnJpZWwgRG9zIFJlaXMgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9pbnRlZ2VyX3dpdGhfcHJlY2lzaW9uKTogTmV3IG1hY3JvLgoJKG91dHB1dF9mb3JtYXQpOiBVc2UgaXQuICBIYW5kbGUgbW9yZSBmb3JtYXQgc3BlY2lmaWVycy4KCShvdXRwdXRfbG9uZ19kZWNpbWFsKTogUmVtb3ZlLgoJKG91dHB1dF91bnNpZ25lZF9kZWNpbWFsKTogTGlrZXdpc2UuCgkob3V0cHV0X2xvbmdfdW5zaWduZWRfZGVjaW1hbCk6IExpa2V3aXNlLgoJKG91dHB1dF9vY3RhbCk6IExpa2V3aXNlLgoJKG91dHB1dF9sb25nX29jdGFsKTogTGlrZXdpc2UuCgkob3V0cHV0X2hleGFkZWNpbWFsKTogTGlrZXdpc2UuCgkob3V0cHV0X2xvbmdfaGV4YWRlY2ltYWwpOiBMaWtld2lzZS4KCShvdXRwdXRfbG9uZ19sb25nX2RlY2ltYWwpOiBMaWtld2lzZS4KCjIwMDMtMDYtMjggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBGb2xsb3cgcmVjZW50IGVtaXRfbm90ZSBBUEkgY2hhbmdlLgoKMjAwMy0wNi0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtcGFyc2UuaW4gKCV1bmlvbik6IFJlcGxhY2UgZmlsZW5hbWUgJiBsaW5lbm8gd2l0aCBsb2NhdGlvbi4KCShzYXZlX2ZpbGVuYW1lLCBzYXZlX2xpbmVubyk6IFJlbW92ZS4KCShzYXZlX2xvY2F0aW9uKTogTmV3LgoJKGZuZGVmLCBvbGRfc3R5bGVfcGFybV9kZWNsc18xLCBsaW5lbm9fZGF0YWRlY2wsIGxpbmVub19kZWNsLAoJbmVzdGVkX2Z1bmN0aW9uLCBub3R5cGVfbmVzdGVkX2Z1bmN0aW9uLCBpZl9wcmVmaXgsIGxpbmVub19zdG10LAoJbGluZW5vX2xhYmVsLCBsYWJlbCk6IEFkanVzdC4KCjIwMDMtMDYtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoY19zdHJsZW4pOiBBZGQgb25seV92YWx1ZSBhcmd1bWVudC4KCUhhbmRsZSBDT05EX0VYUFIgYW5kIENPTVBPVU5EX0VYUFIuCgkoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogT3B0aW1pemUgYWxzbyBzdHJsZW4gKGkrKyA/ICJmb28iIDogImJhciIpLgoJQWRqdXN0IGNfc3RybGVuIGNhbGxlcnMuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY3B5LCBleHBhbmRfYnVpbHRpbl9zdHJuY3B5LAoJZXhwYW5kX2J1aWx0aW5fc3RyY21wLCBleHBhbmRfYnVpbHRpbl9zdHJuY21wLAoJZXhwYW5kX2J1aWx0aW5fZnB1dHMsIGV4cGFuZF9idWlsdGluX3NwcmludGYsCglmb2xkX2J1aWx0aW4pOiBBZGp1c3QgY19zdHJsZW4gY2FsbGVycy4KCjIwMDMtMDYtMjggIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGJiLXJlb3JkZXIuYyAoZmluZF90cmFjZXNfMV9yb3VuZCk6IERvIG5vdCBzZW5kIGJhc2ljIGJsb2NrCgl0byBuZXh0IHJvdW5kIHdoZW4gd2UgYXJlIGluIHRoZSBsYXN0IHJvdW5kLgoKMjAwMy0wNi0yOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCSogb3B0cy5jOiBJbmNsdWRlIHRtX3AuaC4KCShoYW5kbGVfb3B0aW9ucyk6IE1ha2Ugc3RhdGljLgoJKGRlY29kZV9vcHRpb25zKTogQ29waWVkIGZyb20gdG9wbGV2LmMuCgkqIG9wdHMuaCAoZGVjb2RlX29wdGlvbnMpOiBOZXcuCgkqIHRvcGxldi5jIChwYXJzZV9vcHRpb25zX2FuZF9kZWZhdWx0X2ZsYWdzKTogTW92ZSBtb3N0IHRvIG9wdHMuYywKCXNvbWUgdG8uLi4KCShnZW5lcmFsX2luaXQpOiAuLi5oZXJlLgoJKHRvcGxldl9tYWluKTogVXNlIGRlY29kZV9vcHRpb25zIGluc3RlYWQuCgkqIHRvcGxldi5oIChzYXZlX2FyZ2MsIHNhdmVfYXJndik6IE5ldy4KCjIwMDMtMDYtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHBsb3cuYyAoZmluZF9uZXh0X3JlZik6IFJlbW92ZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBmaW5kX25leHRfcmVmLgoKMjAwMy0wNi0yNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGFub255bW91cyBkZWZpbmVfc3BsaXQpOiBBZGp1c3QgZW1pdF9ub3RlCgljYWxsIHRvIG1hdGNoIHJlY2VudCBBUEkgY2hhbmdlLgoKMjAwMy0wNi0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jIChmbGFnX2RlYnVnX29ubHlfdXNlZF9zeW1ib2xzKTogRGVsZXRlIHJlZHVuZGFudAoJZGVjbGFyYXRpb24uCgoJKiBjLWZvcm1hdC5jIChjaGVja19mb3JtYXRfc3RyaW5nLCBnZXRfY29uc3RhbnQpCgkqIGNmZ3J0bC5jIChydGxfc3BsaXRfZWRnZSk6CglNYXJrIHRoZSBkZWZpbml0aW9uIHN0YXRpYywgbWF0Y2hpbmcgdGhlIGZvcndhcmQgZGVjbGFyYXRpb24uCgoyMDAzLTA2LTI3ICBHdW50aGVyIE5pa2wgPGduaUBnZWNrby5kZT4KCgkqIHVud2luZC1jLmMgKFBFUlNPTkFMSVRZX0ZVTkNUSU9OKTogRGVsZXRlIGR1cGxpY2F0ZSBkZWZpbmUuCgoJUFIgdGFyZ2V0LzExMDE0CgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfbWlfdGh1bmspOiBVc2UgY29ycmVjdCBhc3NlbWJseQoJc3ludGF4IGZvciBNSVQgLyBNT1RPUk9MQS4KCglQUiBvdGhlci8xMDI0MAoJKiBjb25maWd1cmUuaW46IFJlbW92ZWQgJChYQ0ZMQUdTKSBmcm9tIEJVSUxEX0NGTEFHUyBmb3IgYnVpbGQgIT0gaG9zdC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMy0wNi0yNyAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19idWlsZF92YV9saXN0KTogTWFrZSBwYWRkaW5nIGluCgl2YV9saXN0IHN0cnVjdHVyZSBleHBsaWNpdCB0byBhdm9pZCAtV3BhZGRlZCB3YXJuaW5ncy4KCjIwMDMtMDYtMjcgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoU0VDT05EQVJZX09VVFBVVF9SRUxPQURfQ0xBU1MpOiBEZWZpbmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9zZWNvbmRhcnlfb3V0cHV0X3JlbG9hZF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9zZWNvbmRhcnlfb3V0cHV0X3JlbG9hZF9jbGFzcyk6CglEZWNsYXJlIGl0LgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgicmVsb2FkX291dHRpIiwgInJlbG9hZF9vdXRkaSIsCgkicmVsb2FkX291dGRmIik6IE5ldyBleHBhbmRlcnMuCgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibW92dGkiICsgc3BsaXR0ZXJzKTogSGFuZGxlIG5vbi1vZmZzZXR0YWJsZQoJbWVtb3J5IG9wZXJhbmRzIGFzIHNvdXJjZS4KCSgibW92ZGkiICsgc3BsaXR0ZXJzKTogTGlrZXdpc2UuCgkoIm1vdmRmIiArIHNwbGl0dGVycyk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfc3BsaXRfb2tfcCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9zcGxpdF9va19wKTogRGVjbGFyZSBpdC4KCjIwMDMtMDYtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb21iaW5lLmMgKGZvcmNlX3RvX21vZGUpOiBSZXBsYWNlIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uCglvZiBJTlRWQUxzIHdpdGggYSBwb2ludGVyIGVxdWFsaXR5IGNvbXBhcmlzb24uCgkoc2ltcGxpZnlfY29tcGFyaXNvbik6IExpa2V3aXNlLgoKMjAwMy0wNi0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGp1bXAuYyAocnR4X3JlbnVtYmVyZWRfZXF1YWxfcCk6IFJlcGxhY2UgYW4gZXhwcmVzc2lvbiB0aGF0CglpcyBrbm93biB0byBiZSAwIHdpdGggMC4KCjIwMDMtMDYtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnY3NlLmMgKGV4cHJfZXF1aXZfcCk6IFJlcGxhY2UgZXhwcmVzc2lvbnMgdGhhdCBhcmUga25vd24gdG8KCWJlIDAgd2l0aCAwLgoKMjAwMy0wNi0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNzZS5jIChmb2xkX3J0eCk6IFJlcGxhY2UgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24gb2YgSU5UVkFMcwoJd2l0aCBhIHBvaW50ZXIgZXF1YWxpdHkgY29tcGFyaXNvbi4KCjIwMDMtMDYtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBydGxhbmFsLmMgKHJlZ19tZW50aW9uZWRfcCk6IFJldHVybiAwIGVhcmxpZXIgaWYgUkVHIGFuZCBJTgoJYXJlIGtub3duIHRvIGJlIG5vdCBlcXVpdmFsZW50LgoKMjAwMy0wNi0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChmdW5jdGlvbl9hcmcpOiBEb24ndCBwYXNzIHNtYWxsIGFnZ3JlZ2F0ZXMKCWluIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4gIFZhbGlkYXRlIHRoYXQgd2UgZG9uJ3QgcmVjZWl2ZSBjb21wbGV4Cgl2YWx1ZXMgaGVyZS4gIFVzZSAjZWxpZi4KCShyZXR1cm5faW5fbWVtb3J5LCBmdW5jdGlvbl92YWx1ZSk6IE5ldy4KCShhbHBoYV92YV9hcmcpOiBIYW5kbGUgY29tcGxleCB2YWx1ZXMgYXMgdHdvIGFyZ3VtZW50cy4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBVc2UgcmV0dXJuX2luX21lbW9yeS4KCShGVU5DVElPTl9WQUxVRSwgTElCQ0FMTF9WQUxVRSk6IFVzZSBmdW5jdGlvbl92YWx1ZS4KCShTUExJVF9DT01QTEVYX0FSR1MpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogVXBkYXRlLgoKMjAwMy0wNi0yNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogZ2djLXBhZ2UuYyAoaW52ZXJzZV90YWJsZSk6IENoYW5nZSB0eXBlIG9mIG11bHQgdG8gc2l6ZV90LgoJKGNvbXB1dGVfaW52ZXJzZSk6IENvbXB1dGUgaW52ZXJzZSB1c2luZyBzaXplX3QsIG5vdCB1bnNpZ25lZCBpbnQuCglDb21wdXRlIGludmVyc2UgYWxzbyBmb3Igc2l6ZXMgbGFyZ2VyIHRoYW4gaGFsZiBhIG1hY2hpbmUgcGFnZS4KCkZyaSBKdW4gMjcgMTg6MzY6MTIgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uKTogIE9ubHkgdmFycG9vbGl6ZSBhcmd1bWVudAoJd2hlbiBjYWxsZWQgYmVmb3JlIGNncmFwaF9vcHRpbWl6ZS4KCjIwMDMtMDYtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvZGFyd2luLmgsIGNvbmZpZy9lbGZvcy5oLCBjb25maWcvaTk2MC9pOTYwLWNvZmYuaAoJKiBjb25maWcvbTY4ay9jb2ZmLmg6IEFTTV9GSUxFX1NUQVJUX0ZJTEVfRElSRUNUSVZFIHNob3VsZAoJYmUgVEFSR0VUX0FTTV9GSUxFX1NUQVJUX0ZJTEVfRElSRUNUSVZFLgoKRnJpIEp1biAyNyAxNzo0MToxNiBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfbm9kZSwgY2dyYXBoX3ZhcnBvb2xfbm9kZSk6IEF2b2lkIHJlLWluaXRpYWxpemluZwoJb2Yga25vd25fZGVjbHMuCgoyMDAzLTA2LTI3ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGRlZmF1bHRzLmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IERlZmluZSBkZWZhdWx0IGhlcmUuCgkqIHJlZ2NsYXNzLmM6IERvbid0IGRlZmluZSBkZWZhdWx0IFJFR0lTVEVSX01PVkVfQ09TVCBoZXJlLgoJKiByZWxvYWQuYywgcmVsb2FkMS5jOiBEaXR0by4KCjIwMDMtMDYtMjcgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbGFncy5oOiBSZWFsbHkgaW5zdGFsbCBwcmV2aW91cyBjaGFuZ2UuCgoyMDAzLTA2LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnRsLmggKGVtaXRfbm90ZSk6IFJlbW92ZSBGSUxFIHBhcmFtZXRlci4KCSogZW1pdC1ydGwuYyAoZW1pdF9saW5lX25vdGUpOiBBZGp1c3QgZW1pdF9ub3RlIGNhbGwuCgkoZW1pdF9ub3RlKTogUmVtb3ZlIEZJTEUgcGFyYW1ldGVyLiBBZGp1c3QuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2V4cGVjdCk6IEFkanVzdCBlbWl0X25vdGUgY2FsbC4KCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCShleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKiBjZmdsYXlvdXQuYyAocmVlbWl0X2luc25fYmxvY2tfbm90ZXMpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfaW5zbl9jaGFpbik6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoZXhwYW5kX2VoX3JlZ2lvbl9zdGFydCwgZXhwYW5kX2VoX3JlZ2lvbl9lbmQsCglzamxqX2VtaXRfZnVuY3Rpb25fZW50ZXIpOiBMaWtld2lzZS4KCSogZXhwbG93LmMgKHByb2JlX3N0YWNrX3JhbmdlKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZW1pdF9ibG9ja19tb3ZlX3ZpYV9sb29wKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGluaXRfZnVuY3Rpb25fc3RhcnQsIGV4cGFuZF9mdW5jdGlvbl9zdGFydCwKCWV4cGFuZF9mdW5jdGlvbl9lbmQsIHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24sIGNvcHlfaW5zbl9saXN0KTogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jIChjb21wZW5zYXRlX2VkZ2UpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChyZWxvYWQpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChob2lzdF9pbnNuX3RvX2VkZ2UpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfZml4dXAsIGV4cGFuZF9zdGFydF9sb29wLCBleHBhbmRfc3RhcnRfbnVsbF9sb29wLAoJZXhwYW5kX2xvb3BfY29udGludWVfaGVyZSwgZXhwYW5kX2VuZF9sb29wLCBleHBhbmRfY29udGludWVfbG9vcCwKCWV4cGFuZF9leGl0X2xvb3BfdG9wX2NvbmQsIGV4cGFuZF92YWx1ZV9yZXR1cm4sCglleHBhbmRfc3RhcnRfYmluZGluZ3NfYW5kX2Jsb2NrLCBleHBhbmRfZW5kX2JpbmRpbmdzLAoJZXhwYW5kX2RlY2xfY2xlYW51cCwgZXhwYW5kX3N0YXJ0X2Nhc2UpOiBMaWtld2lzZS4KCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5CgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9vdXRwdXRfbWlfdGh1bmtfb3NmKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfZWhfdG9jX3Jlc3RvcmUsCglyczYwMDBfZW1pdF9hbGxvY2F0ZV9zdGFjaywgcnM2MDAwX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSwKCXJzNjAwMF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUsIHJzNjAwMF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgoyMDAzLTA2LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLmggKGdyb2tmaWVsZCk6IFJlbW92ZSB1bnVzZWQgZmlsZW5hbWUgYW5kIGxpbmUgcGFyYW1ldGVycy4KCSogYy1kZWNsLmMgKGdyb2tmaWVsZCk6IFJlbW92ZSB1bnVzZWQgZmlsZW5hbWUgYW5kIGxpbmUJcGFyYW1ldGVycy4KCSogYy1wYXJzZS5pbiAoY29tcG9uZW50X2RlY2wpOiBBZGp1c3QgZmllbGQgZ3Jva2tpbmcgcnVsZXMsIGFkanVzdAoJZ3Jva2ZpZWxkIGNhbGxzLgoJKGNvbXBvbmVudF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoY29tcG9uZW50X25vdHlwZV9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfbW9kdWxlX2Rlc2NyaXB0b3IpOiBBZGp1c3QgZ3Jva2ZpZWxkCgljYWxscy4KCShidWlsZF9wcm90b2NvbF90ZW1wbGF0ZSwgYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV9saXN0X3RlbXBsYXRlLAoJYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV90ZW1wbGF0ZSwgYnVpbGRfY2F0ZWdvcnlfdGVtcGxhdGUsCglidWlsZF9zZWxlY3Rvcl90ZW1wbGF0ZSwgYnVpbGRfY2xhc3NfdGVtcGxhdGUsCglidWlsZF9zdXBlcl90ZW1wbGF0ZSwgYnVpbGRfaXZhcl90ZW1wbGF0ZSwKCWJ1aWxkX2l2YXJfbGlzdF90ZW1wbGF0ZSwgYnVpbGRfbWV0aG9kX2xpc3RfdGVtcGxhdGUsCglidWlsZF9tZXRob2RfdGVtcGxhdGUsIGFkZF9pbnN0YW5jZV92YXJpYWJsZSk6IExpa2V3aXNlLgoKMjAwMy0wNi0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN0bXQuYyAoZG9fanVtcF9pZl9lcXVhbCk6IFJldHVybiAwIGVhcmxpZXIgaWYgT1AxIGFuZAoJT1AyIGFyZSBrbm93biB0byBiZSBub3QgZXF1aXZhbGVudC4KCjIwMDMtMDYtMjYgIERldmFuZyBQYXRlbCA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGZpbmFsLmMgKGRlYnVnX2ZsdXNoX3N5bWJvbF9xdWV1ZSk6IE5ldyBmdW5jdGlvbi4KCShkZWJ1Z19xdWV1ZV9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZGVidWdfZnJlZV9xdWV1ZSk6IE5ldyBmdW5jdGlvbi4KCShkZWJ1Z19uZXN0aW5nKTogTmV3IHZhcmlhYmxlLgoJKHN5bWJvbF9xdWV1ZSk6IE5ldyB2YXJpYWJsZS4KCShzeW1ib2xfcXVldWVfaW5kZXgpOiBTYW1lLgoJKHN5bWJvbF9xdWV1ZV9zaXplKTogU2FtZS4KCSogZGVidWcuaCAoZGVidWdfZmx1c2hfc3ltYm9sX3F1ZXVlKTogTmV3LgoJKGRlYnVnX3F1ZXVlX3N5bWJvbCk6IE5ldy4KCShkZWJ1Z19mcmVlX3F1ZXVlKTogTmV3LgoJKGRlYnVnX25lc3RpbmcpOiBOZXcuCgkoc3ltYm9sX3F1ZXVlX2luZGV4KTogTmV3LgoJKiBkYnhvdXQuYyAoREJYT1VUX0RFQ1JfTkVTVElORyk6IE5ldyBtYWNyby4KCShEQlhPVVRfREVDUl9ORVNUSU5HX0FORF9SRVRVUk4pOiBOZXcgbWFjcm8uCgkoZGJ4b3V0X2luaXQpOiBEZWxheSBzeW1ib2wgb3V0cHV0LgoJKGRieG91dF9nbG9iYWxfZGVjbCk6IFNhdmUsIHNldCBhbmQgcmVzZXQgVFJFRV9VU0VEIGJpdCBhcm91bmQKCWRieG91dF9zeW1ib2woKSBjYWxsLgoJKGRieG91dF9iZWdpbl9mdW5jdGlvbik6IFNhbWUuCgkoZGJ4b3V0X2ZpbmlzaCk6IEZyZWUgc3ltYm9sIHF1ZXVlLgoJKGRieG91dF90eXBlKTogUHV0IGFwcHJvcHJpYXRlIHN5bWJvbHMgaW4gcXVldWUuCgkoZGJ4b3V0X3N5bWJvbCk6IFB1dCBpbmZvIGZvciBzeW1ib2wncyB0eXBlIGluIHF1ZXVlLgoJRGVjcmVtZW50L0luY3JlbWVudCBuZXN0aW5nIGNvdW50cyBmbHVzaCBzeW1ib2wgcXVldWUgYXBwcm9wcmlhdGVseS4KCShkYnhvdXRfcGFybXMpOiBJbmNyZW1lbnQgZGJ4b3V0IG5lc3RpbmcuCgkoZGJ4b3V0X3JlZ19wYXJtcyk6IFNhbWUuCgkqIGZsYWdzLmggKGZsYWdfZGVidWdfb25seV91c2VkX3N5bWJvbHMpOiBOZXcuCgkqIHRvcGxldi5jIChmbGFnX2RlYnVnX29ubHlfdXNlZF9zeW1ib2xzKTogTmV3IHZhcmlhYmxlLgoJKGxhbmdfaW5kZXBlbmRlbnRfb3B0aW9ucyk6IEFkZCBlbnRyaWVzIGZvciBuZXcgb3B0aW9uCgktZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctc3ltYm9scy4KCSogY29tbW9uLm9wdDogQWRkIGVudHJ5IGZvciAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctc3ltYm9scy4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbnMpOiBTYW1lLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChDQzFfU1BFQyk6IEludGVycHJldCAtZ3VzZWQgYXMKCS1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy1zeW1ib2xzLgoJKiBkb2MvaW52b2tlLnRleGkgKERlYnVnZ2luZyBPcHRpb25zKTogRG9jdW1lbnQKCS1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy1zeW1ib2xzLgoKMjAwMy0wNi0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zcHJpbnRmKTogVXNlIGNfZ2V0c3RyIGFuZCBzdHJsZW4gdG8KCW9idGFpbiB0aGUgZm9ybWF0IHN0cmluZyBpbnN0ZWFkIG9mIHVzaW5nIFRSRUVfU1RSSU5HX1BPSU5URVIgYW5kCglUUkVFX1NUUklOR19MRU5HVEguICBPbmx5IG9wdGltaXplIHNwcmludGYoZHN0LCIlcyIsc3JjKSB3aGVuIHRoZQoJcmV0dXJuIHZhbHVlIGlzIHVudXNlZCBvciB0aGUgbGVuZ3RoIG9mIHNyYyBpcyBhIGtub3duIGNvbnN0YW50LgoKMjAwMy0wNi0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUkVHSVNURVJfTkFNRVMpOiBSMCBpcyByZWFsbHkgQVAuCgoyMDAzLTA2LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9jYWxsKTogRG9uJ3QgYWRkIGFyLnBmcyBmb3Igc2liY2FsbHMuCgkoaWE2NF9zcGxpdF9jYWxsKTogT25seSBsb2FkIGRlc2NyaXB0b3IgZm9yIEdQIHJlZ2lzdGVyIGlucHV0cy4KCShpYTY0X2V4cGFuZF9lcGlsb2d1ZSk6IENoZWNrIGN1cnJlbnRfZnJhbWVfaW5mby5tYXNrIG5vdAoJY3VycmVudF9mdW5jdGlvbl9pc19sZWFmIHRvIHJlc3RvcmUgYXIucGZzLgoKMjAwMy0wNi0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IEFwcGVuZCB0byBuZXcgQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFCglpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdC4KCjIwMDMtMDYtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IEtpbGwgZnVuY3Rpb24gcmV0dXJuIHZhbHVlCglyZWdpc3RlcnMgYWNyb3NzIHRhaWwgY2FsbHMuCgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IFByZXNlcnZlIGxpdmUtYXQtZW5kIHJlZ2lzdGVycwoJYWNyb3NzIHRhaWwgY2FsbHMuCgoyMDAzLTA2LTI2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHJlbG9hZC5jIChjYW5fcmVsb2FkX2ludG8pOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9yZWxvYWQpOiBVc2UgaXQuCgoyMDAzLTA2LTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGNvbXB1dGVfYV9yb3RhdGVfbGVuZ3RoKTogRml4IHRoZQoJcmVmZXJlbmNlcyB0byB0aGUgYW1vdW50IG9mIGEgcm90YXRpb24uCgoyMDAzLTA2LTI2ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9jb2ZmLmg6IERvbid0IGluY2x1ZGUgZGJ4Y29mZi5oLgoJKiBjb25maWcuZ2NjOiBMaXN0IGl0IGhlcmUuCgoyMDAzLTA2LTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY3NlX3NpbXBsaWZ5X3NldCk6IENhbGwgY3NlbGliX2xvb2t1cAoJZWFybGllci4gIERvbid0IGNoZWNrIGlmIFNSQyBpcyBhIGNvbnN0YW50LgoKMjAwMy0wNi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHBvc3RyZWxvYWQuby4KCVJlbW92ZSBjc2VsaWIuaCBmcm9tIHRoZSBkZXBlbmRlbmN5IGxpc3QgZm9yIHJlbG9hZDEuby4KCUFkZCBhIGRlcGVuZGVuY3kgbGlzdCBmb3IgcG9zdHJlbG9hZC5vLgoJKiByZWxvYWQuaDogQ2hhbmdlIHRoZSBjb21tZW50IGZvciB0aGUgcHJvdG90eXBlIG9mCglyZWxvYWRfY3NlX3JlZ3MuCgkqIHJlbG9hZDEuYzogRG9uJ3QgaW5jbHVkZSBjc2VsaWIuaC4KCShyZWxvYWRfY3NlX3JlZ3MpOiBNb3ZlIHRvIHBvc3RyZWxvYWQuYwoJKHJlbG9hZF9jc2VfcmVnc18xKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9ub29wX3NldF9wKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9zaW1wbGlmeV9zZXQpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKTogTGlrZXdpc2UuCgkoUkVMT0FEX0NPTUJJTkVfTUFYX1VTRVMpOiBMaWtld2lzZS4KCShyZWxvYWRfY29tYmluZV9ydWlkKTogTGlrZXdpc2UuCgkoTEFCRUxfTElWRSk6IExpa2V3aXNlLgoJKHJlbG9hZF9jb21iaW5lKTogTGlrZXdpc2UuCgkocmVsb2FkX2NvbWJpbmVfbm90ZV91c2UpOiBMaWtld2lzZS4KCShyZWxvYWRfY29tYmluZV9ub3RlX3N0b3JlKTogTGlrZXdpc2UuCgkocmVnX3NldF9sdWlkKTogTGlrZXdpc2UuCgkocmVnX29mZnNldCk6IExpa2V3aXNlLgoJKHJlZ19iYXNlX3JlZyk6IExpa2V3aXNlLgoJKHJlZ19tb2RlKTogTGlrZXdpc2UuCgkobW92ZTJhZGRfbHVpZCk6IExpa2V3aXNlLgoJKG1vdmUyYWRkX2xhc3RfbGFiZWxfbHVpZCk6IExpa2V3aXNlLgoJKE1PREVTX09LX0ZPUl9NT1ZFMkFERCk6IExpa2V3aXNlLgoJKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBMaWtld2lzZS4KCShtb3ZlMmFkZF9ub3RlX3N0b3JlKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9zaW1wbGlmeSk6IExpa2V3aXNlLgoJKiBwb3N0cmVsb2FkLmM6IE5ldy4KCjIwMDMtMDYtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChmaW5hbF9wcmVzY2FuX2luc24pOiBSZW1vdmUgc3VwcG9ydCBmb3IKCS1tcnRsLgoJKiBjb25maWcvYXZyL2F2ci5oIChNQVNLX1JUTF9EVU1QKTogUmVtb3ZlLgoJKFRBUkdFVF9SVExfRFVNUCk6IExpa2V3aXNlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSAtbXJ0bC4KCjIwMDMtMDYtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IENoYW5nZSBlbWl0X2Ffcm90YXRlIHRvCglvdXRwdXRfYV9yb3RhdGUuICBBZGQgYSBwcm90b3R5cGUgZm9yIGNvbXB1dGVfYV9yb3RhdGVfbGVuZ3RoLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoZW1pdF9hX3JvdGF0ZSk6IENoYW5nZSB0bwoJb3V0cHV0X2Ffcm90YXRlLgoJKGNvbXB1dGVfYV9yb3RhdGVfbGVuZ3RoKTogTmV3LgoJKGg4MzAwX2FkanVzdF9pbnNuX2xlbmd0aCk6IFJlbW92ZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKEFESlVTVF9JTlNOX0xFTkdUSCk6IFJlbW92ZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhZGp1c3RfbGVuZ3RoKTogUmVtb3ZlLgoJKCpyb3RscWkzXzEpOiBVc2Ugb3V0cHV0X2Ffcm90YXRlIGFuZCBjb21wdXRlX2Ffcm90YXRlX2xlbmd0aC4KCSgqcm90bGhpM18xKTogTGlrZXdpc2UuCgkoKnJvdGxzaTNfMSk6IExpa2V3aXNlLgoKMjAwMy0wNi0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IEFsd2F5cyBzdGFiaWxpemUgdGhlIGFyZ3VtZW50CglsaXN0IGFnYWluc3QgcmUtZXZhbHVhdGlvbi4gIElmIGV4cGFuZF91bm9wIGZhaWxzLCBjYWxsIGV4cGFuZF9jYWxsCgl3aXRoIHRoZSBzdGFiaWxpemVkIGFyZ3VtZW50IGxpc3QgcmF0aGVyIHRoYW4gcmV0dXJuIE5VTExfUlRYLgoJKGV4cGFuZF9idWlsdGluX21hdGhmbjIpOiBMaWtld2lzZSwgYWx3YXlzIHN0YWJpbGl6ZSB0aGUgYXJndW1lbnQKCWxpc3QsIGFuZCBjYWxsIGV4cGFuZF9jYWxsIG91cnNlbHZlcyBpZiBleHBhbmRfYmlub3AgZmFpbHMuCgoyMDAzLTA2LTI2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMTIxMAoJKiBmb2xkLWNvbnN0IChkZWNvZGVfZmllbGRfcmVmZXJlbmNlKTogU3RyaXAgb25seSBOT1BzIHRoYXQKCWRvbid0IGFmZmVjdCB0aGUgc2lnbi4KCjIwMDMtMDYtMjYgIERoYW5hbmpheSBEZXNocGFuZGUgIDxkaGFuYW5qYXlkQGtwaXRjdW1taW5zLmNvbT4KCgkqIGdjYy9jb25maWcvc2gvc2gubWQgKHB1c2hfZnBzY3IpOiBFbmFibGUgZm9yIFRBUkdFVF9TSDJFLgoJKHBvcF9mcHNjciwgZnB1X3N3aXRjaCk6IExpa2V3aXNlLgoKMjAwMy0wNi0yNiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogdmFsdWUtcHJvZi5jOiBOZXcuCgkqIHZhbHVlLXByb2YuaDogTmV3LgoJKiBNYWtlZmlsZS5pbiAodmFsdWUtcHJvZi5vKTogTmV3LgoJKExJQkdDT1YpOiBBZGQgX2djb3ZfbWVyZ2Vfc2luZ2xlIGFuZCBfZ2Nvdl9tZXJnZV9kZWx0YQoJKHByb2ZpbGUubyk6IEFkZCB2YWx1ZS1wcm9mLmggYW5kIHRyZWUuaCBkZXBlbmRlbmN5LgoJKiBmbGFncy5oIChmbGFnX3Byb2ZpbGVfdmFsdWVzKTogRGVjbGFyZS4KCSogZ2Nvdi1pby5oIChHQ09WX0NPVU5URVJTLCBHQ09WX0NPVU5URVJfTkFNRVMsIEdDT1ZfTUVSR0VfRlVOQ1RJT05TKToKCUFkZCBuZXcgY291bnRlcnMuCgkoR0NPVl9DT1VOVEVSX1ZfSU5URVJWQUwsIEdDT1ZfQ09VTlRFUl9WX1BPVzIsIEdDT1ZfQ09VTlRFUl9WX1NJTkdMRSwKCUdDT1ZfQ09VTlRFUl9WX0RFTFRBKTogTmV3IGNvdW50ZXIgc2VjdGlvbnMuCgkoX19nY292X21lcmdlX3NpbmdsZSwgX19nY292X21lcmdlX2RlbHRhKTogRGVjbGFyZS4KCSogZmxvdy5jIChtYXJrX3VzZWRfcmVncyk6IFNldCBzdWJyZWdzX29mX21vZGUgb25seSB3aGVuIHRoZQoJc3RydWN0dXJlIGlzIGluaXRpYWxpemVkLgoJKiBsaWJnY292LmMgKF9fZ2Nvdl9tZXJnZV9zaW5nbGUsIF9fZ2Nvdl9tZXJnZV9kZWx0YSk6IE5ldyBmdW5jdGlvbnMuCgkqIHByb2ZpbGUuYzogSW5jbHVkZSB2YWx1ZS1wcm9mLmggYW5kIHRyZWUuaC4KCShnZW5faW50ZXJ2YWxfcHJvZmlsZXIsIGdlbl9wb3cyX3Byb2ZpbGVyLCBnZW5fb25lX3ZhbHVlX3Byb2ZpbGVyLAoJZ2VuX2NvbnN0X2RlbHRhX3Byb2ZpbGVyLCBpbnN0cnVtZW50X3ZhbHVlcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGdldF9leGVjX2NvdW50cyk6IEZpeCBjb21tZW50LgoJKGJyYW5jaF9wcm9iKTogSW52b2tlIGluc3RydW1lbnRfdmFsdWVzLgoJKiB0b3BsZXYuYyAoZmxhZ19wcm9maWxlX3ZhbHVlcyk6IE5ldyBmbGFnLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mcHJvZmlsZS12YWx1ZXMpOiBEb2N1bWVudC4KCjIwMDMtMDYtMjYgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIE1ha2VmaWxlLmluIChjZmdydGwubyk6IEFkZCBleHByLmggZGVwZW5kZW5jeS4KCSogY2ZncnRsLmM6IEluY2x1ZGUgZXhwci5oLgoJKG1hcmtfa2lsbGVkX3JlZ3MsIHNhZmVfaW5zZXJ0X2luc25fb25fZWRnZSk6IE5ldwoJZnVuY3Rpb25zLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEFWT0lEX0NDTU9ERV9DT1BJRVMpOiBEZWZpbmUuCgkqIGJhc2ljLWJsb2NrLmggKHNhZmVfaW5zZXJ0X2luc25fb25fZWRnZSk6IERlY2xhcmUuCgoyMDAzLTA2LTI2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLW9wdHMuYyAobWlzc2luZ19hcmcpOiBNYWtlIG5vbi1zdGF0aWMuCgkoY19jb21tb25faGFuZGxlX29wdGlvbik6IERvbid0IGNoZWNrIGZvciBtaXNzaW5nIGFyZ3VtZW50cy4KCSogb3B0cy5jIChoYW5kbGVfb3B0aW9uKTogQ2hlY2sgZm9yIG1pc3NpbmcgYXJndW1lbnRzLgoKMjAwMy0wNi0yNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9wb3dlcjQubWQgKHBvd2VyNC12ZWNjb21wbGV4KTogQ29ycmVjdCBsYXRlbmN5LgoKMjAwMy0wNi0yNSAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAobGRfdmVycyk6IFBvcnRhYmlsaXR5IFtzZWRdLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgd2l0aCBhdXRvY29uZjIxMy4KCjIwMDMtMDYtMjUgIEguSi4gTHUgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBuZXcgYnVpbHRpbiBmdW5jdGlvbnMgZm9yIEludGVsCglQcmVzY290dCBOZXcgSW50cnVuY3Rpb25zLgoKCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBuZXcgY29tbWFuZC1saW5lIG9wdGlvbnMsIC1tcG5pIGFuZAoJLW1uby1wbmksIGZvciBJbnRlbCBQcmVzY290dCBOZXcgSW50cnVuY3Rpb25zLgoKCSogY29uZmlnLmdjYyAoZXh0cmFfaGVhZGVycyk6IEFkZCBwbW1pbnRyaW4uaCBmb3IgaVszNDU2N104Ni0qLSouCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBUdXJuIG9uIE1BU0tfU1NFMgoJZm9yIC1tcG5pLiBUdXJuIG9uIE1BU0tfU1NFIGZvciAtbXNzZTIuCgkoYmRlc2NfMmFyZyk6IEFkZCBQTkkgYnVpbHRpbnMgd2l0aCAyIGFyZ3MuCgkoYmRlc2NfMWFyZyk6IEFkZCBQTkkgYnVpbHRpbnMgd2l0aCAxIGFyZy4KCShpeDg2X2luaXRfbW14X3NzZV9idWlsdGlucyk6IEhhbmRsZSBQTkkgYnVpbHRpbnMuCgkoaXg4Nl9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChNQVNLXzNETk9XLCBNQVNLXzNETk9XX0EsCglNQVNLXzEyOEJJVF9MT05HX0RPVUJMRSwgTUFTS182NEJJVCwgTUFTS19NU19CSVRGSUVMRF9MQVlPVVQsCglNQVNLX1RMU19ESVJFQ1RfU0VHX1JFRlMpOiBSZW51bWJlcmVkLgoJKFRBUkdFVF9QTkkpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogRG9uJ3QgZW5hYmxlIE1BU0tfU1NFIGZvciAtbXNzZTIgaGVyZS4gQWRkCgktbXBuaSBhbmQgLW1uby1wbmkuCgkoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmVkIF9fUE5JX18gZm9yIFBOSS4KCShpeDg2X2J1aWx0aW5zKTogQWRkIFBOSSBidWlsdGlucy4KCShjb25maWcvaTM4Ni9pMzg2Lm1kKTogQWRkIFBOSSBwYXR0ZXJucy4KCgkqIGNvbmZpZy9pMzg2L3BtbWludHJpbi5oOiBOZXcgZmlsZS4KCjIwMDMtMDYtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGNhbGwpOiBGaXggdGhlIGluc24gbGVuZ3Rocy4KCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgpUaHUgSnVuIDI2IDAwOjEzOjM1IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYy1jb21tb24uYyAoaGFuZGxlX3VzZWRfYXR0cmlidXRlKTogVXNlIG1hcmtfcmVmZXJlbmNlZC4KCSogdmFyYXNtLmMgKG1hcmtfcmVmZXJlbmNlZCk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKGFzc2VtYmxlX25hbWUpOiAuLi4gaGVyZS4KCSogdHJlZS5oIChtYXJrX3JlZmVyZW5jZWQpOiBEZWNsYXJlLgoKMjAwMy0wNi0yNSAgV29sZmdhbmcgQmFuZ2VydGggIDxiYW5nZXJ0aEBkZWFsaWkub3JnPgoKCSogZ2NjYnVnLmluOiBBZGQgUENIIHRvIGxpc3Qgb2YgY2F0ZWdvcmllcy4KCjIwMDMtMDYtMjUgTWFydGluIFNjaGFmZm5lciA8c2NoYWZmbmVyQGdteC5saT4KCgkqIGNwcGZpbGVzLmM6IENsYXJpZnkgY29tbWVudHMuCgkqIGNwcGhhc2guaDogTGlrZXdpc2UuCgkqIGNwcGxpYi5oOiBMaWtld2lzZS4KCSogY3BwbWFjcm8uYzogTGlrZXdpc2UuCgkqIG1rZGVwcy5oOiBMaWtld2lzZS4KCjIwMDMtMDYtMjUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMtb3B0cy5jIChjb21wbGFpbl93cm9uZ19sYW5nLCB3cml0ZV9sYW5ncyk6IFJlbW92ZS4KCShjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogQ29tcGxhaW50cyBhYm91dCB3cm9uZyBsYW5ndWFnZSBhcmUKCWhhbmRsZWQgaW4gb3B0cy5jIG5vdy4KCSogb3B0cy5jIChjb21wbGFpbl93cm9uZ19sYW5nLCB3cml0ZV9sYW5ncywgaGFuZGxlX29wdGlvbnMpOiBOZXcuCgkoZmluZF9vcHQpOiBGaXggdGhpbmtvLgoJKGhhbmRsZV9vcHRpb24pOiBVcGRhdGUgcHJvdG90eXBlLiAgQ29tcGxhaW4gYWJvdXQgc3dpdGNoZXMgZm9yCglhIGRpZmZlcmVudCBmcm9udCBlbmQuCgkqIG9wdHMuaCAobGFuZ19uYW1lcywgaGFuZGxlX29wdGlvbnMpOiBOZXcuCgkoaGFuZGxlX29wdGlvbik6IFJlbW92ZS4KCSogb3B0cy5zaDogV3JpdGUgb3V0IGxhbmd1YWdlIG5hbWVzIGFycmF5LgoJKiB0b3BsZXYuYyAocGFyc2Vfb3B0aW9uc19hbmRfZGVmYXVsdF9mbGFncyk6IFVzZSBoYW5kbGVfb3B0aW9ucy4KCjIwMDMtMDYtMjUgIEguSi4gTHUgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChNQVNLX1NTRTEpOiBSZW1vdmVkLgoJKE1BU0tfU1NFMTY0KTogUmVtb3ZlZC4KCShNQVNLX1NTRTI2NCk6IFJlbW92ZWQuCgkoYmRlc2NfMmFyZyk6IFJlcGxhY2UgTUFTS19TU0UxIHdpdGggTUFTS19TU0UuIFJlcGxhY2UKCU1BU0tfU1NFMTY0IHdpdGggTUFTS19TU0UgfCBNQVNLXzY0QklULiBSZXBsYWNlIE1BU0tfU1NFMjY0Cgl3aXRoIE1BU0tfU1NFMiB8IE1BU0tfNjRCSVQuCgkoYmRlc2NfMWFyZyk6IExpa2V3aXNlLgoJKGl4ODZfaW5pdF9tbXhfc3NlX2J1aWx0aW5zKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9TU0UpOiBSZW1vdmUgTUFTS19TU0UyLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEVuYWJsZSBib3RoIE1BU0tfU1NFIGFuZCBNQVNLX1NTRTIgZm9yCgktbXNzZTIuCgoyMDAzLTA2LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBod2ludC5oIChIT1NUX1dJREVfSU5UX1BSSU5ULCBIT1NUX1dJREVfSU5UX1BSSU5UX0MpOiBOZXcgbWFjcm9zLgoJKEhPU1RfV0lERV9JTlRfUFJJTlRfREVDX1NQQUNFLAoJSE9TVF9XSURFX0lOVF9QUklOVF9VTlNJR05FRF9TUEFDRSwKCUhPU1RfV0lERVNUX0lOVF9QUklOVF9ERUNfU1BBQ0UsCglIT1NUX1dJREVTVF9JTlRfUFJJTlRfVU5TSUdORURfU1BBQ0UpOiBEZWxldGUuCgkoSE9TVF9XSURFX0lOVF9QUklOVF9ERUMsIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDX0MsCglIT1NUX1dJREVfSU5UX1BSSU5UX1VOU0lHTkVELCBIT1NUX1dJREVfSU5UX1BSSU5UX0hFWCk6IERlZmluZSBpbgoJdGVybXMgb2YgSE9TVF9XSURFX0lOVF9QUklOVCBhbmQgcG9zc2libHkgSE9TVF9XSURFX0lOVF9QUklOVF9DLgoKCSogZmluYWwuYyAoYXNtX2ZwcmludGYpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVC4KCSogcmEtZGVidWcuYyAoZHVtcF9zdGF0aWNfaW5zbl9jb3N0KTogTGlrZXdpc2UuCgoyMDAzLTA2LTI2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoQklHR0VTVF9GSUVMRF9BTElHTk1FTlQpOiBEZWZpbmUgaW5zdGVhZAoJb2YgQURKVVNUX0ZJRUxEX0FMSUdOIGlmIElOX1RBUkdFVF9MSUJTLgoJUmVwbGFjZSBvY2N1cmFuY2VzIG9mICc/Pz8nIHdpdGggJ1hYWCcgaW5jYXNlIHRoZXkgYXJlCgltaXN0YWtlbiBmb3IgdHJpZ3JhcGhzLgoJKFRIVU1CX1BSSU5UX09QRVJBTkRfQUREUkVTUyk6IGFib3J0IGlmIGEgY29tcG91bmQgYWRkcmVzcwoJZG9lcyBub3QgaGF2ZSBhIHJlZ2lzdGVyIGZvciB0aGUgZmlyc3Qgb3BlcmFuZC4KCjIwMDMtMDYtMjUJRGhhbmFuamF5IERlc2hwYW5kZSA8ZGhhbmFuamF5ZEBrcGl0Y3VtbWlucy5jb20+CgoJKiBjb25maWcvc2gvc2guYyAoc2hfcmVnaXN0ZXJfbW92ZV9jb3N0KToKCUFkZCBjYXNlIGZvciBtb3ZpbmcgYmV0d2VlbiBNQUNfUkVHUy4KCjIwMDMtMDYtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgMTAxNzgKCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogQWRkIG5vX2JvZHlfYmxvY2tzIGJvb2wuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19OT19CT0RZX0JMT0NLUyk6IE5ldzsgZGVmYXVsdCBmYWxzZS4KCSogYy1sYW5nLmMsIG9iamMvb2JqYy1sYW5nLmM6IE92ZXJyaWRlIExBTkdfSE9PS1NfTk9fQk9EWV9CTE9DS1MKCXRvIHRydWUuCgkqIHN0bXQuYyAoaXNfYm9keV9ibG9jayk6IElmIGxhbmdfaG9va3Mubm9fYm9keV9ibG9ja3MsIGFsd2F5cwoJcmV0dXJuIDAuCgoyMDAzLTA2LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYnQtbG9hZC5vKTogRGVwZW5kIG9uICQoVE1fUF9IKS4KCSogYnQtbG9hZC5jOiBJbmNsdWRlICJ0bV9wLmgiLgoKMjAwMy0wNi0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChjb21wdXRlX21vdl9sZW5ndGgpOiBBZGp1c3QgZm9yIHRoZQoJbmV3IG9wdGltaXphdGlvbi4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqbW92c2lfaDgzMDApOiBPcHRpbWl6ZSB0aGUgbG9hZCBvZgoJYW4gU0ltb2RlIGNvbnN0YW50IHdob3NlIHVwcGVyIGFuZCBsb3dlciBhcmUgdGhlIHNhbWUuCgpXZWQgSnVuIDI1IDExOjMxOjU5IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX25hbWUpOiBNYXJrIG5lZWRlZCB2YXJpYWJsZXMgZXZlbiB3aGVuCglnbG9iYWwgaW5mbyBpcyByZWFkeS4KCjIwMDMtMDYtMjQgIEplcnJ5IFF1aW5uICA8amxxdWlubkBvcHRvbmxpbmUubmV0PgoKCVBSIG90aGVyLzExMjgwCgkqIGdjYy9kb2MvaW52b2tlLnRleGkgKE9wdGltaXphdGlvbiBPcHRpb25zKTogUmVtb3ZlIC1PcyBmcm9tCgktZnJlb3JkZXItZnVuY3Rpb25zIGRlc2NyaXB0aW9uLgoKMjAwMy0wNi0yNSAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZHdhcmYyb3V0LmMgKGdlbl9maWVsZF9kaWUpOiBSZXR1cm4gaWYgdHlwZSBvZiBkZWNsIGlzIGVycm9yIG1hcmsuCgoyMDAzLTA2LTI1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogQWRkIG1pc3NpbmcgYnJlYWs7cy4KCjIwMDMtMDYtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IKCWNvbXB1dGVfbW92X2xlbmd0aC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGNvbXB1dGVfbW92X2xlbmd0aCk6IE5ldy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqbW92cWlfaDgzMDApOiBVc2UgaXQuCgkoKm1vdnFpX2g4MzAwaHMpOiBMaWtld2lzZS4KCShtb3ZzdHJpY3RxaSk6IExpa2V3aXNlLgoJKCptb3ZoaV9oODMwMCk6IExpa2V3aXNlLgoJKCptb3ZoaV9oODMwMGhzKTogTGlrZXdpc2UuCgkobW92c3RyaWN0aGkpOiBMaWtld2lzZS4KCSgqbW92c2lfaDgzMDApOiBMaWtld2lzZS4KCSgqbW92c2ZfaDgzMDApOiBMaWtld2lzZS4KCSgqbW92c2lfaDgzMDBocyk6IExpa2V3aXNlLgoJKCptb3ZzZl9oODMwMGhzKTogTGlrZXdpc2UuCgoyMDAzLTA2LTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSoganVtcC5jIChuZXh0X25vbmRlbGV0ZWRfaW5zbik6IFJlbW92ZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBuZXh0X25vbmRlbGV0ZWRfaW5zbi4KCjIwMDMtMDYtMjQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMTMxMQoJKiBidWlsdGlucy5jIChwb3dpX2Nvc3QpOiBGaXggdHlwby4gIFRoZSBudW1iZXIgb2YgbXVsdGlwbGljYXRpb25zCglyZXF1aXJlZCBpcyB0aGUgbnVtYmVyIHRvIHJlZHVjZSB0aGUgYXJndW1lbnQsIHJlc3VsdCwgcGx1cyB0aGUKCWNvc3Qgb2YgY2FsY3VsYXRpbmcgdGhlIHJlc2lkdWFsLCB2YWwgW25vdCBuLCB0aGUgb3JpZ2luYWwgdmFsdWVdLgoKMjAwMy0wNi0yNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvYWxwaGEvb3NmNS5oIChUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IERlZmluZS4KCjIwMDMtMDYtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgkgICAgKGJsYW1lIHRvOiBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPikKCgkqIHJlYWwuaCAoaWVlZV9leHRlbmRlZF9pbnRlbF85Nl9yb3VuZF81M19mb3JtYXQpOiBOZXcuCgkqIHJlYWwuYyAoaWVlZV9leHRlbmRlZF9pbnRlbF85Nl9yb3VuZF81M19mb3JtYXQpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBVc2UgaXQKCWZvciBYRm1vZGUgYW5kIFRGbW9kZS4KCjIwMDMtMDYtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKDQgYW5vbnltb3VzIHBhdHRlcm5zKTogR2l2ZSBpbnRlcm5hbAoJbmFtZXMuCgkobW92c2lfaDgzMDApOiBDaGFuZ2UgdGhlIG5hbWUgdG8gKm1vdnNpX2g4MzAwLgoJKG1vdnNpX2g4MzAwaHMpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gKm1vdnNpX2g4MzAwaHMuCgkobW92c2ZfaDgzMDApOiBDaGFuZ2UgdGhlIG5hbWUgdG8gKm1vdnNmX2g4MzAwLgoJKG1vdnNmX2g4MzAwaHMpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gKm1vdnNmX2g4MzAwaHMuCgoyMDAzLTA2LTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmNweSk6IERvbid0IGV2YWx1YXRlIHNpZGUtZWZmZWN0cyBpbgoJc3JjIHR3aWNlLgoKMjAwMy0wNi0yNCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJQmFjayBvdXQgdGhlc2UgcGF0Y2hlczoKCSAyMDAzLTA2LTAyICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCSAgKiBzaC5oIChPTERfQVJHX01PREUpOiBOZXcgbWFjcm8uCgkgIChGVU5DVElPTl9BUkdfQURWQU5DRSwgRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogVXNlIGl0LgoJICAoRlVOQ1RJT05fQVJHXzEpOiBCcmVhayBvdXQgb2Y6CgkgIChGVU5DVElPTl9BUkcpLiAgVXNlIE9MRF9BUkdfTU9ERS4KCSAyMDAzLTA2LTA2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCSAgKiBzaC5oIChGVU5DVElPTl9BUkdfMSk6IENvbnNpc3RlbnRseSB1c2UgTkVXX01PREUgZm9yIHRoZSBtb2RlCgkgIG9mIHRoZSBnZW5lcmF0ZWQgcmVnaXN0ZXIuCgoJKiBzaC5oIChGVU5DVElPTl9BUkdfU0Ntb2RlX1dBUlQpOiBEZWZpbmUuCgkoRlVOQ1RJT05fQVJHKTogVW5sZXNzIEZVTkNUSU9OX0FSR19TQ21vZGVfV0FSVCBpcyBkZWZpbmVkIGFuZAoJYW4gZXZlbiBudW1iZXIgb2YgZmxvYXRpbmcgcG9pbnQgcmVncyBhcmUgaW4gdXNlLCB1c2UgdGhlIHNhbWUKCXNlcXVlbmNlIG9mIGFyZ3VtZW50IHBhc3NpbmcgcmVnaXN0ZXJzIGZvciBTQ21vZGUgYXMgd291bGQgYmUKCXVzZWQgZm9yIHR3byBTRm1vZGUgdmFsdWVzLgoJKiBzaC5jIChzaF92YV9hcmcpOiBJZiBGVU5DVElPTl9BUkdfU0Ntb2RlX1dBUlQgaXMgZGVmaW5lZCwKCXN3YXAgcmVhbCAvIGltYWdpbmFyeSBwYXJ0cyBpbiBpbmNvbWluZyBTQ21vZGUgdmFsdWVzIHBhc3NlZAoJaW4gcmVnaXN0ZXJzLgoKMjAwMy0wNi0yNCAgRmFsayBIdWVmZm5lciAgPGZhbGsuaHVlZmZuZXJAc3R1ZGVudC51bmktdHVlYmluZ2VuLmRlPgoKCVBSIHRhcmdldC8xMTI2MAoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHNxcnRkZjIpOiBGaXggb3BlcmFuZCBzdWJzdGl0dXRpb24uCgpUdWUgSnVuIDI0IDE4OjQ5OjMzIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogTWFrZWZpbGUuaW4gKGNncmFwaC5vKTogRGVwZW5kIG9uIG91dHB1dC5oLCBub3QgZGVwZW5kIG9uCgl0cmVlLWlubGluZS5oCgkqIGNncmFwaC5jOiBEbyBub3QgaW5jbHVkZSB0cmVlLWlubGluZS5oOyBpbmNsdWRlIG91dHB1dC5oCgkoa25vd25fZm5zKTogUmVuYW1lIHRvIC4uLgoJKGtub3duX2RlY2xzKTogLi4uIHRoaXMgb25lOyB1cGRhdGUgYWxsIHVzZXMuCgkoY2dyYXBoX3ZhcnBvb2xfaGFzaCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoY2dyYXBoX3ZhcnBvb2xfbl9ub2RlcywgY2dyYXBoX3ZhcnBvb2xfbm9kZXNfcXVldWUpOiBOZXcgZ2xvYmFsCgl2YXJpYWJsZXMuCgkoY2dyYXBoX3ZhcnBvb2xfaGFzaF9ub2RlLCBlcV9jZ3JhcGhfdmFycG9vbF9ub2RlLCBjZ3JhcGhfdmFycG9vbF9ub2RlLAoJY2dyYXBoX3ZhcnBvb2xfbm9kZV9mb3JfaWRlbnRpZmllciwgY2dyYXBoX3ZhcnBvb2xfbWFya19uZWVkZWRfbm9kZSwKCWNncmFwaF92YXJwb29sX2ZpbmFsaXplX2RlY2wsIGNncmFwaF92YXJwb29sX2Fzc2VtYmxlX3BlbmRpbmdfZGVjbHMpOgoJTmV3IGZ1bmN0aW9ucy4KCSogY2dyYXBoLmggKGNncmFwaF92YXJwb29sX25vZGUpOiBOZXcgc3RydWN0dXJlLgoJKGNncmFwaF92YXJwb29sX25fbm9kZXMsIGNncmFwaF92YXJwb29sX25vZGVzX3F1ZXVlKTogRGVjbGFyZS4KCShjZ3JhcGhfdmFycG9vbF9ub2RlLCBjZ3JhcGhfdmFycG9vbF9ub2RlX2Zvcl9pZGVudGlmaWVyLAoJY2dyYXBoX3ZhcnBvb2xfZmluYWxpemVfZGVjbCwgY2dyYXBoX3ZhcnBvb2xfbWFya19uZWVkZWRfbm9kZSwKCWNncmFwaF92YXJwb29sX2FzZW1ibGVfcGVuZGluZ19kZWNscyk6IERlY2xhcmUuCgkqIGNncmFwaHVuaXQuYyAocmVjb3JkX2NhbGxfMSk6IE5vdGljZSB2YXJpYWJsZSByZWZlcmVuY2VzLgoJKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogQXNzZW1ibGUgcGVuZGluZyB2YXJpYWJsZXMuCgkqIHRvcGxldi5jICh3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IFVzZSB2YXJwb29sLgoJKGNvbXBpbGVfZmlsZSk6IEFzc2VtYmxlIHBlbmRpbmcgZGVjbGFyYXRpb25zLgoJKHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbik6IFVzZSB2YXJwb29sIGluIHVuaXQtYXQtYS10aW1lIG1vZGUuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV9uYW1lKTogTm90aWNlIHZhcnBvb2wgcmVmZXJlbmNlcy4KClR1ZSBKdW4gMjQgMTM6NTI6MTEgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfUFJFUEFSRV9BU1NFTUJMRV9WQVJJQUJMRSk6IE5ldyBtYWNyby4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX2RlY2xzKTogQWRkIHByZXBhcmVfYXNzZW1ibGVfdmFyaWFibGUuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IENhbGwgcHJlcGFyZV9hc3NlbWJsZV92YXJpYWJsZS4KCjIwMDMtMDYtMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBVc2UgZXhwYW5kX2J1aWx0aW5fcG93IHRvIGV4cGFuZAoJY2FsbHMgZm9yIHBvdywgcG93ZiwgcG93bCBhbmQgdGhlaXIgX19idWlsdGluXyB2YXJpYW50cy4KCShleHBhbmRfYnVpbHRpbl9wb3cpOiBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgY29uc3RhbnQKCWludGVnZXIgYW5kIGNvbXBpbGluZyB3aXRoIC1mZmFzdC1tYXRoLCB1c2UgZXhwYW5kX3Bvd2kgdG8KCWdlbmVyYXRlIFJUTCBpZiBwb3dpX2Nvc3QgaXMgbGVzcyB0aGFuIFBPV0lfTUFYX01VTFRTLgoJKHBvd2lfY29zdCk6IE5ldyBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG51bWJlciBvZiBtdWx0aXBsaWNhdGlvbnMKCW5lY2Vzc2FyeSB0byBldmFsdWF0ZSBhbiBOdGggcG93ZXIsIGZvciBpbnRlZ2VyIGNvbnN0YW50IE4uCgkoZXhwYW5kX3Bvd2kpOiBOZXcgZnVuY3Rpb24gdG8gZXhwYW5kIHRoZSBSVEwgZm9yIGV2YWx1YXRpbmcKCXRoZSBOdGggcG93ZXIgb2YgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSwgZm9yIGludGVnZXIgY29uc3RhbnQgTi4KCgkqIGRvYy90bS50ZXhpIChQT1dJX01BWF9NVUxUUyk6IERvY3VtZW50IG5ldyB0YXJnZXQgbWFjcm8uCgpNb24gSnVuIDIzIDIzOjA3OjM1IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNncmFwaF9ub2Rlc19xdWV1ZSk6IERlY2xhcmUuCgkoZXFfbm9kZSk6IFRha2UgaWRlbnRpZmllciBhcyBwMi4KCShjZ3JhcGhfbm9kZSk6IFVwZGF0ZSBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2ggY2FsbC4KCShjZ3JhcGhfbm9kZV9mb3JfaWRlbnRpZmllcik6IE5ldy4KCShjZ3JhcGhfbWFya19uZWVkZWRfbm9kZSk6IE1vdmUgaGVyZSBmcm9tIGNncmFwaHVuaXQuYy4KCSogY2dyYXBoLmggKGNncmFwaF9ub2Rlc19xdWV1ZSk6IERlY2xhcmUuCgkoY2dyYXBoX25vZGVfZm9yX2lkZW50aWZpZXIpOiBEZWNsYXJlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IENvbGxlY3QgZW50cnkgcG9pbnRzIGhlcmUKCWluc3RlYWQgb2YgaW4gY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQ7IGNvbnN0cnVjdG9ycyBhbmQKCWRlc3RydWN0b3JzIGFyZSBlbnRyeSBwb2ludHMuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBSZW9yZ2FuaXplIGRlYnVnIG91dG91dDsKCWV4YW1pbmUgbmVzdGVkIGZ1bmN0aW9ucyBhZnRlciBsb3dlcm5nOyBjYWxsIGNvbGxlY3RfZnVuY3Rpb25zIGhvb2suCgkoY2dyYXBoX21hcmtfbG9jYWxfZnVuY3Rpb25zKTogREVDTF9DT01EQVQgZnVuY3Rpb25zIGFyZSBub3QgbG9jYWwuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBEbyBub3QgY29sbGVjdCBlbnRyeSBwb2ludHMuCgkqIHZhcmFzbS5jOiBJbmNsdWRlIGNncmFwaC5oCgkoYXNzZW1ibGVfbmFtZSk6IE1hcmsgcmVmZXJlbmNlZCBpZGVudGlmaWVyIGFzIG5lZWRlZC4KCgkqIGNncmFwaHVuaXQuYyAocmVjb3JkX2NhbGxfMSk6IFVzZSBnZXRfY2FsbGVlX2ZuZGVjbC4KCjIwMDMtMDYtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfb3V0cHV0X21pX3RodW5rKTogRG9uJ3QgcGFzcyBNRU0gdG8gJVAwLAoJanVzdCBTWU1CT0xfUkVGLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfb3V0cHV0X21pX3RodW5rKTogQXZvaWQgLnBsdCBpbiAtbTMxCgltb2RlLCBhcyBpdCByZXF1aXJlcyBwaWMgcmVnaXN0ZXIgbG9hZGVkLgoKCSogdmFyYXNtLmMgKHJlc29sdmVfdW5pcXVlX3NlY3Rpb24pOiBSZW1vdmUgcHJvdG90eXBlLiAgTm8gbG9uZ2VyCglzdGF0aWMuCgkqIHRyZWUuaCAocmVzb2x2ZV91bmlxdWVfc2VjdGlvbik6IE5ldyBwcm90b3R5cGUuCgoyMDAzLTA2LTIzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCVBSIGRlYnVnLzk5MDUKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSk6IEhhbmRsZSBNT0RJRllfRVhQUiBieQoJcmVjdXJzaW5nIHRocm91Z2ggZmlyc3QgYXJndW1lbnQuCgoyMDAzLTA2LTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogQ2hhbmdlTG9nLjE6IEZpeCBhIHR5cG8uCgkqIGNmZ3J0bC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBleHBtZWQuYzogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmM6IExpa2V3aXNlLgoJKiBqdW1wLmM6IExpa2V3aXNlLgoJKiBydGxhbmFsLmM6IExpa2V3aXNlLgoJKiBzc2EtZGNlLmM6IExpa2V3aXNlLgoJKiB0b3BsZXYuYzogTGlrZXdpc2UuCgoyMDAzLTA2LTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2V4dGVuZC50ZXhpOiBGaXggdHlwb3MuCgkqIGRvYy9tZC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGk6IExpa2V3aXNlLgoKMjAwMy0wNi0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJhc2ljLWJsb2NrLmg6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGJ0LWxvYWQuYzogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmM6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jOiBMaWtld2lzZS4KCSogYy1jb21tb24uaDogTGlrZXdpc2UuCgkqIGMtZm9ybWF0LmM6IExpa2V3aXNlLgoJKiBjb3ZlcmFnZS5jOiBMaWtld2lzZS4KCSogY3BwbGliLmg6IExpa2V3aXNlLgoJKiBjcHBwY2guYzogTGlrZXdpc2UuCgkqIGRieG91dC5jOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmM6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY292LWlvLmM6IExpa2V3aXNlLgoJKiBnY292LWlvLmg6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBwcm9maWxlLmM6IExpa2V3aXNlLgoJKiByZWFsLmg6IExpa2V3aXNlLgoJKiBzY2hlZC1kZXBzLmM6IExpa2V3aXNlLgoKMjAwMy0wNi0yMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL2NvbnRyaWIudGV4aSAoQ29udHJpYnV0b3JzKTogQWRkIGEgbm90ZSBvbiB0ZXN0aW5nIGFuZAoJcmVtb3ZlIGR1cGxpY2F0ZXMgZnJvbSB0ZXN0ZXJzIGxpc3QuCgoyMDAzLTA2LTIzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogcmVhZC1ydGwuYyAocmVhZF9icmFjZWRfc3RyaW5nKTogQ2hlY2sgZm9yIEVPRi4gIElmCgllbmNvdW50ZXJlZCBpc3N1ZSBhbiBlcnJvciBtZXNzYWdlLgoKMjAwMy0wNi0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgZHVtcCBvcHRpb25zLCBkVCBhbmQgZFcuCgoyMDAzLTA2LTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZ2VucmVjb2cuYyAocHJlZF90YWJsZSk6IFJlbW92ZSB0aGUgZW50cnkgZm9yCgltb2RlX2luZGVwZW5kZW50X29wZXJhbmQuCgkqIHJlY29nLmMgKG5leHRfaW5zbnNfdGVzdF9ub19pbmVxdWFsaXR5KTogUmVtb3ZlLgoJKG1vZGVfaW5kZXBlbmRlbnRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiByZWNvZy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgbW9kZV9pbmRlcGVuZGVudF9vcGVyYW5kLgoKMjAwMy0wNi0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChvdXRwdXRfc2ltb2RlX2JsZCk6IFVzZSByb3R4bC5sIHRvCglzdG9yZSBpbnRvIGJpdCAwLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpleHR6dl8xX3JfaDgzMDBocyk6IENoYW5nZSBjYyBvZiB0aGUKCXNlY29uZCBhbHRlcm5hdGl2ZSB0byBzZXRfem52LgoJKCpleHR6dl8xX3JfaW52X2g4MzAwaHMpOiBMaWtld2lzZS4KCjIwMDMtMDYtMjMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoaW5fdHJlZV9nYXMpOiBGaW5kIG91dCBoZXJlIHdoZXRoZXIgR0FTIGlzIEVMRiwKCXNldCBpbl90cmVlX2dhc19pc19lbGYgYWNjb3JkaW5nbHkuCgkoaW5fdHJlZV9sZCk6IEZpbmQgb3V0IHdoZXRoZXIgTEQgZW11bGF0aW9uIGlzIEVMRiwgc2V0Cglpbl90cmVlX2xkX2lzX2VsZiBhY2NvcmRpbmdseS4KCShnY2NfY3ZfYXNfc3Vic2VjdGlvbnMsIGdjY19jdl9hc19oaWRkZW4sIGdjY19jdl9hc19sZWIxMjgpCgkoZ2NjX2N2X2FzX2VoX2ZyYW1lLCBnY2NfY3ZfYXNfc2hmX21lcmdlKQoJKGdjY19jdl9hc19kd2FyZjJfZGVidWdfbGluZSwgZ2NjX2N2X2FzX2dkd2FyZjJfZmxhZykKCShnY2NfY3ZfYXNfZ3N0YWJzX2ZsYWcpOiBVc2UgJGluX3RyZWVfZ2FzX2lzX2VsZiBpbnN0ZWFkIG9mCglncmVwcGluZyBnYXMvTWFrZWZpbGUuCgkoZ2NjX2N2X2xkX3JvX3J3X21peCwgZ2NjX2N2X2xkX2VoX2ZyYW1lX2hkciwgZ2NjX2N2X2xkX3BpZSk6IFVzZQoJJGluX3RyZWVfbGRfaXNfZWxmIGluc3RlYWQgb2YgZ3JlcHBpbmcgbGQvTWFrZWZpbGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDYtMjIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIpOiBVc2UgdHJlZV9jb25zIHRvIGJ1aWxkCgl1cCB0aGUgc3RhYmlsaXplZCBhcmd1bWVudCBsaXN0LCBub3QgYnVpbGRfdHJlZV9saXN0LgoJKGV4cGFuZF9idWlsdGluX3N0cmNweSk6IENvbnN0cnVjdCBuZXcgYXJndW1lbnQgbGlzdCBtYW51YWxseQoJaW5zdGVhZCBvZiB1c2luZyBjaGFpbm9uIHRvIG1vZGlmeSB0aGUgb3JpZ2luYWwgYXJndW1lbnQgbGlzdC4KCShleHBhbmRfYnVpbHRpbl9zdHBjcHkpOiBDb25zdHJ1Y3QgbmV3IGFyZ3VtZW50IGxpc3QgbWFudWFsbHkKCWluc3RlYWQgb2YgdXNpbmcgY29weV9saXN0IGFuZCBjaGFpbm9uLgoJKGV4cGFuZF9idWlsdGluX3NwcmludGYpOiBOZXcgZnVuY3Rpb24uICBPcHRpbWl6ZSBjYWxscyB0bwoJc3ByaW50ZiB3aGVuIHRoZSBmb3JtYXQgaXMgIiVzIiBvciBkb2Vzbid0IGNvbnRhaW4gYSAnJScuCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fU1BSSU5URiB1c2luZyB0aGUgbmV3IGZ1bmN0aW9uCglleHBhbmRfYnVpbHRpbl9zcHJpbnRmLgoKMjAwMy0wNi0yMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGZ1bmN0aW9uLmMgKHNldF9pbnNuX2xvY2F0b3JzKTogTWFyayBhcyB1bnVzZWQuCgoyMDAzLTA2LTIyICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb21tb24ub3B0OiBBZGQgLWZpbmxpbmUtbGltaXQuCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb25zKTogSGFuZGxlIGl0LgoJKiBvcHRzLnNoOiBUZW1wb3Jhcnkga2x1ZGdlIGZvciAtZmlubGluZS1saW1pdC4KCSogdG9wbGV2LmMgKGRlY29kZV9mX29wdGlvbiwgaW5kZXBlbmRlbnRfZGVjb2RlX29wdGlvbik6IERpZS4KCShwYXJzZV9vcHRpb25zX2FuZF9kZWZhdWx0X2ZsYWdzKTogTm8gaW5kZXBlbmRlbnRfZGVjb2RlX29wdGlvbi4KCjIwMDMtMDYtMjIgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogUmVhZGQgbG9zdCBBVFRSSUJVVEVfVU5VU0VELgoKMjAwMy0wNi0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgZHVtcHMsIC5idGwsIC5jZmcsIGFuZCAuYnlwYXNzLgoKMjAwMy0wNi0yMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIGxlYWRpbmcgYC0nIGZyb20gb3B0aW9ucyBpbiBpbmRleC4KCjIwMDMtMDYtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidC1sb2FkLmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDMtMDYtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmMgKGVtaXRfbW92ZV9pbnNuXzEpOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDAzLTA2LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBBbHBoYWJldGl6ZSBkdW1wIG9wdGlvbnMuCgoyMDAzLTA2LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBSZW1vdmUgYSBkdXBsaWNhdGUgLWRrLgoKMjAwMy0wNi0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aTogVXBkYXRlIGR1bXAgZmlsZSBuYW1lcy4KCjIwMDMtMDYtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM3MC9pMzcwLmMsIGNvbmZpZy9pMzcwL2kzNzAuaDogVXNlIEhPU1RfQ0hBUlNFVF9BU0NJSQoJYW5kIEhPU1RfQ0hBUlNFVF9FQkNESUMsIG5vdCBIQ19BU0NJSSBhbmQgSENfRUJDRElDLgoKMjAwMy0wNi0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9ydGwudGV4aTogRml4IHRoZSBAZmluZGV4IGZvciBwcmVfbW9kaWZ5LgoKMjAwMy0wNi0yMiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY2FsbGVyLXNhdmUuYzogQ29udmVydCB0byBJU08gQzkwLgoJKiBjYWxscy5jOiBMaWtld2lzZS4KCSogY2ZnLmM6IExpa2V3aXNlLgoJKiBjZmdhbmFsLmM6IExpa2V3aXNlLgoJKiBjZmdidWlsZC5jOiBMaWtld2lzZS4KCSogY2ZnY2xlYW51cC5jOiBMaWtld2lzZS4KCSogY2ZnaG9va3MuYzogTGlrZXdpc2UuCgkqIGNmZ2xheW91dC5jOiBMaWtld2lzZS4KCSogY2ZnbGF5b3V0Lmg6IExpa2V3aXNlLgoJKiBjZmdsb29wLmM6IExpa2V3aXNlLgoJKiBjZmdsb29wLmg6IExpa2V3aXNlLgoJKiBjZmdsb29wYW5hbC5jOiBMaWtld2lzZS4KCSogY2ZnbG9vcG1haW5pcC5jOiBMaWtld2lzZS4KCSogY2ZncnRsLmM6IExpa2V3aXNlLgoKMjAwMy0wNi0yMiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uaCAoQklHR0VTVF9BTElHTk1FTlQpOiBVc2UgVEFSR0VUX1JFQUxMWV9JV01NWFQgZm9yIHNlbGVjdGluZwoJNjQtYml0IGFsaWdubWVudC4KCjIwMDMtMDYtMjIgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChhbGwgY2FsbF92YWx1ZSBwYXR0ZXJucyk6IFJlbW92ZSByZWdpc3RlciBjb25zdHJhaW50cyBvbgoJdmFsdWUgb3BlcmFuZC4KCjIwMDMtMDYtMjIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbW1vbi5vcHQ6IE1vcmUgLWYgc3dpdGNoZXMuCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb25zKTogSGFuZGxlIHRoZW0uCgkqIHRvcGxldi5jICh0aW1lX3JlcG9ydCk6IE1ha2UgZXh0ZXJuLgoJKGZfb3B0aW9ucyk6IFVTZSBmbGFnX2R1bW15LgoJKGRlY29kZV9mX29wdGlvbik6IE5vIG5lZWQgdG8gdXNlIGZfb3B0aW9ucyBub3cuCgkqIHRvcGxldi5oIChmbGFnX2Nwcm9wX3JlZ2lzdGVycywgZmxhZ19zc2EsIGZsYWdfc3NhX2NjcCwKCWZsYWdfc3NhX2RjZSwgdGltZV9yZXBvcnQsIGZsYWdfbmV3X3JlZ2FsbG9jKTogTWFrZSBleHRlcm4uCgoyMDAzLTA2LTIyICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjLWxleC5jOiBDb252ZXJ0IHRvIElTTyBDOTAuCgkqIGMtb2JqYy1jb21tb24uYzogTGlrZXdpc2UuCgkqIGMtb3B0cy5jOiBMaWtld2lzZS4KCSogYy1wY2guYzogTGlrZXdpc2UuCgkqIGMtcHBvdXRwdXQuYzogTGlrZXdpc2UuCgkqIGMtcHJhZ21hLmg6IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5jOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuaDogTGlrZXdpc2UuCgkqIGMtc2VtYW50aWNzLmM6IExpa2V3aXNlLgoJKiBjLXRyZWUuaDogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmM6IExpa2V3aXNlLgoKCSogYy1sYW5nLmM6IENvbnZlcnQgdG8gSVNPIEM5MC4KCjIwMDMtMDYtMjIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG9wdHMuYyAoZmluZF9vcHQpOiBGaXggdG8gYWx3YXlzIGd1YXJhbnRlZSBhIGZpbmQgb2YgYQoJc3dpdGNoIHdpdGggam9pbmVkIHBhcmFtZXRlci4KCSogb3B0cy5oIChzdHJ1Y3QgY2xfb3B0aW9uKTogTmV3IG1lbWJlciBiYWNrX2NoYWluLgoJKiBvcHRzLnNoOiBVcGRhdGUgdG8gY2FsY3VsYXRlIGFuZCBhZGQgYmFja19jaGFpbiBtZW1iZXIuCgoyMDAzLTA2LTIyICBHYWJyaWVsIERvcyBSZWlzIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogZGlhZ25vc3RpYy5oIChvdXRwdXRfaG9zdF93aWRlX2ludGVnZXIpOiBEZWNsYXJlLgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9sb25nX2xvbmdfZGVjaWNhbWwpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X2hvc3Rfd2lkZV9pbnRlZ2VyKTogTGlrZXdpc2UuCgkob3V0cHV0X2Zvcm1hdCk6IFVzZSB0aGVtLiAgSGFuZGxlICIlbGwiIGFuZCAiJXciLgoKMjAwMy0wNi0yMSAgSmFzb24gVGhvcnBlICA8dGhvcnBlakB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy5nY2MgKCotKi1uZXRic2QqKTogQWRkIHQtbGliZ2NjLXBpYyB0byB0bWFrZV9maWxlLgoKMjAwMy0wNi0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19DX0NIQVJTRVQpOiBEZWxldGUuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgdXNlIGdjY19BQ19DX0NIQVJTRVQuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWcvaTM3MC9pMzcwLmMsIGNvbmZpZy9pMzcwL2kzNzAuaDogVXNlCgkoSE9TVF9DSEFSU0VUID09IEhDX0VCQ0RJQykgb3IgKEhPU1RfQ0hBUlNFVCA9PSBIQ19BU0NJSSkKCWluc3RlYWQgb2YgSE9TVF9FQkNESUMgb3IgIUhPU1RfRUJDRElDLiAgQ2xhcmlmeSBjb21tZW50cyBhIHRhZC4KCjIwMDMtMDYtMjEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUuCgkqIGNvbW1vbi5vcHQ6IE5ldyBzd2l0Y2hlcy4KCSogb3B0cy5jOiBJbmNsdWRlIGRpYWdub3N0aWMuaC4KCShjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBuZXcgc3dpdGNoZXMuCgkqIHRvcGxldi5jIChmbGFnX2xvb3Bfb3B0aW1pemUsIGZsYWdfY3Jvc3NqdW1waW5nLCBmbGFnX2lmX2NvbnZlcnNpb24sCglmbGFnX2lmX2NvbnZlcnNpb24yLCBmbGFnX2RlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzLAoJZmxhZ19yZXJ1bl9jc2VfYWZ0ZXJfbG9vcCk6IE1ha2UgZXh0ZXJuLgoJKGZsYWdfZHVtbXkpOiBOZXcuCgkoZl9vcHRpb25zKTogVXBkYXRlIHRvIHVzZSBmbGFnX2R1bW15IGZvciBtb3ZlZCBvcHRpb25zLgoJKGRlY29kZV9mX29wdGlvbik6IFNvbWUgc3dpdGNoZXMgbW92ZWQgdG8gb3B0cy5jLgoJKiB0b3BsZXYuaCAoZmxhZ19sb29wX29wdGltaXplLCBmbGFnX2Nyb3NzanVtcGluZywgZmxhZ19pZl9jb252ZXJzaW9uLAoJZmxhZ19pZl9jb252ZXJzaW9uMiwgZmxhZ19kZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcywKCWZsYWdfcmVydW5fY3NlX2FmdGVyX2xvb3AsIGZsYWdfa2VlcF9zdGF0aWNfY29uc3RzLCBmbGFnX3BlZWxfbG9vcHMsCglmbGFnX3RyYWNlciwgZmxhZ190aHJlYWRfanVtcHMsIGZsYWdfdW5yb2xsX2xvb3BzLAoJZmxhZ191bnJvbGxfYWxsX2xvb3BzLCBmbGFnX3Vuc3dpdGNoX2xvb3BzKTogTmV3LgoKU2F0IEp1biAyMSAxMzo0MTowMCBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl92YV9hcmcpOiBGaXggYWxsb2NhdGlvbiBvZiB0ZW1wb3Jhcnkgc2xvdC4KCjIwMDMtMDYtMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IKCXNhbWVfY21wX3ByZWNlZGluZ19wLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoc2FtZV9jbXBfcHJlY2VkaW5nKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IEV4dGVuZCBwZWVwaG9sZTIncyB0aGF0IHRyYW5zZm9ybQoJY29tcGFyZTpTSSBpbnRvIHNob3J0ZXIgc2VxdWVuY2VzIHNvIHRoYXQgdGhleSBjYW4gZGVhbCB3aXRoCglzaWduZWQgY29tcGFyaXNvbnMuCgoyMDAzLTA2LTIxICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBkb2MvY29udHJpYi50ZXhpIChDb250cmlidXRvcnMpOiBVc2UgV2luZG93cyBpbnN0ZWFkIG9mIFdpbjMyLgoKCVVwZGF0ZSBBbmRyZWFzIEphZWdlcidzIGVudHJ5LgoKCU1lcmdlIHRoZSB0d28gZW50cmllcyBvZiBLYXZlaCBHaGF6aSwgRGF2aWQgRWRlbHNvaG4sIGFuZAoJTG9yZW4gSi4gUml0dGxlLgoKMjAwMy0wNi0yMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBta2NvbmZpZy5zaDogQWRkIG11bHRpcGxlIGluY2x1c2lvbiBndWFyZHMgdG8gZ2VuZXJhdGVkIGhlYWRlcnMuCgoyMDAzLTA2LTIwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLWRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IE1ha2Ugc2F2ZWRfd2Fybl9zaGFkb3cgYm9vbGVhbi4KCSogY29tbW9uLm9wdDogQWRkIHJlbWFpbmluZyAtVyBvcHRpb25zIGFuZCAtZy4KCSogZGlhZ25vc3RpYy5jICh3YXJuaW5nc19hcmVfZXJyb3JzKTogUmVtb3ZlLgoJKiBmbGFncy5oOiBNYWtlIG1vc3Qgd2FybmluZyBmbGFncyBib29sZWFuLgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIHJlbWFpbmluZyAtVyBvcHRpb25zLCBhbmQgLWcuCglNb3ZlIG1hbnkgd2FybmluZyBmbGFncyBmcm9tIHRvcGxldi5jLCBtYWtpbmcgdGhlbSBib29sZWFuLgoJKiB0b3BsZXYuYzogUmVtb3ZlIG1hbnkgd2FybmluZyBmbGFncy4KCShkZWNvZGVfV19vcHRpb24pOiBSZW1vdmUuCgkoZGVjb2RlX2dfb3B0aW9uKTogTWFrZSBleHRlcm4uICBFcnJvciBvbiB1bmtub3duIHN3aXRjaC4KCShsYW5nX2luZGVwZW5kZW50X1dfb3B0aW9ucyk6IFVzZSB3YXJuX2R1bW15LgoJKGluZGVwZW5kZW50X2RlY29kZV9vcHRpb24pOiBKdXN0IGhhbmRsZSAtZiBzd2l0Y2hlcyBub3cuCgkqIHRvcGxldi5oIChkZWNvZGVfZ19vcHRpb24pOiBOZXcuCgoyMDAzLTA2LTIwICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJUFIvMTEwOTIKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogQWRqdXN0IGZvcgoJdmVjdG9ycy4KCjIwMDMtMDYtMjAgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogb3B0cy5zaDogVHdlYWsgYXdrIHNjcmlwdCBmb3IgcG9ydGFiaWxpdHkuCgoyMDAzLTA2LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMDg4OAoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBEbyBub3Qgd2FybiBhYm91dCBmYWlsaW5nIHRvCglpbmxpbmUgZnVuY3Rpb25zIGRlY2xhcmVkIGluIHN5c3RlbSBoZWFkZXJzLgoJKiBkb2MvaW52b2tlLnRleGkgKC1XaW5saW5lKTogRXhwYW5kIG9uIGRvY3VtZW50YXRpb24uCgoyMDAzLTA2LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2ZpbGVfc3RhcnQpOiBEaXNhYmxlCglmaWxlX3N0YXJ0X2ZpbGVfZGlyZWN0aXZlIGZvciBFTEYgYW5kIG5vdCBNREVCVUcuCgoyMDAzLTA2LTIwICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmggKFJPVU5EX1RZUEVfQUxJR04pOiBSZW1vdmUuCgoyMDAzLTA2LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaG9va3MuYyAoaG9va19pbnRfdm9pZF9ub19yZWdzKTogUmVuYW1lIGZyb20KCWhvb2tfcmVnX2NsYXNzX3ZvaWRfbm9fcmVnczsgY2hhbmdlIHJldHVybiB0eXBlLgoJKiBob29rcy5oOiBVcGRhdGUuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0JSQU5DSF9UQVJHRVRfUkVHSVNURVJfQ0xBU1MpOiBVcGRhdGUuCgkqIHRhcmdldC5oIChicmFuY2hfdGFyZ2V0X3JlZ2lzdGVyX2NsYXNzKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGludC4KCUFkZCBkb2N1bWVudGF0aW9uLgoJKiBjb25maWcvc2gvc2guYyAoc2hfdGFyZ2V0X3JlZ19jbGFzcyk6IENoYW5nZSByZXR1cm4gdHlwZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9CUkFOQ0hfVEFSR0VUX1JFR0lTVEVSX0NMQVNTKTogTGlrZXdpc2UuCgoyMDAzLTA2LTIwICBBbmRyZWFzIFRvYmxlciA8dG9hQHBvcC5hZ3JpLmNoPgoKCSogYy1mb3JtYXQuYzogQ2hhbmdlIF9Cb29sIHRvIGJvb2wgcmV2ZXJ0aW5nIHBhcnQgb2YgdGhlIGxhc3QKCXBhdGNoLgoKMjAwMy0wNi0yMCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHNvbS5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogVXNlIHRhcmdldG0uc3RyaXBfbmFtZV9lbmNvZGluZyB0bwoJc3RyaXAgbmFtZSBlbmNvZGluZy4KCjIwMDMtMDYtMjAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfYXNfZ3N0YWJzX2ZsYWcpOiBEaXNhYmxlIGlmIGFzc2VtYmxlciB3YXJucy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJRml4ZXMgUFIgZHJpdmVyLzkzNjIuCgoyMDAzLTA2LTIwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2ZpbGVfc3RhcnQpOiBGaXggdHlwby4KCjIwMDMtMDYtMjAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChQVVRfU0RCX0ZVTkNUSU9OX0VORCk6IFBhc3MgMCBhcyB0aGlyZCBhcmcKCXRvIEFTTV9PVVRQVVRfU09VUkNFX0xJTkUuCgoyMDAzLTA2LTIwICBEYW5pZWwgRWdnZXIgIDxkZWdnZXJAZmhtLmVkdT4KCSAgICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChCdWlsZGluZyk6IENvcnJlY3QgYW5kIGltcHJvdmUgc3RhdGVtZW50CglhYm91dCBwYXJhbGxlbCBidWlsZHMuCgoyMDAzLTA2LTIwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjLWNvbW1vbi5jOiBDaGFuZ2UgX0Jvb2wgdG8gYm9vbCByZXZlcnRpbmcgcGFydCBvZiB0aGUgbGFzdAoJcGF0Y2guCgoyMDAzLTA2LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChleHBhbmRfZnVuY3Rpb25fZW5kKTogUmVtb3ZlIGFsbCBwYXJhbWV0ZXJzLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogUmVtb3ZlIGFsbCBwYXJhbWV0ZXJzLgoJVXNlIGlucHV0X2xvY2F0aW9uLiBOZXZlciBleHBhbmRfZW5kX2JpbmRpbmdzLgoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keV8xKTogQWRqdXN0IGV4cGFuZF9mdW5jdGlvbl9lbmQgY2FsbC4KCSogY292ZXJhZ2UuYyAoY3JlYXRlX2NvdmVyYWdlKTogTGlrZXdpc2UuCgoyMDAzLTA2LTIwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChBUk0gQnVpbHQtaW4gRnVuY3Rpb25zKTogTmV3IG5vZGUuICBEb2N1bWVudAoJQVJNIGJ1aWx0aW4gZnVuY3Rpb25zIGZvciBpV01NWHQgc3VwcG9ydC4KCjIwMDMtMDYtMjAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBkb2MvaW5zdGFsbC50ZXhpICgtLXdpdGgtZ251LWFzKTogTWVudGlvbiBTUEFSQy9Tb2xhcmlzIGFuZAoJU1BBUkM2NC9Tb2xhcmlzIGFzIHBsYXRmb3JtcyB3aGVyZSAtLXdpdGgtZ251LWFzIG1ha2VzIGEgZGlmZmVyZW5jZS4KCSgtLXdpdGgtYXMpOiBBZGQgQGFuY2hvci4KCSgtLXdpdGgtZ251LWxkKTogRml4IHR5cG8uCgkoLS13aXRoLWxkKTogQWRkIEB1cmVmIHRvIC0td2l0aC1hcy4KCjIwMDMtMDYtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvdG0udGV4aTogVW5pZm9ybWx5IHVzZSBAZGVmbWFjIGZvciBtYWNyb3MsIHJhdGhlciB0aGFuCglAdGFibGUgaXRlbXMuICBNaW5vciBmb3JtYXR0aW5nIGFuZCBlZGl0b3JpYWwgY29ycmVjdGlvbnMuCgoyMDAzLTA2LTIwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsaW5lLW1hcC5jLCBsaW5lLW1hcC5oOiBDb252ZXJ0IHRvIElTTyBwcm90b3R5cGVzLgoKMjAwMy0wNi0yMCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2NzZS5jIChzdG9yZV9raWxsZWRfaW5faW5zbik6IEZpeC4KCjIwMDMtMDYtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0YXJnZXQuaCAoYXNtX291dC5maWxlX3N0YXJ0LCBmaWxlX3N0YXJ0X2FwcF9vZmYsCglmaWxlX3N0YXJ0X2ZpbGVfZGlyZWN0aXZlKTogTmV3IGhvb2tzLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9BU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSwKCVRBUkdFVF9BU01fRklMRV9TVEFSVF9BUFBfT0ZGLCBUQVJHRVRfQVNNX0ZJTEVfU1RBUlQpOgoJTmV3IGhvb2stZGVmaW5pdGlvbiBtYWNyb3MuCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBuZXcgaG9va3M7IHJlbW92ZSBkb2NzIG9mIEFTTV9GSUxFX1NUQVJULgoJKiB2YXJhc20uYyAoZGVmYXVsdF9maWxlX3N0YXJ0KTogTmV3LgoJKiBvdXRwdXQuaDogUHJvdG90eXBlIGl0LgoJKiB0b3BsZXYuYyAoaW5pdF9hc21fb3V0cHV0KTogVXNlIHRhcmdldG0uYXNtX291dC5maWxlX3N0YXJ0LgoJKiBzeXN0ZW0uaDogUG9pc29uIEFTTV9GSUxFX1NUQVJULgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3dyaXRlX3ZlcnN0YW1wKTogRGVsZXRlLgoJKGFscGhhX2ZpbGVfc3RhcnQpOiBOZXcsIGRlZmluZSBpZiAhVEFSR0VUX0FCSV9VTklDT1NNSy4KCSh1bmljb3Nta19hc21fZmlsZV9zdGFydCk6IFJlbmFtZSB1bmljb3Nta19maWxlX3N0YXJ0LAoJbWFrZSBzdGF0aWMsIHRha2Ugbm8gYXJndW1lbnRzLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVCwgVEFSR0VUX0FTTV9GSUxFX0VORCwKCVRBUkdFVF9BU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSk6IFNldCBhcyBhcHByb3ByaWF0ZS4KCSogY29uZmlnL2FscGhhL3VuaWNvc21rLmg6IERvbid0IGRlZmluZSBBU01fRklMRV9TVEFSVCBub3IKCVRBUkdFVF9BU01fRklMRV9FTkQuICBSZW1vdmUgcmVmZXJlbmNlIHRvIEFTTV9GSUxFX1NUQVJUIGluCgljb21tZW50LgoJKiBjb25maWcvYXJjL2FyYy5jIChhcmNfYXNtX2ZpbGVfc3RhcnQpOiBSZW5hbWUKCWFyY19maWxlX3N0YXJ0LCB0YWtlIG5vIGFyZ3VtZW50cywgbWFrZSBzdGF0aWMuCgkoVEFSR0VUX0FTTV9GSUxFX1NUQVJUKTogU2V0IGl0LgoJKiBjb25maWcvYXJtL2FybS5jIChhb2ZfZmlsZV9zdGFydCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoVEFSR0VUX0FTTV9GSUxFX1NUQVJUKTogU2V0IGl0LCB3aGVuIGFwcHJvcHJpYXRlLgoJKiBjb25maWcvYXJtL2NvZmYuaCwgY29uZmlnL2FybS9lbGYuaDoKCVNldCBUQVJHRVRfQVNNX0ZJTEVfU1RBUlRfQVBQX09GRiB0byB0cnVlLgoJKiBjb25maWcvYXZyL2F2ci5jIChhc21fZmlsZV9zdGFydCk6IFJlbmFtZSBhdnJfZmlsZV9zdGFydCwKCXRha2Ugbm8gYXJndW1lbnRzLCBtYWtlIHN0YXRpYy4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQsIFRBUkdFVF9BU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSk6CglTZXQgdGhlbS4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2ZpbGVfc3RhcnQpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVCwgVEFSR0VUX0FTTV9GSUxFX1NUQVJUX0ZJTEVfRElSRUNUSVZFKToKCVNldCB0aGVtLgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfZmlsZV9zdGFydCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoVEFSR0VUX0FTTV9GSUxFX1NUQVJUKTogU2V0IGl0LgoJKiBjb25maWcvZHNwMTZ4eC9kc3AxNnh4LmMgKGNvZmZfZHNwMTZ4eF9maWxlX3N0YXJ0KTogUmVuYW1lCglkc3AxNnh4X2ZpbGVfc3RhcnQsIG1ha2Ugc3RhdGljLgoJKGx1eHdvcmtzX2RzcDE2eHhfZmlsZV9zdGFydCk6IERlbGV0ZS4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQpOiBTZXQgaXQuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChhc21fZmlsZV9zdGFydCk6IFJlbmFtZQoJaDgzMDBfZmlsZV9zdGFydCwgbWFrZSBzdGF0aWMsIHRha2Ugbm8gYXJndW1lbnRzLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVCk6IFNldCBpdC4KCSogY29uZmlnL2kzNzAvaTM3MC5jIChpMzcwX2ZpbGVfc3RhcnQpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVCk6IFNldCBpdC4KCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfZmlsZV9zdGFydCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoVEFSR0VUX0FTTV9GSUxFX1NUQVJUKTogU2V0IGl0LgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFg4Nl9GSUxFX1NUQVJUX1ZFUlNJT05fRElSRUNUSVZFLAoJWDg2X0ZJTEVfU1RBUlRfRkxUVVNFRCk6IE5ldyBtYWNyb3MsIGRlZmF1bHQgdG8gZmFsc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYtaW50ZXJpeC5oOiBPdmVycmlkZSBYODZfRklMRV9TVEFSVF9GTFRVU0VEIHRvIDEuCgkqIGNvbmZpZy9pMzg2L3N5c3Y0LmgsIGNvbmZpZy9pMzg2L3NjbzUuaDogT3ZlcnJpZGUKCVg4Nl9GSUxFX1NUQVJUX1ZFUlNJT05fRElSRUNUSVZFIHRvIHRydWUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9maWxlX3N0YXJ0KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQpOiBTZXQgaXQuCgkoZW1pdF9zYWZlX2Fjcm9zc19jYWxscyk6IFRha2Ugbm8gYXJndW1lbnRzLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBVcGRhdGUgdG8gbWF0Y2guCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9hc21fZmlsZV9zdGFydCk6IFJlbmFtZQoJbTMycl9maWxlX3N0YXJ0LCBtYWtlIHN0YXRpYywgdGFrZSBubyBhcmd1bWVudHMuCgkoVEFSR0VUX0FTTV9GSUxFX1NUQVJUKTogU2V0IGl0LgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfYXNtX2ZpbGVfc3RhcnQpOiBSZW5hbWUKCW02OGhjMTFfZmlsZV9zdGFydCwgbWFrZSBzdGF0aWMsIHRha2Ugbm8gYXJndW1lbnRzLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVCwgVEFSR0VUX0FTTV9GSUxFX1NUQVJUX0ZJTEVfRElSRUNUSVZFKTogU2V0LgoJKHByaW50X29wdGlvbnMpOiBEZWxldGUuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19ocDMyMF9maWxlX3N0YXJ0KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlRfQVBQX09GRik6IFNldC4KCSogY29uZmlnL202OGsvaHAzMjAuaDogU2V0IFRBUkdFVF9BU01fRklMRV9TVEFSVCB0bwoJbTY4a19ocDMyMF9maWxlX3N0YXJ0LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGlyaXM2X2FzbV9maWxlX3N0YXJ0LCBtaXBzX2FzbV9maWxlX3N0YXJ0KToKCU1ha2Ugc3RhdGljLCB0YWtlIG5vIGFyZ3VtZW50cy4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQsIFRBUkdFVF9BU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSk6IFNldC4KCSogY29uZmlnL21taXgvbW1peC5jIChtbWl4X2FzbV9maWxlX3N0YXJ0KTogUmVuYW1lCgltbWl4X2ZpbGVfc3RhcnQsIG1ha2Ugc3RhdGljLCB0YWtlIG5vIGFyZ3VtZW50cy4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQsIFRBUkdFVF9BU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSk6IFNldC4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChhc21fZmlsZV9zdGFydCk6IFJlbmFtZQoJbW4xMDMwMF9maWxlX3N0YXJ0LCBtYWtlIHN0YXRpYywgdGFrZSBubyBhcmd1bWVudHMuCgkoVEFSR0VUX0FTTV9GSUxFX1NUQVJULCBUQVJHRVRfQVNNX0ZJTEVfU1RBUlRfRklMRV9ESVJFQ1RJVkUpOiBTZXQuCgkqIGNvbmZpZy9uczMyay9uczMyay5jIChUQVJHRVRfQVNNX0ZJTEVfU1RBUlRfQVBQX09GRik6IFNldC4KCSogY29uZmlnL3BhL3BhLmMgKHBhX2ZpbGVfc3RhcnRfbGV2ZWwsIHBhX2ZpbGVfc3RhcnRfc3BhY2UsCglwYV9maWxlX3N0YXJ0X2ZpbGUsIHBhX2ZpbGVfc3RhcnRfbWNvdW50LCBwYV9lbGZfZmlsZV9zdGFydCwKCXBhX3NvbV9maWxlX3N0YXJ0LCBwYV9saW51eF9maWxlX3N0YXJ0LCBwYV9ocHV4NjRfZ2FzX2ZpbGVfc3RhcnQsCglwYV9ocHV4NjRfaHBhc19maWxlX3N0YXJ0KTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9wYS9lbGYuaDogU2V0IFRBUkdFVF9BU01fRklMRV9TVEFSVCB0byBwYV9lbGZfZmlsZV9zdGFydC4KCSogY29uZmlnL3BhL3BhLWxpbnV4Lmg6IFNldCBUQVJHRVRfQVNNX0ZJTEVfU1RBUlQgdG8KCXBhX2xpbnV4X2ZpbGVfc3RhcnQuCgkqIGNvbmZpZy9wYS9wYTY0LWhwdXguaDogU2V0IFRBUkdFVF9BU01fRklMRV9TVEFSVCB0bwoJcGFfaHB1eDY0X2dhc19maWxlX3N0YXJ0IG9yIHBhX2hwdXg2NF9ocGFzX2ZpbGVfc3RhcnQsIGFzCglhcHByb3ByaWF0ZS4KCSogY29uZmlnL3BhL3NvbS5oOiBTZXQgVEFSR0VUX0FTTV9GSUxFX1NUQVJUIHRvIHBhX3NvbV9maWxlX3N0YXJ0LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBJbmNsdWRlIHhjb2Zmb3V0Lmggd2hlbiBUQVJHRVRfWENPRkYuCgkocnM2MDAwX2ZpbGVfc3RhcnQpOiBNYWtlIHN0YXRpYywgdGFrZSBubyBhcmd1bWVudHMuICBSZXNldAoJZGVmYXVsdF9jcHUgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgoJKHJzNjAwMF94Y29mZl9maWxlX3N0YXJ0KTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChUQVJHRVRfQVNNX0ZJTEVfU1RBUlQpOiBTZXQuCgkqIGNvbmZpZy9yczYwMDAveGNvZmYuaCAoVEFSR0VUX0FTTV9GSUxFX1NUQVJULAoJVEFSR0VUX0FTTV9GSUxFX1NUQVJUX0ZJTEVfRElSRUNUSVZFKTogT3ZlcnJpZGUuCgkqIGNvbmZpZy9zaC9zaC5jIChvdXRwdXRfZmlsZV9zdGFydCk6IFJlbmFtZQoJc2hfZmlsZV9zdGFydCwgbWFrZSBzdGF0aWMsIHRha2Ugbm8gYXJndW1lbnRzLiAgTWVyZ2UgaW4gb2xkCgljb2RlIGZyb20gc2gvZWxmLmgncyBBU01fRklMRV9TVEFSVCwgY29uZGl0aW9uZWQgb24gVEFSR0VUX0VMRi4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQsIFRBUkdFVF9BU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSk6IFNldC4KCSogY29uZmlnL3NoL3NoLmMgKFRBUkdFVF9FTEYpOiBEZWZpbmUgdG8gMC4KCSogY29uZmlnL3NoL2VsZi5oIChUQVJHRVRfRUxGKTogUmVkZWZpbmUgdG8gMS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jIChhc21fZmlsZV9zdGFydCk6IERlbGV0ZS4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlRfRklMRV9ESVJFQ1RJVkUpOiBTZXQuCgkqIGNvbmZpZy92YXgvdmF4LmMgKHZheF9maWxlX3N0YXJ0KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQsIFRBUkdFVF9BU01fRklMRV9TVEFSVF9BUFBfT0ZGKTogU2V0LgoKCSogY29uZmlnL2Rhcndpbi5oOiBPdmVycmlkZSBBU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSB0byBmYWxzZS4KCSogY29uZmlnL2VsZm9zLmgsIGNvbmZpZy9zdnIzLmgsIGNvbmZpZy9hcm0vZWxmLmgsIGNvbmZpZy9hcm0vcGUuaAoJKiBjb25maWcvaTM4Ni9hdHQuaCwgY29uZmlnL2kzODYvZ2FzLmgsIGNvbmZpZy9pMzg2L2xpbnV4LmgKCSogY29uZmlnL2kzODYvc3lzdjQuaCwgY29uZmlnL2kzODYvc2NvNS5oLCBjb25maWcvaTk2MC9pOTYwLWNvZmYuaAoJKiBjb25maWcvbTY4ay9jb2ZmLmgsIGNvbmZpZy9tNjhrL2hwMzIwLmgsIGNvbmZpZy9tY29yZS9tY29yZS1wZS5oCgkqIGNvbmZpZy92YXgvdmF4di5oOiBTZXQgQVNNX0ZJTEVfU1RBUlRfRklMRV9ESVJFQ1RJVkUgdG8gdHJ1ZS4KCgkqIGNvbmZpZy9kYXJ3aW4uaCwgY29uZmlnL2VsZm9zLmgsIGNvbmZpZy9hbHBoYS9lbGYuaAoJKiBjb25maWcvYWxwaGEvb3BlbmJzZC5oLCBjb25maWcvYWxwaGEvb3NmLmgsIGNvbmZpZy9hbHBoYS92bXMuaAoJKiBjb25maWcvYXJjL2FyYy5oLCBjb25maWcvYXJtL2FvZi5oLCBjb25maWcvYXJtL2FvdXQuaAoJKiBjb25maWcvYXJtL2NvZmYuaCwgY29uZmlnL2FybS9lbGYuaCwgY29uZmlnL2FybS9wZS5oCgkqIGNvbmZpZy9hdnIvYXZyLmgsIGNvbmZpZy9jNHgvYzR4LmgsIGNvbmZpZy9jcmlzL2NyaXMuaAoJKiBjb25maWcvZHNwMTZ4eC9kc3AxNnh4LmgsIGNvbmZpZy9oODMwMC9lbGYuaCwgY29uZmlnL2g4MzAwL2g4MzAwLmgKCSogY29uZmlnL2kzNzAvaTM3MC5oLCBjb25maWcvaTM4Ni9hdHQuaCwgY29uZmlnL2kzODYvZ2FzLmgKCSogY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4LmgsIGNvbmZpZy9pMzg2L2xpbnV4LmgsIGNvbmZpZy9pMzg2L3N5c3Y0LmgKCSogY29uZmlnL2kzODYvc2NvNS5oLCBjb25maWcvaTk2MC9pOTYwLWNvZmYuaCwgY29uZmlnL2k5NjAvaTk2MC5oCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCwgY29uZmlnL2lhNjQvc3lzdjQuaCwgY29uZmlnL20zMnIvbTMyci5oCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCwgY29uZmlnL202OGsvY29mZi5oLCBjb25maWcvbTY4ay9tNjhrLmgKCSogY29uZmlnL21jb3JlL21jb3JlLXBlLmgsIGNvbmZpZy9taXBzL2lyaXM2LmgsIGNvbmZpZy9taXBzL21pcHMuaAoJKiBjb25maWcvbW1peC9tbWl4LmgsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCwgY29uZmlnL25zMzJrL25zMzJrLmgKCSogY29uZmlnL3BhL2VsZi5oLCBjb25maWcvcGEvcGEtbGludXguaCwgY29uZmlnL3BhL3BhNjQtaHB1eC5oCgkqIGNvbmZpZy9wYS9zb20uaCwgY29uZmlnL3BkcDExL3BkcDExLmgsIGNvbmZpZy9yczYwMDAvbGludXg2NC5oCgkqIGNvbmZpZy9yczYwMDAvbHlueC5oLCBjb25maWcvcnM2MDAwL3hjb2ZmLmgsIGNvbmZpZy9zaC9lbGYuaAoJKiBjb25maWcvc2gvc2guaCwgY29uZmlnL3NwYXJjL3NwYXJjLmgsIGNvbmZpZy92ODUwL3Y4NTAuaAoJKiBjb25maWcvdmF4L3ZheC5oLCBjb25maWcvdmF4L3ZheHYuaDogRG9uJ3QgKHJlKWRlZmluZSBBU01fRklMRV9TVEFSVC4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaCwgY29uZmlnL2FyYy9hcmMtcHJvdG9zLmgKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmgsIGNvbmZpZy9kc3AxNnh4L2RzcDE2eHgtcHJvdG9zLmgKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oLCBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oCgkqIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmgsIGNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmgKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCwgY29uZmlnL21taXgvbW1peC1wcm90b3MuaAoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oLCBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaAoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmgsIGNvbmZpZy92ODUwL3Y4NTAtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIHhjb2Zmb3V0LmgsIGNvbmZpZy9yczYwMDAvYWl4LmgsIGNvbmZpZy9yczYwMDAveGNvZmYuaDoKCVJlbW92ZSByZWZlcmVuY2UgdG8gQVNNX0ZJTEVfU1RBUlQgaW4gY29tbWVudC4KCSogY29uZmlnL2FybS9hb2YuaCwgY29uZmlnL2FybS9hb3V0LmgsIGNvbmZpZy9hcm0vZnJlZWJzZC5oCgkqIGNvbmZpZy9hcm0vbGludXgtZ2FzLmgsIGNvbmZpZy9hcm0vbmV0YnNkLWVsZi5oCgkqIGNvbmZpZy9hcm0vbmV0YnNkLmg6IERlbGV0ZSBkZWZpbml0aW9uIG9mIEFSTV9PU19OQU1FLgoKMjAwMy0wNi0xOSAgR3JhZW1lIFBldGVyc29uIDxncEBxbnguY29tPgoKCSogZ2NjLmMgKHRhcmdldF9zeXNyb290X3N1ZmZpeCwgdGFyZ2V0X3N5c3Jvb3RfaGRyc19zdWZmaXgsCglTWVNST09UX1NVRkZJWF9TUEVDLCBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMsIHN5c3Jvb3Rfc3VmZml4X3NwZWMsCglzeXNyb290X2hkcnNfc3VmZml4X3NwZWMpOiBOZXcuCgkoc3RhdGljX3NwZWNzKTogSW5pdGlhbGl6ZSBuZXcgdmFyaWFibGVzLgoJKGFkZF9zeXNyb290X3N1ZmZpeF9wcmVmaXgsIGRvX3NwZWNfMSwgbWFpbik6IFVzZSBuZXcgdmFyaWFibGVzLgoJKiBkb2MvdG0udGV4aSAoU1lTUk9PVF9TVUZGSVhfU1BFQywgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDKToKCU5ldyBtYWNyb3MuCgoyMDAzLTA2LTE5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjLWF1eC1pbmZvLmM6IENvbnZlcnQgdG8gSVNPIEM5MC4KCSogYy1wcmFnbWEuYzogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmM6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5oOiBMaWtld2lzZS4KCSogYy1jb252ZXJ0LmM6IExpa2V3aXNlLgoJKiBjLWNwcGJ1aWx0aW4uYzogTGlrZXdpc2UuCgkqIGMtZHVtcC5jOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlCgkqIGMtZm9ybWF0LmM6IExpa2V3aXNlLgoJKiBjLWluY3BhdGguYzogTGlrZXdpc2UuCgkqIGMtaW5jcGF0aC5oOiBMaWtld2lzZS4KCjIwMDMtMDYtMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2Vycm5vX2NoZWNrKTogQXNzdW1lIHRoYXQgZmxhZ19lcnJub19tYXRoCglhbmQgSE9OT1JfTkFOUyBoYXZlIGJlZW4gdGVzdGVkIGJlZm9yZSBjYWxsaW5nIGhlcmUuICBPbmx5IHRyeQoJdG8gc2V0IGVycm5vIG91cnNlbHZlcyBpZiB0aGUgZGVjbCBjYW4ndCB0aHJvdyBhbiBleGNlcHRpb24uCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuKTogTW92ZSB0aGUgY29kZSB0byBzdGFiaWxpemUgdGhlIGFyZwoJYWZ0ZXIgdGhlIG1haW4gc3dpdGNoLCBzbyB0aGF0IHRoYXQgaXRzIG9ubHkgZG9uZSB3aGVuIG5lZWRlZC4KCUJVSUxUX0lOX1NRUlR7LEYsTH0gZG9lc24ndCBzZXQgZXJybm8gaWYgaXRzIGFyZyBpcyBub25uZWdhdGl2ZS4KCURvbid0IG1vZGlmeSB0aGUgb3JpZ2luYWwgZXhwciB3aGVuIHN0YWJpbGl6aW5nIHRoZSBhcmd1bWVudC4KCShleHBhbmRfYnVpbHRpbl9tYXRoZm5fMik6IExpa2V3aXNlLCBtb3ZlIHRoZSBjb2RlIHRvIHN0YWJpbGl6ZQoJdGhlIGFyZ3MgYWZ0ZXIgdGhlIG1haW4gc3dpdGNoLCBhbmQgZG9uJ3QgbW9kaWZ5IHRoZSBvcmdpbmFsIGV4cC4KCjIwMDMtMDYtMTkgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoY29uc3RfdmVjdG9yX2Zyb21fdHJlZSk6IEluaXRpYWxpemUgcmVtYWluaW5nIGVsZW1lbnRzCgl0byAwLgoKMjAwMy0wNi0xOSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCJzcGVfZXZmc2Nmc2kiKTogQ2hhbmdlIG9wZXJhbmQgdHlwZXMuCglDaGFuZ2UgImZpeCIgdG8gImZsb2F0Ii4KCjIwMDMtMDYtMTkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGMtdHJlZS5oOiBSZW1vdmUgZGVjbGFyYXRpb24gb2YgcG9wbGV2ZWwuCgoJKiB0cmVlLmg6IFJlbW92ZSBkZWNsYXJhdGlvbiBvZiBhcHByb3hfc3FydC4KCgkqIGMtbGV4LmM6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb24gb2YgYXNtX291dF9maWxlLgoKCSogZmxhZ3MuaDogUmVtb3ZlIGRlY2xhcmF0aW9uIG9mIHdhcm5fdW5rbm93bl9wcmFnbWEgYW5kCgltYWluX2lucHV0X2ZpbGVuYW1lLgoKCSogcnRsLmg6IFJlbW92ZSBmdW5jdGlvbnMgZnJvbSBmb2xkLWNvbnN0LmMgc2luY2UgdGhleSdyZSBhbHJlYWR5CglkZWNsYXJlZCBpbiB0cmVlLmguCgoJKiByZWdzLmg6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb24gb2YgcmVnX25hbWVzLgoKCSogYnQtbG9hZC5jIChtaWdyYXRlX2J0cl9kZWZzKTogQ29ycmVjdCBwcmludGYgYXJndW1lbnRzLgoKCSogcHJvdG9pemUuYzogRml4IGJyZWFrYWdlIGZyb20gbGFzdCBwYXRjaC4KCjIwMDMtMDYtMTkgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogaG9va3MuaCAoaG9va19yZWdfY2xhc3Nfdm9pZF9ub19yZWdzKTogT25seSBkZWNsYXJlIGlmIHRtLmgKCWhhcyBiZWVuIGluY2x1ZGVkLgoKMjAwMy0wNi0xOCAgSmFtZXMgQSBNb3JyaXNvbiA8amEybW9ycmlAc3R1ZGVudC5tYXRoLnV3YXRlcmxvby5jYT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jOiBVcGRhdGUgY29weXJpZ2h0IHllYXIuCgoyMDAzLTA2LTE5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChpbml0X2N1bXVsYXRpdmVfYXJncyk6IExpbWl0IENBTExfTElCQ0FMTAoJdG8gQUJJX1Y0LgoKMjAwMy0wNi0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYm9vdHN0cmFwLzQwNjgKCSogY29uZmlnL2kzODYvbGl1bnguaDogRG9uJ3QgaW5jbHVkZSBzeXMvdWNvbnRleHQuaCBmb3IgZ2xpYmMgMi4wLgoKMjAwMy0wNi0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChUQVJHRVRfSU5JVElBTElaRVIgYW5kIGZyaWVuZHMpOiBNb3ZlCgl0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiAgUmVtb3ZlIHVubmVjZXNzYXJ5IHByb3RvdHlwZXMuCgoyMDAzLTA2LTE5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGJ0LWxvYWQuYyAobWlncmF0ZV9idHJfZGVmKSBbSU5TTl9TQ0hFRFVMSU5HXTogQ29uZGl0aW9uYWxpemUKCWNhbGxzIHRvIGluc25fZGVmYXVsdF9sYXRlbmN5IGFuZCByZXN1bHRfcmVhZHlfY29zdC4gIEluaXRpYWxpemUKCWRlZl9sYXRlbmN5IHRvIDEuCgoyMDAzLTA2LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYyAoX1Vud2luZF9HZXRDRkEpOiBOZXcuCgkoX1Vud2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24pOiBJbXBsZW1lbnQuCgoyMDAzLTA2LTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX3NjaGVkKTogSGlkZSB0aGUgZW50aXJlIGZ1bmN0aW9uIGlmCglJTlNOX1NDSEVEVUxJTkcgaXMgbm90IGRlZmluZWQuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgcmVzdF9vZl9oYW5kbGVfc2NoZWQoKSBvbmx5IHdoZW4KCUlOU05fU0NIRURVTElORyBpcyBkZWZpbmVkLgoKMjAwMy0wNi0xOCAgU3RlcGhlbiBDbGFya2UgPHN0ZXBoZW4uY2xhcmtlQHN1cGVyaC5jb20+CgkgICAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBidC1sb2FkLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEluY2x1ZGUgYnQtbG9hZC5vCgkoYnQtbG9hZC5vKTogQWRkIGRlcGVuZGVuY2llcy4KCSogZmxhZ3MuaCAoZmxhZ19icmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUpOiBEZWNsYXJlLgoJKGZsYWdfYnJhbmNoX3RhcmdldF9sb2FkX29wdGltaXplMik6IExpa2V3aXNlLgoJKiBob29rcy5jIChob29rX3JlZ19jbGFzc192b2lkX25vX3JlZ3MpOiBOZXcgZnVuY3Rpb24uCgkoaG9va19ib29sX2Jvb2xfZmFsc2UpOiBMaWtld2lzZS4KCSogaG9va3MuaCAoaG9va19yZWdfY2xhc3Nfdm9pZF9ub19yZWdzLCBob29rX2Jvb2xfYm9vbF9mYWxzZSk6IERlY2xhcmUuCgkqIHJ0bC5oIChicmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUpOiBEZWNsYXJlLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9CUkFOQ0hfVEFSR0VUX1JFR0lTVEVSX0NMQVNTKTogRGVmaW5lLgoJKFRBUkdFVF9CUkFOQ0hfVEFSR0VUX1JFR0lTVEVSX0NBTExFRV9TQVZFRCk6IExpa2V3aXNlLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEluY2x1ZGUgdGhlc2UuCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBicmFuY2hfdGFyZ2V0X3JlZ2lzdGVyX2NsYXNzCglhbmQgYnJhbmNoX3RhcmdldF9yZWdpc3Rlcl9jYWxsZWVfc2F2ZWQgbWVtYmVycy4KCSogdG9wbGV2LmMgKGVudW0gZHVtcF9maWxlX2luZGV4KTogQWRkIERGSV9icmFuY2hfdGFyZ2V0X2xvYWQKCShkdW1wX2ZpbGUpIEFkZCAidGFycyIgZW50cnkuCgkoZmxhZ19icmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUpOiBOZXcgdmFyaWFibGUuCgkoZmxhZ19icmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUyKTogTGlrZXdpc2UuCgkobGFuZ19pbmRlcGVuZGVudF9vcHRpb25zKTogQWRkIGVudHJpZXMgZm9yIG5ldyBvcHRpb25zLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIGJyYW5jaF90YXJnZXRfbG9hZF9vcHRpbWl6ZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9CUkFOQ0hfVEFSR0VUX1JFR0lTVEVSX0NMQVNTKTogRG9jdW1lbnQuCgkoVEFSR0VUX0JSQU5DSF9UQVJHRVRfUkVHSVNURVJfQ0FMTEVFX1NBVkVEKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLWZicmFuY2gtdGFyZ2V0LWxvYWQtb3B0aW1pemUgYW5kCgktZmJyYW5jaC10YXJnZXQtbG9hZC1vcHRpbWl6ZTIuCgkqIHJ0bC5oIChlcGlsb2d1ZV9jb21wbGV0ZWQpOiBEZWNsYXJlLgoJKiByZWNvZy5jIChlcGlsb2d1ZV9jb21wbGV0ZWQpOiBOZXcgdmFyaWFibGUuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogU2V0IGl0LgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IFVzZSBpdC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X291dHB1dF9taV90aHVuayk6IFNldCBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoc2hfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCgkqIHNoLmMgKHNobWVkaWFfc3BhY2VfcmVzZXJ2ZWRfZm9yX3RhcmdldF9yZWdpc3RlcnMpOiBOZXcgdmFyaWFibGUuCgkoc2hfdGFyZ2V0X3JlZ19jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShzaF9vcHRpbWl6ZV90YXJnZXRfcmVnaXN0ZXJfY2FsbGVlX3NhdmVkKTogTGlrd2lzZS4KCShzaG1lZGlhX3RhcmdldF9yZWdzX3N0YWNrX3NwYWNlKTogTGlrZXdpc2UuCgkoc2htZWRpYV9yZXNlcnZlX3NwYWNlX2Zvcl90YXJnZXRfcmVnaXN0ZXJzX3ApOiBMaWtld2lzZS4KCShzaG1lZGlhX3RhcmdldF9yZWdzX3N0YWNrX2FkanVzdCk6IExpa2V3aXNlLgoJKFRBUkdFVF9CUkFOQ0hfVEFSR0VUX1JFR0lTVEVSX0NMQVNTKTogT3ZlcnJpZGUuCgkoVEFSR0VUX0JSQU5DSF9UQVJHRVRfUkVHSVNURVJfQ0FMTEVFX1NBVkVEKTogTGlrZXdpc2UuCgkoY2FsY19saXZlX3JlZ3MpOiBJZiBmbGFnX2JyYW5jaF90YXJnZXRfbG9hZF9vcHRpbWl6ZTIgYW5kCglUQVJHRVRfU0FWRV9BTExfVEFSR0VUX1JFR1MgaXMgZW5hYmxlZCwgYW5kIHdlIGhhdmUgc3BhY2UgcmVzZXJ2ZWQKCWZvciB0YXJnZXQgcmVnaXN0ZXJzLCBtYWtlIHN1cmUgdGhhdCB3ZSBzYXZlIGFsbCB0YXJnZXQgcmVnaXN0ZXJzLgoJKHNoX2V4cGFuZF9wcm9sb2d1ZSwgc2hfZXhwYW5kX2VwaWxvZ3VlKTogVGFrZSB0YXJnZXQgcmVnaXN0ZXIKCW9wdGltaXphdGlvbnMgaW50byBhY2NvdW50LiAgQ29sbGFwc2Ugc3RhY2sgYWRqdXN0bWVudHMgaWYgdGhhdAoJaXMgYmVuZWZpY2lhbC4KCShpbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IFJlc2VydmUgc3BhY2UgZm9yIHRhcmdldCByZWdpc3RlcnMKCWlmIG5lY2Vzc2FyeS4KCSogc2guaCAoU0FWRV9BTExfVFJfQklULCBUQVJHRVRfU0FWRV9BTExfVEFSR0VUX1JFR1MpOiBEZWZpbmUuCgkoT1BUSU1JWkFUSU9OX09QVElPTlMpOiBFbmFibGUgZmxhZ19icmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUuCgoyMDAzLTA2LTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYzogQWRkIGFuIGV4dHJhX2hlYWRlciBmb3IgQVJNIHRhcmdldHMuCglTdXBwb3J0IGNvbmZpZ3VyaW5nIHdpdGggLS13aXRoLWNwdT1pd21teHQuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgbmV3IHZhbHVlIGZvciAtbWNwdT0gQVJNIHN3aXRjaC4KCSogY29uZmlnL2FybS9hb2YuaCAoUkVHSVNURVJfTkFNRVMpOiBBZGQgaXdtbXh0IHJlZ2lzdGVyCgluYW1lcy4gIEZpeCBmb3JtYXR0aW5nLgoJKiBjb25maWcvYXJtL2FvdXQuaCAoUkVHSVNURVJfTkFNRVMpOiBBZGQgaXdtbXh0IHJlZ2lzdGVyCgluYW1lcy4KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9lbWl0X3ZlY3Rvcl9jb25zdCk6IE5ldwoJcHJvdG90eXBlLgoJKGFybV9vdXRwdXRfbG9hZF9ncik6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGV4dHJhX3JlZ19uYW1lczEpOiBEZWxldGUuCgkoVEFSR0VUX0lOSVRfQlVJTFRJTlMsIFRBUkdFVF9FWFBBTkRfQlVJTFRJTiwgRkxfSVdNTVhULAoJKiBhcmNoX2lzX2l3bW14dCk6IERlZmluZS4KCShhbGxfY29yZXMsIGFsbF9hcmNoaXRlY3R1cmUpOiBBZGQgZW50cnkgZm9yIGl3bW14dC4KCShhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBzdXBwb3J0IGZvciBpd21teHQuCgkodXNlX3JldHVybl9pbnNuLCBhcm1fZnVuY3Rpb25fYXJnLCBhcm1fbGVnaXRpbWF0ZV9pbmRleF9wLAoJYXJtX3ByaW50X3ZhbHVlLCBhcm1fcnR4X2Nvc3RzXzEsIG91dHB1dF9tb3ZlX2RvdWJsZSwKCWFybV9jb21wdXRlX3NhdmVfcmVnX21hc2ssIGFybV9vdXRwdXRfZXBpbG9ndWUsCglhcm1fZ2V0X2ZyYW1lX3NpemUsIGFybV9leHBhbmRfcHJvbG9ndWUsIGFybV9wcmludF9vcGVyYW5kLAoJYXJtX2Fzc2VtYmxlX2ludGVnZXIsIGFybV9oYXJkX3JlZ25vX29rLCBhcm1fcmVnbm9fY2xhc3MpOgoJTGlrZXdpc2UuCgkoYXJtX2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogQ291bnQgaXdtbXh0IHJlZ2lzdGVycy4KCShhcm1fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBSZXR1cm4gZmFsc2Ugb2Ygc2liY2FsbF9ibG9ja2VkCgloYXMgYmVlbiBzZXQuCgkoc3RydWN0IG1pbmlwb29sX25vZGUpOiBBZGQgZml4X3NpemUgZmllbGQuCgkoYWRkX21pbmlwb29sX2ZvcndhcmRfcmVmKTogQWRkIHN1cHBvcnQgZm9yIDgtYnl0ZSBhbGlnbmluZyBvZgoJdGhlIHBvb2wuCgkoYWRkX21pbmlwb29sX2JhY2t3YXJkX3JlZiwgYWRkX21pbmlwb29sX29mZnNldHMsCglkdW1wX21pbmlwb29sLCBwdXNoX21pbmlwb29sX2ZpeCk6IExpa2V3aXNlLgoJKHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uKTogTmV3IHN0cnVjdC4KCShidWlsdGluX2Rlc2NyaXB0aW9uKTogTmV3IGFycmF5IG9mIGl3bW14dCBidWlsdGluIGZ1bmN0aW9ucy4KCShhcm1faW5pdF9pd21teHRfYnVpbHRpbnMpOiBOZXcgZnVuY3Rpb24uCgkoYXJtX2luaXRfYnVpbHRpbnMpOiBOZXcgZnVuY3Rpb24uCgkoc2FmZV92ZWN0b3Jfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShhcm1fZXhwYW5kX2Jpbm9wX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkoYXJtX2V4cGFuZF91bm9wX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkoYXJtX2V4cGFuZF9idWlsdGluKTogTmV3IGZ1bmN0aW9uLgoJKGFybV9lbWl0X3ZlY3Rvcl9jb25zdCk6IE5ldyBmdW5jdGlvbi4KCShhcm1fb3V0cHV0X2xvYWRfZ3IpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRBUkdFVF9DUFVfaXdtbXh0LCBUQVJHRVRfSVdNTVhULAoJVEFSR0VUX1JFQUxMWV9JV01NWFQsIGFybV9hcmNoX2l3bW14dCwgSVdNTVhUX0FMSUdOTUVOVCwKCVRZUEVfTkVFRFNfSVdNTVhUX0FMSUdOTUVOVCwgQURKVVNUX0ZJRUxEX0FMSUdOLAoJREFUQV9BTElHTk1FTlQsIExPQ0FMX0FMSUdOTUVOVCwgVkVDVE9SX01PREVfU1VQUE9SVEVEX1ApOiBEZWZpbmUuCgkoQklHR0VTVF9BTElHTk1FTlQpOiBTZXQgdG8gNjQgaWYgQVRQQ1Mgc3VwcG9ydCBpcyBlbmFibGVkLgoJKENQUF9DUFVfQVJDSF9TUEVDKTogQWRkIGVudHJpZXMgZm9yIGl3bW14dC4KCShGSVhFRF9SRUdJU1RFUlMsIENBTExfVVNFRF9SRUdJU1RFUlMsIFJFR19BTExPQ19PUkRFUiwKCXJlZ19jbGFzcywgUkVHX0NMQVNTX05BTUVTLCBSRUdfQ0xBU1NfQ09OVEVOVFMsCglSRUdfQ0xBU1NfRk9SX0xFVFRFUik6IEFkZCBpd21teHQgcmVnaXN0ZXJzLgoJKFNVQlRBUkdFVF9DT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IERpc2FibGUgaXdtbXh0CglyZWdpc3RlcnMgdW5sZXNzIHRoZSBpd21teHQgdGFyZ2V0IGlzIHNlbGVjdGVkLgoJKEZJUlNUX0lXTU1YVF9HUl9SRUdOVU0sIExBU1RfSVdNTVhUX0dSX1JFR05VTSwKCUZJUlNUX0lXTU1YVF9SRUdOVU0sIExBU1RfSVdNTVhUX1JFR05VTSwgSVNfSVdNTVhUX1JFR05VTSwKCUlTX0lXTU1YVF9HUl9SRUdOVU0pOiBEZWZpbmUuCgkoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogQnVtcCB0byA2My4KCShzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IEFkZCBzaWJjYWxsX2Jsb2NrZWQgZmllbGQuCgkoU3RydWN0IENVTVVMQVRJVkVfQVJHUyk6IEFkZCBpd21teHRfbnJlZ3MsIG5hbWVkX2NvdW50IGFuZAoJbmFyZ3MgZmllbGRzLgoJKGVudW0gYXJtX2J1aWx0aW5zKTogTmV3IGVudW0gbGlzdC4KCSogY29uZmlnL2FybS9hcm0ubWQgKFVOU1BFQ19XU0hVRkgsIFVOU1BFQ19XQUNDLAoJVU5TUEVDX1RNT1ZNU0ssIFVOU1BFQ19XU0FELCBVTlNQRUNfV1NBRFosIFVOU1BFQ19XTUFDUywKCVVOU1BFQ19XTUFDVSwgVU5TUEVDX1dNQUNTWiwgVU5TUEVDX1dNQUNVWiwgVU5TUEVDX0NMUkRJLAoJVU5TUEVDX1dNQUREUywgVU5TUEVDX1dNQUREVSk6IE5ldyB1bnNwZWNzLgoJKFZVTlNQRUNfVE1SQywgVlVOU1BFQ19UTUNSLCBWVU5TUEVDX0FMSUdOOCwgVlVOU1BFQ19XQ01QX0VRLAoJVlVOU1BFQ19XQ01QX0dUVSwgVlVOU1BFQ19XQ01QX0dUKTogTmV3IHZ1bnNwZWNzLgoJKG1vdnYyc2ksIG1vdnY0aGksIG1vdnY4cWkpOiBOZXcgZXhwYW5kcyBmb3IgdmVjdG9yIG1vdmVzLgoJSW5jbHVkZSBpd21teHQubWQuCgkqIGNvbmZpZy9hcm0vdC14c2NhbGUtZWxmIChNVUxUSUxJQl9PUElUT05TKTogQWRkIGl3bW14dAoJbXVsdGlsaWIuCgkoTVVMVElMSUJfRElSTkFNRVMsIE1VTFRJTElCX1JFRFVOREFOVF9ESVJTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vbW1pbnRyaW4uaDogTmV3IEFSTSBzcGVjaWZpYyBoZWFkZXIgZmlsZS4KCSogY29uZmlnL2FybS9pd21teC5tZDogTmV3IGlXTU1YdCBzcGVjaWZpYyBtYWNoaW5lIHBhdHRlcm5zLgoKMjAwMy0wNi0xOCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiB0b3BsZXYuYyAoUmVtYWluaW5nIC1kIGxldHRlcnMgc3VtbWFyeSk6IFVwZGF0ZS4KCjIwMDMtMDYtMTggIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogQWRkIGFuZCBoYW5kbGUgTElCQ0FMTAoJYXJndW1lbnQuCgkoZnVuY3Rpb25fYXJnKTogSGFuZGxlIENBTExfTElCQ0FMTCBmbGFnLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBVcGRhdGUKCXByb3RvdHlwZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQ0FMTF9MSUJDQUxMKTogTmV3IG1hY3JvLgoJKElOSVRfQ1VNVUxBVElWRV9MSUJDQUxMX0FSR1MpOiBOZXcgbWFjcm8uCgkoSU5JVF9DVU1VTEFUSVZFX0FSR1MpOiBBZGQgTElCQ0FMTCBhcmd1bWVudC4KCShJTklUX0NVTVVMQVRJVkVfSU5DT01JTkdfQVJHUyk6IExpa2V3aXNlLgoKMjAwMy0wNi0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCSogY29tbW9uLm9wdDogTmV3IG9wdGlvbnMuCgkqIG9wdHMuYyAobWF5YmVfd2Fybl91bnVzZWRfcGFyYW1ldGVyLCBzZXRfV2V4dHJhLCBoYW5kbGVfcGFyYW0sCglzZXRfV3VudXNlZCk6IE5ldy4KCShjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBuZXcgb3B0aW9ucy4KCSogdG9wbGV2LmMgKHNldF90YXJnZXRfc3dpdGNoKTogRXhwb3J0LgoJKHNldF9XZXh0cmEsIHNldF9XdW51c2VkLCBtYXliZV93YXJuX3VudXNlZF9wYXJhbWV0ZXIpOiBNb3ZlIHRvIG9wdHMuYy4KCShkZWNvZGVfV19vcHRpb24pOiAtV3VudXNlZCBhbmQgLVdleHRyYSBoYW5kbGVkIGluIG9wdHMuYyBub3cuCgkoaW5kZXBlbmRlbnRfZGVjb2RlX29wdGlvbik6IE1vcmUgb3B0aW9ucyBoYW5kbGVkIGluIG9wdHMuYyBub3cuCglDaGFuZ2UgcHJvdG90eXBlLgoJKiB0b3BsZXYuaCAoc2V0X3RhcmdldF9zd2l0Y2gpOiBOZXcuCgoyMDAzLTA2LTE3ICBSb2JlcnQgQWJlbGVzICA8cmFiZWxlc0BhcmNoYWVsb2dpYy5jb20+CgoJUFIgZGVidWcvNDI1MgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IFBhc3MgLWZkdW1wIGFyZ3VtZW50IHN1ZmZpeAoJdG8gZHVtcF9zd2l0Y2hfcCgpLgoJKiB0cmVlLWR1bXAuYyAoZHVtcF9zd2l0Y2hfcCk6IFJlbW92ZSByZWR1bmRhbnQgJ2R1bXAtJyBwcmVmaXgKCWZyb20gc3RhdGljIHN0cmluZ3MgaW4gZHVtcF9maWxlcy4KCjIwMDMtMDYtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5c3RlbS5oIChBTlNJX1BST1RPVFlQRVMsIFBUUl9DT05TVCwgTE9OR19ET1VCTEUsIFZQQVJBTVMsCglWQV9PUEVOLCBWQV9GSVhFREFSRywgVkFfQ0xPU0UsIFZBX1NUQVJUKTogdW5kZWYgYW5kIHBvaXNvbiB0aGVzZQoJbGliaWJlcnR5IG1hY3Jvcy4KCjIwMDMtMDYtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xMDkyOQoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBEb24ndCB3YXJuIGFib3V0IGZhaWxpbmcgdG8KCWlubGluZSBhIGZ1bmN0aW9uIHdoaWNoIHdhcyBtYWRlIGlubGluZSBieSAtZmlubGluZS1mdW5jdGlvbnMuCgoyMDAzLTA2LTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBVcGRhdGUgdG8gSVNPIEMuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IExpa2V3aXNlLgoKMjAwMy0wNi0xNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IFJlcGxhY2UgQlVJTERfQ0MgcmVmZXJlbmNlcyB3aXRoIENDX0ZPUl9CVUlMRC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbjogUmVwbGFjZSBCVUlMRF9DQyByZWZlcmVuY2VzIHdpdGggQ0NfRk9SX0JVSUxELgoKMjAwMy0wNi0xNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBpbnN0YWxsLnRleGkgKFRlc3RpbmcpOiBBZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBKYXZhCglydW50aW1lIHRlc3RzIHNlcGFyYXRlbHkuCgoyMDAzLTA2LTE3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHRyYXApOiBVc2UgYnJlYWsgMCB3aGVuICFUQVJHRVRfR0FTLgoKCSogY29uZmlnL21pcHMvaXJpczYtbzMyLmggKE1JUFNfSVNBX0RFRkFVTFQpOiBSZW1vdmUuCgkoTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQpOiBSZWRlZmluZSB0byBtaXBzMi4KCjIwMDMtMDYtMTcgIENocmlzdG9waGVyIEZheWxvciAgPGNnZkByZWRoYXQuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aTogQWRkIG1zdmMgcmVidWlsZCBjYXZlYXQuCgoyMDAzLTA2LTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3NoL2NvZmYuaDogUmVwbGFjZSBIaXRhY2hpIHdpdGggUmVuZXNhcy4KCSogY29uZmlnL3NoL2VsZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL2VtYmVkLWVsZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc206IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kOiBMaWtld2lzZS4KCjIwMDMtMDYtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBDaGFuZ2VMb2cuMzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIENoYW5nZUxvZy42OiBMaWtld2lzZS4KCSogY29uZmlnL2QzMHYvZDMwdi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbTMyci5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvTk9URVM6IExpa2V3aXNlLgoKMjAwMy0wNi0xNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgkgICAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKGxpYmdjaiBUZXN0cyk6IFNpbXBsaWZ5IGluc3RydWN0aW9ucyBvbiBob3cKCXRvIHJ1biBKYXZhIHJ1bnRpbWUgdGVzdHMgc2VwYXJhdGVseS4KCjIwMDMtMDYtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IFVwZGF0ZSBhIGNvbW1lbnQuCgoyMDAzLTA2LTE3ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmggKFJPVU5EX1RZUEVfQUxJR04sIExPQ0FMX0FMSUdOTUVOVCk6IENvbXBsZXggbW9kZXMKCWFyZSBhbGlnbmVkIGxpa2UgaW50ZWdyYWwgbW9kZXMuCgkoU0g1X1dPVUxEX0JFX1BBUlRJQUxfTlJFR1MpOiBBbHNvIHRlc3QgZm9yIENESW1vZGUgYW5kIERDbW9kZS4KCgkqIHNoLmggKEVYVFJBX0NPTlNUUkFJTlRfQ3N5KTogQWxsb3cgUElDX0RJUkVDVF9BRERSX1AuCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QKTogQWxsb3cgTEFCRUxfUkVGLgoJKiBzaC5tZCAoKnB0KTogUmVtb3ZlLgoKCSogc2guaCAoUkVHX0FMTE9DX09SREVSKTogQXZvaWQgc3F1YW5kZXJpbmcgY2FsbC1zYXZlZCByZWdpc3RlcnMuCgoJKiBzaC5tZCAocmV0dXJuX21lZGlhX3J0ZSk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9tZWRpYSk6IFVzZSBpdC4KCjIwMDMtMDYtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvY29udHJpYi50ZXhpOiBSZXBsYWNlIEhpdGFjaGkgd2l0aCBSZW5lc2FzLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMDYtMTcgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guaCAoQ09OU1RfT0tfRk9SX0oxNik6IEZpeCBIT1NUX0JJVFNfUEVSX1dJREVfSU5UID49IDY0CgliZWhhdmlvdXIuCgoyMDAzLTA2LTE3ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBkb2MvdG0udGV4aSAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogTWVudGlvbiBNQUtFX1RIUk9XX0ZSQU1FLgoKCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBQYXJ0bHkgcmV2ZXJ0CgkyMDAzLTAxLTIzIHBhdGNoLiBDb3JyZWN0ZWQgdG8gaGFuZGxlIGtlcm5lbHMgd2l0aCBjaGFuZ2VkIHVjb250ZXh0LgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IEVycm9yIG9uIGludmFsaWQKCS1tc2RhdGE9ZWFiaSB1c2FnZXMuCgoJKiBnY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oIChVU0VfTElCQ18xKTogRGVsZXRlIGFsbCB1c2VzLgoKMjAwMy0wNi0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWxsb2MtcG9vbC5jOiBEb24ndCBjaGVjayBIQVZFX0xPTkdfRE9VQkxFLgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6IERvbid0IGRlZmluZSBgdm9sYXRpbGUnLgoJKiBnZ2MtcGFnZS5jOiBEb24ndCBjaGVjayBIQVZFX0xPTkdfRE9VQkxFLgoJKiBnZ2Mtc2ltcGxlLmM6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaDogRG9uJ3QgZGVmaW5lIGB2b2xhdGlsZScuCgoJKiBhY2xvY2FsLm00IChnY2NfQUNfQ19WT0xBVElMRSwgZ2NjX0FDX0NfTE9OR19ET1VCTEUpOiBEZWxldGUuCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX0FDX0NfVk9MQVRJTEUsIGdjY19BQ19DX0xPTkdfRE9VQkxFKTogRG9uJ3QKCWNhbGwgdGhlc2UgbWFjcm9zLgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAzLTA2LTE3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9idWlsdGluLCBjYXNlIElBNjRfQlVJTFRJTl9CU1ApOgoJSGFuZGxlIFBPSU5URVJTX0VYVEVORF9VTlNJR05FRC4KCjIwMDMtMDYtMTcgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfQVNNX1VOQUxJR05FRF9ESV9PUCkgW1RBUkdFVF9JUklYNSAmJgoJIVRBUkdFVF9JUklYNl06IERlZmluZSBhcyBOVUxMLgoKMjAwMy0wNi0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY192YV9hcmcpOiBEb24ndCBhbGlnbiAxNi1ieXRlKyBzdHJ1Y3R1cmVzLgoKMjAwMy0wNi0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRieG91dC5jIChkYnhvdXRfc291cmNlX2xpbmVfY291bnRlcik6IE5ldyBnbG9iYWwgdmFyaWFibGUuCglNYXJrIGl0IHdpdGggR1RZKCgpKS4KCShkYnhvdXRfc291cmNlX2xpbmUpOiBJbmNyZW1lbnQgZGJ4b3V0X3NvdXJjZV9saW5lX2NvdW50ZXIKCWFuZCBwYXNzIGl0IHRvIEFTTV9PVVRQVVRfU09VUkNFX0xJTkUuCgkqIHNkYm91dC5jIChzZGJvdXRfc291cmNlX2xpbmVfY291bnRlcik6IE5ldyBnbG9iYWwgdmFyaWFibGUuCglNYXJrIGl0IHdpdGggR1RZKCgpKS4KCSh1bm5hbWVkX3N0cnVjdF9udW1iZXIpOiBNYXJrIGl0IHdpdGggR1RZKCgpKS4KCShzZGJvdXRfc291cmNlX2xpbmUpOiBJbmNyZW1lbnQgc2Rib3V0X3NvdXJjZV9saW5lX2NvdW50ZXIKCWFuZCBwYXNzIGl0IHRvIEFTTV9PVVRQVVRfU09VUkNFX0xJTkUuCgkqIHhjb2Zmb3V0LmMgKEFTTV9PVVRQVVRfU09VUkNFX0xJTkUpOiBBZGQgdGhpcmQgcGFyYW1ldGVyCgkoeGNvZmZvdXRfc291cmNlX2xpbmUpOiBQYXNzIDAgYXMgdGhpcmQgYXJndW1lbnQgdG8KCUFTTV9PVVRQVVRfU09VUkNFX0xJTkUuCgkoeGNvZmZvdXRfYmVnaW5fcHJvbG9ndWUpOiBMaWtld2lzZS4KCSogY29uZmlnL2RieG91dC5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogQWRkIHRoaXJkIHBhcmFtZXRlci4KCVVzZSBpdCBpbnN0ZWFkIG9mICdzeW1fbGluZW5vJyBidXQgd2l0aG91dCBpbmNyZW1lbnRpbmcgaXQuCgkqIGNvbmZpZy9kYnhlbGYuaCAoQVNNX09VVFBVVF9TT1VSQ0VfTElORSk6IExpa2V3aXNlLgoJKiBjb25maWcvbHlueC5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wdHg0LmggKEFTTV9PVVRQVVRfU09VUkNFX0xJTkUpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3N0YXJ0X2Z1bmN0aW9uKTogUGFzcyAwIGFzIHRoaXJkCglhcmd1bWVudCB0byBBU01fT1VUUFVUX1NPVVJDRV9MSU5FLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoQVNNX09VVFBVVF9TT1VSQ0VfTElORSk6IEFkZCB0aGlyZCBwYXJhbWV0ZXIuCgkqIGNvbmZpZy9hcm0vYW91dC5oOiBSZW1vdmUgdXNlbGVzcyBjb21tZW50LgoJKiBjb25maWcvYXZyL2F2ci5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogQWRkIHRoaXJkIHBhcmFtZXRlci4KCSogY29uZmlnL2k5NjAvaTk2MC5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoQVNNX09VVFBVVF9TT1VSQ0VfTElORSk6IEFkZCB0aGlyZCBwYXJhbWV0ZXIuCglVc2UgaXQgaW5zdGVhZCBvZiAnc3ltX2xpbmVubycgYnV0IHdpdGhvdXQgaW5jcmVtZW50aW5nIGl0LgoJKiBjb25maWcvbTY4ay9ocDMyMC5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogQWRkIHRoaXJkIHBhcmFtZXRlci4KCSogY29uZmlnL21jb3JlL21jb3JlLXBlLmggKEFTTV9PVVRQVVRfU09VUkNFX0xJTkUpOiBBZGQgdGhpcmQKCXBhcmFtZXRlci4gVXNlIGl0IGluc3RlYWQgb2YgJ3N5bV9saW5lbm8nIGJ1dCB3aXRob3V0IGluY3JlbWVudGluZyBpdC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFBhc3MgMCBhcyB0aGlyZAoJYXJndW1lbnQgdG8gQVNNX09VVFBVVF9TT1VSQ0VfTElORS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogQWRkIHRoaXJkIHBhcmFtZXRlci4KCSogY29uZmlnL21taXgvbW1peC5oIChBU01fT1VUUFVUX1NPVVJDRV9MSU5FKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9zb20uaCAoQVNNX09VVFBVVF9TT1VSQ0VfTElORSk6IEFkZCB0aGlyZCBwYXJhbWV0ZXIuCglVc2UgaXQgaW5zdGVhZCBvZiAnc3ltX2xpbmVubycgYnV0IHdpdGhvdXQgaW5jcmVtZW50aW5nIGl0LgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoQVNNX09VVFBVVF9TT1VSQ0VfTElORSk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvZWxmLmggKEFTTV9PVVRQVVRfU09VUkNFX0xJTkUpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2FvdXQuaCAoQVNNX09VVFBVVF9TT1VSQ0VfTElORSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvcGJkLmggKEFTTV9PVVRQVVRfU09VUkNFX0xJTkUpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGkgKEFTTV9PVVRQVVRfU09VUkNFX0xJTkUpOiBEb2N1bWVudCB0aGlyZCBwYXJhbWV0ZXIuCgoyMDAzLTA2LTE3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2V4cGFuZF9ibG9ja19tb3ZlKTogRGVjbGFyZS4KCShleHBhbmRfYmxvY2tfbW92ZSwgb3V0cHV0X2Jsb2NrX21vdmUpOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoZW51bSBibG9ja19tb3ZlX3R5cGUpOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoYmxvY2tfbW92ZV9jYWxsLCBvdXRwdXRfYmxvY2tfbW92ZSk6IFJlbW92ZS4KCShtaXBzX2Jsb2NrX21vdmVfc3RyYWlnaHQsIG1pcHNfYWRqdXN0X2Jsb2NrX21lbSk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2Jsb2NrX21vdmVfbG9vcCk6IFJlbmFtZWQgYW5kIHJld29ya2VkIGZyb20gYmxvY2tfbW92ZV9sb29wLgoJKG1pcHNfZXhwYW5kX2Jsb2NrX21vdmUpOiBMaWtld2lzZSBleHBhbmRfYmxvY2tfbW92ZS4gIFJldHVybiBmYWxzZQoJdG8gZmFsbCBiYWNrIG9uIHRoZSB0YXJnZXQtaW5kZXBlbmRlbnQgY29kZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAobW92c3Ryc2kpOiBVc2UgbWlwc19leHBhbmRfYmxvY2tfbW92ZS4KCShtb3ZzdHJzaV9pbnRlcm5hbCopOiBSZW1vdmUuCgoyMDAzLTA2LTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbGliLmgsIGNwcGhhc2guaCwgY3BwY2hhcnNldC5jLCBjcHBlcnJvci5jLCBjcHBleHAuYwoJKiBjcHBmaWxlcy5jLCBjcHBoYXNoLmMsIGNwcGluaXQuYywgY3BwbGV4LmMsIGNwcGxpYi5jCgkqIGNwcG1hY3JvLmMsIGNwcHBjaC5jLCBjcHB0cmFkLmMsIGNwcHNwZWMuYzogQ29udmVydCB0bwoJSVNPIEM6IG5ldy1zdHlsZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIG5vIG5lZWQgZm9yIFBBUkFNUywKCW5vIHNwZWNpYWwgcHVuY3R1YXRpb24gb24gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMsIHVzZSBzdHJpbmcKCWNvbnN0YW50IGNvbmNhdGVuYXRpb24gd2hlcmUgY29udmVuaWVudC4KCjIwMDMtMDYtMTcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHJ0bC5oOiBSZW1vdmUgZGVjbGFyYXRpb25zIGZyb20gY292ZXJhZ2UuaC4KCSogdG9wbGV2LmM6IEluY2x1ZGUgY292ZXJhZ2UuaC4KCSogTWFrZWZpbGUuaW4gKHRvcGxldi5vKTogRGVwZW5kIG9uIGNvdmVyYWdlLmguCgoJKiB0b3BsZXYuaDogUmVtb3ZlIGV4dHJhIGRlY2xhcmF0aW9uIG9mIHByaW50X3RpbWUuCgoJKiBnZW5ndHlwZS5jIChjbG9zZV9vdXRwdXRfZmlsZXMpOiBSZW1vdmUgZHVwbGljYXRlZCBkZWNsYXJhdGlvbi4KCjIwMDMtMDYtMTYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NwYXJjL3N5c3Y0Lmg6IFJlbW92ZSB0YXJnZXQtaW5kZXBlbmRlbnQgY29tbWVudDsKCXJlcGxhY2UgIkdOVSBDQyIgd2l0aCAiR0NDIi4KCSogY29uZmlnL3Z4d29ya3MuaDogUmVwbGFjZSAiR05VIGNvbXBpbGVyIiB3aXRoICJHQ0MiLgoJKiBjb25maWcvc3BhcmMvYW91dC5oLCBjb25maWcvc3BhcmMvYmlhcmNoNjQuaCwgY29uZmlnL3NwYXJjL2VsZi5oLAoJY29uZmlnL3NwYXJjL2ZyZWVic2QuaCwgY29uZmlnL3NwYXJjL2xpbnV4LmgsIGNvbmZpZy9zcGFyYy9saW51eDY0LmgsCgljb25maWcvc3BhcmMvbGl0ZS5oLCBjb25maWcvc3BhcmMvbGl0ZWNvZmYuaCwgY29uZmlnL3NwYXJjL2xpdGVlbGYuaCwKCWNvbmZpZy9zcGFyYy9uZXRic2QtZWxmLmgsIGNvbmZpZy9zcGFyYy9vcGVuYnNkLmgsCgljb25maWcvc3BhcmMvcnRlbXNlbGYuaCwgY29uZmlnL3NwYXJjL3NvbDItNjQuaCwKCWNvbmZpZy9zcGFyYy9zb2wyLWJpLmgsIGNvbmZpZy9zcGFyYy9zb2wyLWdhcy1iaS5oLAoJY29uZmlnL3NwYXJjL3NvbDItZ2xkLWJpLmgsIGNvbmZpZy9zcGFyYy9zb2wyLWdsZC5oLAoJY29uZmlnL3NwYXJjL3NvbDIuaCwgY29uZmlnL3NwYXJjL3NwNjQtYW91dC5oLAoJY29uZmlnL3NwYXJjL3NwNjQtZWxmLmgsIGNvbmZpZy9zcGFyYy9zcDg2eC1lbGYuaCwKCWNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCwgY29uZmlnL3NwYXJjL3N5c3Y0LW9ubHkuaDogUmVwbGFjZQoJIkdOVSBjb21waWxlciIsICJHTlUgQ0MiIHdpdGggIkdDQyIuCgkqIGNvbmZpZy9zcGFyYy9jeXByZXNzLm1kLCBjb25maWcvc3BhcmMvaHlwZXJzcGFyYy5tZCwKCWNvbmZpZy9zcGFyYy9zcGFyYy1tb2Rlcy5kZWYsIGNvbmZpZy9zcGFyYy9zcGFyYy5jLAoJY29uZmlnL3NwYXJjL3NwYXJjLm1kLCBjb25maWcvc3BhcmMvc3BhcmNsZXQubWQsCgljb25maWcvc3BhcmMvc3VwZXJzcGFyYy5tZCwgY29uZmlnL3NwYXJjL3VsdHJhMV8yLm1kLAoJY29uZmlnL3NwYXJjL3VsdHJhMy5tZDogUmVwbGFjZSAiR05VIENDIiwgIkdOVSBDb21waWxlciIsIGFuZAoJIkdOVSBDIENvbXBpbGVyIiB3aXRoICJHQ0MiLgoJKiBjb25maWcvaXAyay9pcDJrLmg6IFJlcGxhY2UgIkdOVSBDQyIgYW5kICJHTlUgY29tcGlsZXIiIHdpdGggIkdDQyIuCgoyMDAzLTA2LTE2ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfc3VicmVnKTogRG8gbm90IG92ZXItZXh0ZW5kIHZlY3RvcgoJY29uc3RhbnRzLgoKCSogdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9zaW1kLTQuYzogTmV3LgoKMjAwMy0wNi0xNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvaXAyay9pcDJrLmg6IFJlbW92ZSB0YXJnZXQtaW5kZXBlbmRlbnQgY29tbWVudHMuCgoJKiBjb25maWcuZ2NjOiBFeHBsaWNpdGx5IG1lbnRpb24gZWxmb3MuaCBpbiBpcDJrIGVudHJ5LgoJKiBjb25maWcvaXAyay9pcDJrLmg6IERvbid0ICNpbmNsdWRlIGl0IGhlcmUuCgoyMDAzLTA2LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBiaXRtYXAuYywgYnVpbHRpbnMuYywgYy1pbmNwYXRoLmMsIGNncmFwaC5jLCBjb25maWcvZnJ2L2Zydi5jLAoJY29uZmlnL21pcHMvbWlwcy5jLCBjcHBmaWxlcy5jLCBjcHBoYXNoLmMsIGNwcGluaXQuYywgY3BwbGliLmMsCglkd2FyZjJvdXQuYywgZHdhcmZvdXQuYywgZXhjZXB0LmMsIGV4cHIuYywgZXhwci5oLCBmb2xkLWNvbnN0LmMsCglmdW5jdGlvbi5jLCBnY2MuYywgZ2Vub3V0cHV0LmMsIGdlbnN1cHBvcnQuYywgZ2xvYmFsLmMsCgloYWlmYS1zY2hlZC5jLCBoYXNodGFibGUuYywgaWZjdnQuYywgaW50ZWdyYXRlLmMsIGxvY2FsLWFsbG9jLmMsCglsb29wLmMsIG1pcHMtdGR1bXAuYywgbWlwcy10ZmlsZS5jLCBta2RlcHMuYywgcHJvdG9pemUuYywKCXJlYWQtcnRsLmMsIHJlY29nLmgsIHJlbG9hZDEuYywgc2JpdG1hcC5jLCBzc2EtZGNlLmMsCglzdHJpbmdwb29sLmMsIHRsaW5rLmMsIHRyZWUuYywgdmFyYXNtLmMsIHZhcnJheS5jOiBEb24ndCB1c2UKCXRoZSBQVFIgbWFjcm8uCgoJKiBnZW5ndHlwZS5jOiBEb24ndCB1c2UgVU5JT05fSU5JVF9aRVJPLgoJKiBzeXN0ZW0uaCAoVU5JT05fSU5JVF9aRVJPKTogRGVsZXRlLgoKMjAwMy0wNi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9zdWJyZWcpOiBVc2UgR0VUX01PREVfU0laRSBpbnN0ZWFkIG9mCglHRVRfTU9ERV9VTklUX1NJWkUgd2hlbiBzaW1wbGlmeWluZyBjb25zdGFudCB2ZWN0b3JzLgoKMjAwMy0wNi0xNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogdGltZXZhci5jIChnZXRfcnVuX3RpbWUpOiBSZW1vdmUgZnVuY3Rpb24gcHJvdmlkZWQgYWxzbyBieQoJbGliaWJlcnR5LgoJKiB0aW1ldmFyLmg6IFJlbW92ZSBnZXRfcnVuX3RpbWUgZGVjbGFyYXRpb24uCgoyMDAzLTA2LTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX3J0eF9jb3N0cyk6IFJlbW92ZQoJdW5yZWFjaGFibGUgY29kZS4KCjIwMDMtMDYtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tYXR0cnMuZGVmLCBidWlsdGluLWF0dHJzLmRlZiwgYnVpbHRpbnMuYywgY3BwbGV4LmMsCgljcHBsaWIuYywgZ2VuY2hlY2suYywgZ2VuZ2VucnRsLmMsIG1hY2htb2RlLmRlZiwgcHJvdG9pemUuYzogRG9uJ3QKCXVzZSBtYWNyb3MgZnJvbSAic3ltY2F0LmgiLCBpbnN0ZWFkIHJlbHkgb24gSVNPIEMuCgoJKiBzeXN0ZW0uaDogRG9uJ3QgaW5jbHVkZSAic3ltY2F0LmgiLgoJKiBjb25maWd1cmUuaW4gKEFDX0NfU1RSSU5HSVpFKTogRGVsZXRlLgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDYtMTYgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1ta2hlYWRlcnMpOiBVc2UgSU5TVEFMTF9TQ1JJUFQgZm9yIHNjcmlwdHMuCgoJKiB0cmVlLmggKFNUTVRfQ0hFQ0spOiBOZXcgbWFjcm8uCglBbHNvIHVwcGVyLWNhc2UgYXJndW1lbnQgbmFtZXMgb24gYWxsIGNoZWNraW5nIG1hY3JvcyBhbmQKCWZpeCBzb21lIHdoaXRlc3BhY2UgcHJvYmxlbXM7IGFzc3VtZSBDT0RFIGFyZ3VtZW50IGRvZXMgbm90CgloYXZlIHNpZGUtZWZmZWN0cy4KCjIwMDMtMDYtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHNjYW4uaDogQ29udmVydCB0byBJU08gQy4KCSogc3lzdGVtLmg6IExpa2V3aXNlLgoKCSogYy1mb3JtYXQuYyAoZHluYW1pY19mb3JtYXRfdHlwZXMpOiBOZXcgcG9pbnRlciBmb3IgZHluYW1pYyBkYXRhLgoJKGZpbmRfbGVuZ3RoX2luZm9fbW9kaWZpZXJfaW5kZXgsIGluaXRfZHluYW1pY19hc21fZnByaW50Zl9pbmZvKToKCU5ldyBmdW5jdGlvbnMgc3BsaXQgb3V0IG9mLi4uCgkoaGFuZGxlX2Zvcm1hdF9hdHRyaWJ1dGUpOiAuLi5oZXJlLgoKMjAwMy0wNi0xNiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5oIChSRUdfQ0xBU1NfRlJPTV9MRVRURVIpOiBDaGFuZ2UgdG86CgkoUkVHX0NMQVNTX0ZST01fQ09OU1RSQUlOVCkuCgkoQ09OU1RfT0tfRk9SX0kpOiBSZW5hbWUgdG86CgkoQ09OU1RfT0tfRk9SX0kwOCkuICBDaGFuZ2VkIGFsbCB1c2Vycy4KCShDT05TVF9PS19GT1JfSik6IFJlbmFtZSB0bzoKCShDT05TVF9PS19GT1JfSTE2KS4gIENoYW5nZWQgYWxsIHVzZXJzLgoJKENPTlNUX09LX0ZPUl9LKTogUmVuYW1lIHRvOgoJKENPTlNUX09LX0ZPUl9QMjcpLiAgQ2hhbmdlZCBhbGwgdXNlcnMuCgkoQ09OU1RfT0tfRk9SX0wpOiBSZW5hbWUgdG86CgkoQ09OU1RfT0tfRk9SX0swOCkuICBDaGFuZ2VkIGFsbCB1c2Vycy4KCShDT05TVF9PS19GT1JfTyk6IFJlbmFtZSB0bzoKCShDT05TVF9PS19GT1JfSTA2KS4gIENoYW5nZWQgYWxsIHVzZXJzLgoJKENPTlNUX09LX0ZPUl9QKTogUmVuYW1lIHRvOgoJKENPTlNUX09LX0ZPUl9JMTApLiAgQ2hhbmdlZCBhbGwgdXNlcnMuCgkoQ09OU1RSQUlOVF9MRU4sIENPTlNUX09LX0ZPUl9JLCBDT05TVF9PS19GT1JfSjE2KTogRGVmaW5lLgoJKENPTlNUX09LX0ZPUl9KLCBDT05TVF9PS19GT1JfSywgQ09OU1RfT0tfRk9SX1ApOiBMaWtld2lzZS4KCShFWFRSQV9DT05TVFJBSU5UX0EsIEVYVFJBX0NPTlNUUkFJTlRfQnNjKTogTGlrZXdpc2UuCgkoRVhUUkFfQ09OU1RSQUlOVF9CLCBQSUNfT0ZGU0VUX1AsIFBJQ19ESVJFQ1RfQUREUl9QKTogTGlrZXdpc2UuCgkoRVhUUkFfQ09OU1RSQUlOVF9DcGcsIEVYVFJBX0NPTlNUUkFJTlRfQyk6IExpa2V3aXNlLgoJKEVYVFJBX01FTU9SWV9DT05TVFJBSU5ULChFWFRSQV9DT05TVFJBSU5UX1NyMCk6IExpa2V3aXNlLgoJKENPTlNUX09LX0ZPUl9MRVRURVJfUCk6IFJlcGxhY2Ugd2l0aAoJKENPTlNUX09LX0ZPUl9DT05TVFJBSU5UX1ApLgoJKEVYVFJBX0NPTlNUUkFJTlRfUyk6IFJlbmFtZSB0bzoKCShFWFRSQV9DT05TVFJBSU5UX0MxNikuICBDaGFuZ2VkIGFsbCB1c2Vycy4KCShNT1ZJX1NIT1JJX0JBU0VfT1BFUkFORF9QKTogRG9uJ3QgYWxsb3cgZGlyZWN0IGFkZHJlc3Nlcy4KCShFWFRSQV9DT05TVFJBSU5UX1QpOiBSZW5hbWUgdG86CgkoRVhUUkFfQ09OU1RSQUlOVF9Dc3kpLiAgQ2hhbmdlZCBhbGwgdXNlcnMuCgkoRVhUUkFfQ09OU1RSQUlOVF9aKTogUmVtb3ZlLgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBSZXBsYWNlIHdpdGg6CgkoRVhUUkFfQ09OU1RSQUlOVF9TVFIpLgoJKEVYVFJBX0NPTlNUUkFJTlRfVSk6IFJlbmFtZSB0bzoKCSAoRVhUUkFfQ09OU1RSQUlOVF9aKS4gIENoYW5nZWQgYWxsIHVzZXJzLgoJKiBzaC5jIChhbmRfb3BlcmFuZCk6IFVzZSBDT05TVF9PS19GT1JfSjE2LgoJKiBzaC5tZCAoY21wZXFzaV90LTEsIGNtcGVxc2lfdCwgYWRkZGkzX21lZGlhKTogVXNlIG5ldyBjb25zdHJhaW50cy4KCShhZGRzaTNfbWVkaWEsIGFkZHNpM19jb21wYWN0LCBhbmRzaTNfY29tcGFjdCwgYW5kZGkzKTogTGlrZXdpc2UuCgkoaW9yc2kzLCBpb3JkaTMsIHhvcnNpMywgeG9yZGkzLCBhc2hsc2kzX3N0ZCwgYXNobGhpM19rKTogTGlrZXdpc2UuCgkobHNocnNpM19rLCBtb3ZzaV9pLCBtb3ZzaV9pZSwgbW92c2lfaV9sb3dwYXJ0LCBtb3ZzaV9tZWRpYSk6IExpa2V3aXNlLgoJKG1vdnNpX21lZGlhX25vZnB1LCBtb3ZxaV9tZWRpYSwgbW92aGlfaSwgbW92aGlfbWVkaWEpOiBMaWtld2lzZS4KCSgqbW92ZGlfaSwgbW92ZGlfbWVkaWEsIG1vdmRpX21lZGlhX25vZnB1LCBzaG9yaV9tZWRpYSk6IExpa2V3aXNlLgoJKG1vdmRmX21lZGlhLCBtb3ZkZl9tZWRpYV9ub2ZwdSwgbW92djJzZl9pLCBtb3Z2NHNmX2kpOiBMaWtld2lzZS4KCShtb3ZzZl9tZWRpYSwgbW92c2ZfbWVkaWFfbm9mcHUsIG1vdnNpX3ksIGJlcV9tZWRpYSk6IExpa2V3aXNlLgoJKGJlcV9tZWRpYV9pLCBibmVfbWVkaWEsIHB0LCBwdGIsIG1vdnY4cWlfaSwgbW92djJoaV9pKTogTGlrZXdpc2UuCgkobW92djRoaV9pLCBtb3Z2MnNpX2ksIG5lZ2NtcGVxdjhxaSwgbmVnY21wZXF2MnNpKTogTGlrZXdpc2UuCgkobmVnY21wZXF2NGhpLCBuZWdjbXBndHV2OHFpLCBuZWdjbXBndHYyc2ksIG5lZ2NtcGd0djRoaSk6IExpa2V3aXNlLgoJKG1jbXYsIG1jbnZzX2x3LCBtY252c193YiwgbWNudnNfd3ViLCBtZXh0cl9ybCwgbWV4dHJfbHIpOiBMaWtld2lzZS4KCShtZXh0cjEsIG1leHRyMiwgbWV4dHIzLCBtZXh0cjQsIG1leHRyNSwgbWV4dHI2LCBtZXh0cjcpOiBMaWtld2lzZS4KCShtcGVybV93LCBtcGVybV93X2xpdHRsZSwgbXBlcm1fd19iaWcsIG1zYWRfdWJxX2kpOiBMaWtld2lzZS4KCShtc2hhcmRzX3EsIG1zaGZoaV9iLCBtc2hmbG9fYiwgbXNoZjRfYiwgbXNoZjBfYiwgbXNoZmhpX2wpOiBMaWtld2lzZS4KCShtc2hmbG9fbCwgbXNoZjRfbCwgbXNoZjBfbCwgbXNoZmhpX3csIG1zaGZsb193LCBtc2hmNF93KTogTGlrZXdpc2UuCgkobXNoZjBfdywgbXNoZmxvX3dfeCwgbXNoZmhpX2xfZGksIG1zaGZoaV9sX2RpX3Jldik6IExpa2V3aXNlLgoJKG1zaGZsb19sX2RpX3JldiwgbXNoZmxvX2xfZGlfeCwgY29uY2F0X3Yyc2YpOiBMaWtld2lzZS4KCShtc2hmbG9fbF9kaV94X3Jldiwgc3VidjJzaTMsIHN1YnY0aGkzLCBzc3N1YnYyc2kzKTogTGlrZXdpc2UuCgkoc3NzdWJ2NGhpMyk6IExpa2V3aXNlLgoJKG1vdnNmX2kpOiBDaGFuZ2UgSVswOF0vciB0byBHL3IuCgkobW92c2ZfaWUpOiBDaGFuZ2UgZi97RyxIfS9jL1ggdG8gZi97RyxIfS9jL0JzYy4KCgkqIHNoLmMgKHNoX291dHB1dF9taV90aHVuayk6IFVzZSBDT05TVF9PS19GT1JfQURELgoKMjAwMy0wNi0xNiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfbWVtb3J5X21vdmVfY29zdCk6IEZpeCB0eXBvLgoKMjAwMy0wNi0xNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogYmFzaWMtYmxvY2suaDogUmVtb3ZlIGR1cGxpY2F0ZSBwcm90b3R5cGUgb2YKCW5vdGVfcHJlZGljdGlvbl90b19icl9wcm9iLgoKCSogdHJlZS5oOiBSZW1vdmUgZHVwbGljYXRlIHByb3RvdHlwZSBvZiBzdHJpcF9mbG9hdF9leHRlbnNpb25zLgoKMjAwMy0wNi0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlnL2M0eC9jNHguYzogRG9uJ3QgaW5jbHVkZSAiYy10cmVlLmgiLgoJKiBjb25maWcvcGEvcGEuYzogTGlrZXdpc2UuCgkqIGxhbmdob29rcy5jOiBMaWtld2lzZS4KCSogdHJlZS5oIChwb3BsZXZlbCk6IERlY2xhcmUuCgoyMDAzLTA2LTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGNvbnN0X2Nvc3RzKTogTW92ZSB0aGlzIHRvIC4uLgoJKGg4MzAwX3J0eF9jb3N0cyk6IC4uLiBoZXJlLgoKMjAwMy0wNi0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX3RhbiBhbmQgT1RJX2F0YW4uCgkodGFuX29wdGFiLCBhdGFuX29wdGFiKTogRGVmaW5lIGNvcnJlc3BvbmRpbmcgbWFjcm9zLgoJKiBvcHRhYnMuYyAoaW5pdF9vcHRhYnMpOiBJbml0aWFsaXplIHRhbl9vcHRhYiBhbmQgYXRhbl9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEltcGxlbWVudCB0YW5fb3B0YWIgYW5kIGF0YW5fb3B0YWIKCXVzaW5nIHRhbj9mMiBhbmQgYXRhbj9mMiBwYXR0ZXJucy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWF0aGZuKTogSGFuZGxlIEJVSUxUX0lOX1RBTnssRixMfQoJdXNpbmcgdGFuX29wdGFiLCBhbmQgQlVJTFRfSU5fQVRBTnssRixMfSB1c2luZyBhdGFuX29wdGFiLgoJQ2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGVycm5vX3NldCB0byBmYWxzZS4KCShleHBhbmRfYnVpbHRpbik6IEV4cGFuZCBCVUlMVF9JTl9UQU57LEYsTH0gYW5kIEJVSUxUX0lOX0FUQU57LEYsTH0KCXVzaW5nIGV4cGFuZF9idWlsdGluX21hdGhmbi4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGF0YW5zZjIsIGF0YW5kZjIsIGF0YW54ZjIsIGF0YW50ZjIpOiBOZXcKCWV4cGFuZGVyIHBhdHRlcm5zIGltcGxlbWVudGVkIHVzaW5nIGV4aXN0aW5nIGF0YW4yP2YzIHBhdHRlcm5zLgoKMjAwMy0wNi0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByIDxQTFVTX0VYUFI+KTogSWYgb3BlcmFuZF9lcXVhbF9wIGNvbnNpZGVycwoJYm90aCBvcGVyYW5kcyBvZiB0aGUgYWRkaXRpb24gZXF1YWwsIHJldXNlIHRoZSBleHBhbmRlZCBSVEwuCgkoZXhwYW5kX2V4cHIgPE1VTFRfRVhQUj4pOiBMaWtld2lzZSBmb3IgbXVsdGlwbGljYXRpb24uCgoyMDAzLTA2LTE2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBDb25zaWRlciB0d28gY2FsbHMgdG8gImNvbnN0IgoJZnVuY3Rpb25zIHdpdGggaWRlbnRpY2FsIG5vbi12b2xhdGlsZSBhcmd1bWVudHMgdG8gYmUgZXF1YWwuCglDb25zaWRlciB0aGUgRlVOQ1RJT05fREVDTCBmb3IgdGhlICJfX2J1aWx0aW5fZm9vIiBmb3JtIG9mIGEKCWJ1aWx0LWluIGZ1bmN0aW9uIHRvIGJlIGVxdWFsIHRvIHRoZSAiZm9vIiBmb3JtLgoKMjAwMy0wNi0xNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0bGUuaDogUmVtb3ZlIHRhcmdldC1pbmRlcGVuZGVudCBjb21tZW50LgoJUmVwbGFjZSAiR05VIGNvbXBpbGVyIiB3aXRoICJHQ0MiIGluIGNvbW1lbnQuCgoyMDAzLTA2LTE2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB0cmFjZXIuYzogUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbi4KCgkqIHRvcGxldi5jOiBSZW1vdmUgZXh0cmEgZGVjbGFyYXRpb24gb2YgZGVjb2RlX2Rfb3B0aW9uLgoKCSogc3NhLmM6IFJlbW92ZSBkdXBsaWNhdGUgZGVjbGFyYXRpb24uCgoJKiBzcmVhbC5jOiBSZW1vdmUgZXh0cmEgZGVjbGFyYXRpb24gb2YgZHVtcF9zcmVhbC4KCgkqIHJlbG9hZDEuYzogUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbnMuCgoJKiBpbnRlZ3JhdGUuYzogUmVtb3ZlIGV4dHJhIGRlY2xhcmF0aW9uIG9mCglzZXRfZGVjbF9hYnN0cmFjdF9mbGFncy4KCgkqIGZsb3cuYzogUmVtb3ZlIGV4dHJhIGRlY2xhcmF0aW9uIG9mIGR1bXBfZmxvd19pbmZvLgoKCSogYWxpYXMuYzogUmVtb3ZlIGV4dHJhIGRlY2xhcmF0aW9uIG9mIGdldF9hZGRyLgoKMjAwMy0wNi0xNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvcnRlbXMuaCwgY29uZmlnL3NvbDIuaCwgY29uZmlnL3N2cjQuaCwgY29uZmlnL3VzZWdhcy5oLAoJY29uZmlnL3Z4d29ya3MuaDogR05VIENDIC0+IEdDQy4KCgkqIGNvbnZlcnQuYywgZHdhcmYyb3V0LmMsIGR3YXJmb3V0LmMsIGVtaXQtcnRsLmMsIGZ1bmN0aW9uLmMsCglsaXN0cy5jLCBwcmludC1ydGwuYywgcHJpbnQtdHJlZS5jLCByZWFkLXJ0bC5jLCBydGwtZXJyb3IuYywKCXN0bXQuYywgdG9wbGV2LmMsIGludGVncmF0ZS5oLCBsb29wLmgsIG1hY2htb2RlLmgsIHJ0bC5oLAoJc3NhLmgsIHRyZWUuZGVmOiBSZXBsYWNlIG92ZXJseSBzcGVjaWZpYyByZWZlcmVuY2VzIHRvICJHTlUgQyIKCWFuZCAiR05VIEMgQ29tcGlsZXIiIHdpdGggcmVmZXJlbmNlcyB0byAiR0NDIi4KCjIwMDMtMDYtMTYgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guYyAocHJlcGFyZV9tb3ZlX29wZXJhbmQpOiBDaGVjayBpZiBvcGVyYW5kIDAgaXMgYW4gaW52YWxpZAoJbWVtb3J5IHJlZmVyZW5jZS4gIEZpeCB0ZXN0IHRoYXQgY2hlY2tzIGlmIG9wZXJhbmQgMSBpcyB1c2luZyByMC4KCSogc2gubWQgKG1vdmhpX2kpOiBEb24ndCBhbGxvdyBzdC53IHIwLEAoclgsclkpIC4KCgkqIGRlZmF1bHRzLmggKFJFR19DTEFTU19GUk9NX0NPTlNUUkFJTlQpOiBPbmx5IGRlZmluZSBpZiBub3QgYWxyZWFkeQoJZGVmaW5lZC4KCjIwMDMtMDYtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZW1pdF9zdGF0dXMpOiBSZW1vdmUgeF9sYXN0X2xpbmVudW0sCgl4X2xhc3RfZmlsZW5hbWUuIEFkZCB4X2xhc3RfbG9jYXRpb24uCgkqIHJ0bC5oOiAjaW5jbHVkZSAiaW5wdXQuaCIuCgkoTk9URV9EQVRBKTogTmV3LgoJKiBjZmdsYXlvdXQuYyAoZHVwbGljYXRlX2luc25fY2hhaW4pOiBVc2UgZW1pdF9saW5lX25vdGUgZm9yIGxpbmUKCW51bWJlciBub3Rlcy4KCSogZW1pdC1ydGwuYyAobGFzdF9saW5lbnVtLCBsYXN0X2ZpbGVuYW1lKTogUmVtb3ZlLgoJKGxhc3RfbG9jYXRpb24pOiBOZXcuCgkoZW1pdF9saW5lX25vdGVfYWZ0ZXIpOiBMSU5FIG11c3QgYWx3YXlzIGJlID49IDAuCgkoZW1pdF9saW5lX25vdGUpOiBMaWtld2lzZS4gQ2hlY2sgbm90IGR1cGxpY2F0ZSBoZXJlLi4uCgkoZW1pdF9ub3RlKTogLi4uIHJhdGhlciB0aGFuIGhlcmUuCgkoZW1pdF9saW5lX25vdGVfZm9yY2UsIGZvcmNlX25leHRfbGluZV9ub3RlLCBpbml0X2VtaXQpOiBBZGp1c3QuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogVXNlIGVtaXRfbGluZV9ub3RlIGZvcgoJbGluZSBudW1iZXIgbm90ZXMuCgkoY29weV9pbnNuX2xpc3QpOiBMaWtld2lzZS4KCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5KTogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluIChSVExfSCk6IEFkZCBpbnB1dC5oLgoKMjAwMy0wNi0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogb3B0YWJzLmMgKGVtaXRfbGliY2FsbF9ibG9jayk6IERvbid0IGhvaXN0IGluc25zIHBhc3QgYSBsYWJlbC4KCjIwMDMtMDYtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmgsIGNvbmZpZy9hbHBoYS9lbGYuaCwKCWNvbmZpZy9hbHBoYS9vc2YuaCwgY29uZmlnL2FscGhhL3VuaWNvc21rLmgsIGNvbmZpZy9hbHBoYS92bXMuaCwKCWNvbmZpZy9hbHBoYS92bXMtY2MuYywgY29uZmlnL2FscGhhL3Ztcy1sZC5jOiBVcGRhdGUgdG8gSVNPIEMuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jOiBMaWtld2lzZS4gIE1vdmUgdGFyZ2V0bSBpbml0IHRvIGVuZCBvZiBmaWxlLgoJUmVtb3ZlIHVubmVlZGVkIHN0YXRpYyBmdW5jdGlvbiBkZWNscy4KCjIwMDMtMDYtMTYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogcy9vbi92YWx1ZS8uCgkoT1BUX2ZhYmlfdmVyc2lvbl8sIE9QVF9mdGFic3RvcF8sIE9QVF9mdGVtcGxhdGVfZGVwdGhfKTogVXNlIHZhbHVlCglkaXJlY3RseSByYXRoZXIgdGhhbiBjb252ZXJ0aW5nIHRoZSBhcmd1bWVudC4KCSogYy5vcHQ6IFVwZGF0ZSBkb2NzLiAgVXNlIFVJbnRlZ2VyIHdoZXJlIGFwcHJvcHJpYXRlLgoJKiBjb21tb24ub3B0OiBVc2UgVUludGVnZXIgd2hlcmUgYXBwcm9wcmlhdGUuCgkqIG9wdHMuYyAoaW50ZWdyYWxfYXJndW1lbnQpOiBOZXcuCgkoaGFuZGxlX2FyZ3VtZW50KTogSGFuZGxlIGludGVncmFsIGFyZ3VtZW50cywgYW5kIG9wdGlvbmFsCglqb2luZWQgYXJndW1lbnRzLgoJKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogVXBkYXRlLgoJKiBvcHRzLmggKENMX01JU1NJTkdfT0ssIENMX1VJTlRFR0VSKTogTmV3LgoJKiBvcHRzLnNoOiBIYW5kbGUgSm9pbmVkT3JNaXNzaW5nIGFuZCBVSW50ZWdlciBmbGFncy4KCjIwMDMtMDYtMTYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogUmVtb3ZlCgl1bm5lY2Vzc2FyeSBleHRlcm4gZGVjbGFyYXRpb24uCgoyMDAzLTA2LTE1ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9nb2Zhc3QuaCwgY29uZmlnL2ludGVyaXguaCwgY29uZmlnL2ludGVyaXgzLmgsCgljb25maWcvbGliZ2xvc3MuaCwgY29uZmlnL2xpbnV4LWFvdXQuaCwgY29uZmlnL2xpbnV4LmgsCgljb25maWcvbHlueC1uZy5oLCBjb25maWcvbHlueC5oOiBHTlUgQ0MgLT4gR0NDLgoJKiBjb25maWcva2Fvcy5oOiAiR05VIGNvbXBpbGVyIiAtPiBHQ0MuCgkqIGNvbmZpZy9saW51eC1hb3V0LmgsIGNvbmZpZy9seW54Lmg6IENsYXJpZnkgY29tbWVudCBkZXNjcmliaW5nIGZpbGUuCgoJKiBjb25maWcvaXAyay9jcnQwLlMsIGNvbmZpZy9pcDJrL2lwMmstcHJvdG9zLmgsCgljb25maWcvaXAyay9pcDJrLmMsIGNvbmZpZy9pcDJrL2lwMmsubWQsIGNvbmZpZy9pcDJrL2xpYmdjYy5TOgoJR05VIENDIC0+IEdDQy4KCgkqIGNvbmZpZy9zdnIzLmg6IFJlbW92ZSAjaWYgMCBjb2RlLCBtaXNsZWFkaW5nIGNvbW1lbnRzLgoJR05VIENDIC0+IEdDQy4KCjIwMDMtMDYtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2bXNkYmdvdXQuYyAodm1zZGJnb3V0X2ZpbmlzaCk6IFJlbmFtZSBwYXJhbWV0ZXIgdG8KCW1haW5faW5wdXRfZmlsZW5hbWUgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBpbnB1dF9maWxlbmFtZSBtYWNyby4KCjIwMDMtMDYtMTUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoYXNtX2ZpbGVfbmFtZSwgZ19zd2l0Y2hfc2V0LAoJZ19zd2l0Y2hfdmFsdWUpOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBSZW1vdmUKCXVubmVjZXNzYXJ5IGV4dGVybiBkZWNsYXJhdGlvbnMuCgoyMDAzLTA2LTE1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb25maWcvZnJ2L2Zydi5oOiBSZW1vdmUgZGVjbGFyYXRpb24gb2YgZ19zd2l0Y2hfdmFsdWUuCgkqIGNvbmZpZy9tMzJyL20zMnIuaDogUmVtb3ZlIGRlY2xhcmF0aW9uIG9mIGdfc3dpdGNoX3ZhbHVlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmM6IFJlbW92ZSBkZWNsYXJhdGlvbiBvZiBhc21fZmlsZV9uYW1lLgoKMjAwMy0wNi0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogb3B0cy5zaDogUXVvdGUgJysnIGluIHJlZ2V4LgoKMjAwMy0wNi0xNSAgQW5kcmV3IFBpbnNraSA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNvbmZpZy9yczYwMDAvdC1yczYwMDA6IEFkZCBkZXBlbmRlbmNlIG9mIGNmZ2xheW91dC5oIHRvIHJzNjAwMC5vLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBJbmNsdWRlIGNmZ2xheW91dC5oLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmM6IExpa2V3aXNlLgoKMjAwMy0wNi0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogb3B0cy5zaDogUXVvdGUgJysnIGluIHJlZ2V4LgoKMjAwMy0wNi0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1vcHRzLmMgKGxhbmdfZmxhZ3MpOiBVcGRhdGUgZm9yIG5ldyBzcGVsbGluZyBvZiBmbGFncy4KCSh3cml0ZV9sYW5ncyk6IFNpbWlsYXJseS4KCSogYy5vcHQ6IFNwZWNpZnkgbGFuZ3VhZ2VzLgoJKiBvcHRzLmg6IFJlbW92ZSBsYW5ndWFnZXMuCgkqIG9wdHMuc2g6IFJlY29nbmlzZSBmcm9udC1lbmQgZGVmaW5lZCBsYW5ndWFnZXMuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBVcGRhdGUuCgoyMDAzLTA2LTE1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBhbGxvYy1wb29sLmM6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoJKiBhbGxvYy1wb29sLmg6IExpa2V3aXNlLgoJKiBhbGlhcy5jOiBMaWtld2lzZS4KCSogYXR0cmlicy5jOiBMaWtld2lzZS4KCSogYmItcmVvcmRlci5jOiBMaWtld2lzZS4KCSogYml0bWFwLmg6IExpa2V3aXNlLgoJKiBiaXRtYXAuYzogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmM6IExpa2V3aXNlLgoKCSogdHJlZS5oOiBDb252ZXJ0IHByb3RvdHlwZXMgb2YgYXR0cmlicy5jIHRvIElTTyBDOTAuCgkqIGJhc2ljLWJsb2NrLmg6IENvbnZlcnQgcHJvdG90eXBlcyBvZiBiYi1yZW9yZGVyLmMgdG8gSVNPIEM5MC4KCSogcnRsLmg6IENvbnZlcnQgcHJvdG90eXBlcyBvZiBhbGlhcy5jIGFuZCBidWlsdGlucy5jIHRvIElTTyBDOTAuCgkqIGV4cHIuaDogQ29udmVydCBwcm90b3R5cGVzIG9mIGJ1aWx0aW5zLmMgdG8gSVNPIEM5MC4KCjIwMDMtMDYtMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoZXhwc2YyLCBleHBkZjIsIGV4cHhmMik6IE5ldyBwYXR0ZXJucyB0bwoJaW1wbGVtZW50IGV4cCwgZXhwZiBhbmQgZXhwbCBidWlsdC1pbnMgYXMgaW5saW5lIHg4NyBpbnRyaW5zaWNzLgoJKFVOU1BFQ19GU0NBTEUsIFVOU1BFQ19GUk5ESU5ULCBVTlNQRUNfRjJYTTEpOiBOZXcgdW5zcGVjcyB0bwoJcmVwcmVzZW50IHg4NydzIGZzY2FsZSwgZnJuZGludCBhbmQgZjJ4bTEgaW5zbnMgcmVzcGVjdGl2ZWx5LgoJKCpmc2NhbGVfc2Z4ZjMsICpmc2NhbGVfZGZ4ZjMsICpmc2NhbGVfeGYzKTogTmV3IGluc24gcGF0dGVybnMKCXRvIGVuY29kZSB4ODcncyAiZnNjYWxlIiBpbnN0cnVjdGlvbiBmb2xsb3dlZCBieSBhIHBvcC4KCSgqZnJuZGludHhmMik6IE5ldyBpbnNuIHBhdHRlcm4gZm9yICJmcm5kaW50Ii4KCSgqZjJ4bTF4ZjIpOiBOZXcgaW5zbiBwYXR0ZXJuIGZvciAiZjJ4bTEiLgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19GUk5ESU5UIGFuZAoJVU5TUEVDX0YyWE0xIGxpa2UgVU5TUEVDX3tTSU4sQ09TfSBhbmQgaGFuZGxlIFVOU1BFQ19GU0NBTEUgbGlrZQoJVU5TUEVDX0ZQQVRBTi4KCjIwMDMtMDYtMTUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnZW5jaGVjay5jIChtYWluKTogQXZvaWQgZ2VuZXJhdGluZyBkdXBsaWNhdGUgbWFjcm9zLgoKCSogTWFrZWZpbGUuaW4gKHN0YWdlZmVlZGJhY2stc3RhcnQpOiBVc2UgJChTVUJESVJTKSBpbnN0ZWFkIG9mCglrbm93aW5nIG5hbWVzIG9mIGxhbmd1YWdlIHN1YmRpcmVjdG9yaWVzLgoKMjAwMy0wNi0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1wY2guYyAoYXNtX2ZpbGVfbmFtZSk6IFJlbW92ZS4KCSogY29tbW9uLm9wdDogQWRkIG1vcmUgc3dpdGNoZXMuCgkqIGZsYWdzLmggKGdfc3dpdGNoX3NldCk6IEJvb2xpZnkuCgkqIG9wdHMuYyAoZ19zd2l0Y2hfdmFsdWUsIGdfc3dpdGNoX3NldCwgZXhpdF9hZnRlcl9vcHRpb25zLAoJdmVyc2lvbl9mbGFnKTogTW92ZSBmcm9tIHRvcGxldi5jLgoJKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIG1vcmUgc3dpdGNoZXMgZnJvbSB0b3BsZXYuYy4KCSogdG9wbGV2LmMgKGRpc3BsYXlfaGVscCwgZGlzcGxheV90YXJnZXRfb3B0aW9ucywgZGVjb2RlX2Rfb3B0aW9uLAoJcHJpbnRfdmVyc2lvbik6IE1ha2Ugbm9uLXN0YXRpYywgcmVtb3ZlIHByb3RvdHlwZXMuCgkoYXV4X2Jhc2VfbmFtZSwgYXNtX2ZpbGVfbmFtZSwgYXV4X2luZm9fZmlsZV9uYW1lKTogQ29uc3RpZnkuCgkodmVyc2lvbl9mbGFnLCBnX3N3aXRjaF92YWx1ZSwgZ19zd2l0Y2hfc2V0LCBleGl0X2FmdGVyX29wdGlvbnMpOgoJUmVtb3ZlLgoJKGluZGVwZW5kZW50X2RlY29kZV9vcHRpb24pOiBNb3ZlIHNvbWUgaGFuZGxlcnMgdG8gb3B0cy5jLgoJKiB0b3BsZXYuaCAoYXV4X2luZm9fZmlsZV9uYW1lLCBhdXhfYmFzZV9uYW1lLCBhc21fZmlsZV9uYW1lLAoJZXhpdF9hZnRlcl9vcHRpb25zLCB2ZXJzaW9uX2ZsYWcsIGRpc3BsYXlfaGVscCwgZGlzcGxheV90YXJnZXRfb3B0aW9ucywKCXByaW50X3ZlcnNpb24sIGRlY29kZV9kX29wdGlvbik6IE5ldy4KCjIwMDMtMDYtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQ6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogY29uZmlnL2FybS9hcm0uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vY3J0bi5hc206IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9tMzJyLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9tMzJyLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogTGlrZXdpc2UuCgoyMDAzLTA2LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX291dHB1dF9taV90aHVua19vc2YpOiBDYWxsCglpbnNuX2xvY2F0b3JzX2luaXRpYWxpemUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9vdXRwdXRfbWlfdGh1bmspOiBEbyBpdCBsYXRlci4KCjIwMDMtMDYtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9leHBlY3RfanVtcCk6IFJlbW92ZSByZWR1bmRhbnQKCXRlc3RzIHRoYXQgYXJlIGFsc28gaW4gYW55X2NvbmRqdW1wX3AoKS4KCjIwMDMtMDYtMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmdjYzIuYzogRGVsZXRlIHN5c1Y2OCBMX3RyYW1wb2xpbmUgc2VjdGlvbi4KCSogY29uZmlnL202OGsvbW90MzMwMC1jcnQwLlM6IERlbGV0ZSBmaWxlLgoJKiBjb25maWcvbTY4ay9tb3QzMzAwTWNydDAuUzogTGlrZXdpc2UuCgoyMDAzLTA2LTE1ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9hb3V0b3MuaDogUmVtb3ZlLgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgcmVmZXJlbmNlIHRvIGFvdXRvcy5oLgoJKiBjb25maWcvbTY4ay9tNjhrLWFvdXQuaDogUmVtb3ZlIHJlZmVyZW5jZSB0byBhb3V0b3MuaC4KCjIwMDMtMDYtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGRvYy90bS50ZXhpOiBMaWtld2lzZS4KCSogY29uZmlnL2ZwLWJpdC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2LmM6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvTk9URVM6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvU1RBVFVTOiBMaWtld2lzZS4KCjIwMDMtMDYtMTQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGwuaCAoU1RPUkVfRkxBR19WQUxVRSk6IFJlbW92ZSBkZWZhdWx0IGRlZmluaXRpb24gZnJvbSBoZXJlLgoJKiBkZWZhdWx0cy5oIChTVE9SRV9GTEFHX1ZBTFVFKTogTW92ZSBkZWZhdWx0IGRlZmluaXRpb24gdG8gaGVyZS4KCSogZG9jL3RtLnRleGkgKFNUT1JFX0ZMQUdfVkFMVUUpOiBEb2N1bWVudCB0aGUgZGVmYXVsdCB2YWx1ZS4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChTVE9SRV9GTEFHX1ZBTFVFKTogUmVtb3ZlIGRlZmluaXRpb24uCgkqIGNvbmZpZy9hcmMvYXJjLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzNzAvaTM3MC5oIChTVE9SRV9GTEFHX1ZBTFVFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTk2MC9pOTYwLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChTVE9SRV9GTEFHX1ZBTFVFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pcDJrL2lwMmsuaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9tMzJyLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChTVE9SRV9GTEFHX1ZBTFVFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbWl4L21taXguaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEuaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvcGRwMTEvcGRwMTEuaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvdjg1MC92ODUwLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoU1RPUkVfRkxBR19WQUxVRSk6IExpa2V3aXNlLgoKMjAwMy0wNi0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9wdHMuc2ggKFBPU0lYTFlfQ09SUkVDVCk6IFVuc2V0IGl0LgoKCSogdHJlZS5oIChpbml0X2Z1bmN0aW9uX3N0YXJ0KTogUmVtb3ZlIGZpbGVuYW1lIGFuZCBsaW5lIHBhcmFtdGVycy4KCSogZnVuY3Rpb24uYyAoaW5pdF9mdW5jdGlvbl9zdGFydCk6IFJlbW92ZSBmaWxlbmFtZSBhbmQgbGluZQoJcGFyYW1ldGVycy4gVXNlIERFQ0xfU09VUkNFX0xPQ0FUSU9OLgoJKiBjLWRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IEFkanVzdCBpbml0X2Z1bmN0aW9uX3N0YXJ0IGNhbGwuCgkoY19leHBhbmRfYm9keV8xKTogTGlrZXdpc2UuCgkqIGNvdmVyYWdlLmMgKGNyZWF0ZV9jb3ZlcmFnZSk6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX3RtcF9mdW5jdGlvbl9kZWNsKTogU2V0IGxpbmUgbnVtYmVyIHRvCgl6ZXJvLgoJKGhhY2tfbWV0aG9kX3Byb3RvdHlwZSk6IEFkanVzdCBpbml0X2Z1bmN0aW9uX3N0YXJ0IGNhbGwuCgoyMDAzLTA2LTE0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCglQUiB0YXJnZXQvMzcyNAoJKiBhcm0vbGludXgtZWxmLmggKFBST0ZJTEVfSE9PSyk6IERlZmluZS4KCjIwMDMtMDYtMTQgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIHRhcmdldC8xMTE4MwoJKiBhcm0uaCAoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogRGVmaW5lLgoKMjAwMy0wNi0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBvcHRzLnNoOiBXb3JrIGFyb3VuZCBhIG15c3RlcmlvdXMgZmVhdHVyZSBpbiBjeWd3aW4ncyBnYXdrCgl3aGVyZSBzcGVjaWZ5aW5nIHRoZSBpbnB1dCBmaWxlcyBleHBsaWNpdGx5IGhhcyBhIGRpZmZlcmVudAoJYmVoYXZpb3IgdG8gcGlwaW5nIHRoZW0gdmlhIHN0ZGluLgoKMjAwMy0wNi0xNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IFVwZGF0ZS4KCjIwMDMtMDYtMTQgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIHRhcmdldC8xMTE4MwoJKiBhcm0uYyAob3V0cHV0X21vdmVfZG91YmxlKTogUGFzcyBTSW1vZGUgdG8gYWRqdXN0X2FkZHJlc3MuCgoyMDAzLTA2LTE0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIHRvIHVzZSBjb21tb24ub3B0IGFuZCBsYW5nX29wdF9maWxlcy4KCShjLW9wdGlvbnMuYywgYy1vcHRpb25zLmgpOiBSZW1vdmUuCgkob3B0aW9ucy5jLCBvcHRpb25zLmgpOiBBZGQuCgkqIGMtb3B0cy5jOiBJbmNsdWRlIG9wdGlvbnMuaCBub3QgYy1vcHRpb25zLmguCgkqIGNvbW1vbi5vcHQ6IE5ldyBmaWxlLgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogQWRkIGxhbmdfb3B0X2ZpbGVzLgoJKiBvcHRzLmM6IEluY2x1ZGUgZmxhZ3MuaCBhbmQgZGlhZ25vc3RpYy5oLgoJKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogTmV3LgoJKGhhbmRsZV9vcHRpb24pOiBVcGRhdGUgdG8gcmVjb2duaXplIGNvbW1vbiBvcHRpb25zIGFuZCBhbGwKCWxhbmd1YWdlLWRlcGVuZGVudCBvcHRpb25zLgoJKiBvcHRzLmggKENMX0Y3NywgQ0xfSkFWQSwgQ0xfQURBLCBDTF9DT01NT04sIENMX1RSRUVMQU5HKTogTmV3LgoJKHN0cnVjdCBjbF9vcHRpb24pOiBNYWtlIGZsYWdzIG9mIHR5cGUgaW50LgoJKiBvcHRzLmg6IEZsYWcgb3B0aW9uIHdpdGggZnJvbnQgZW5kcyB0byB3aGljaCBpdCBhcHBsaWVzLgoJSGFuZGxlIGR1cGxpY2F0ZSBvcHRpb25zLgoJKiB0b3BsZXYuYyAoZmlsZW5hbWUpOiBSZW1vdmUuCgkoaW5kZXBlbmRlbnRfZGVjb2RlX29wdGlvbik6IERvbid0IGhhbmRsZSBmaWxlbmFtZXMgYW5kIC1xdWlldC4KCShwcm9jZXNzX29wdGlvbnMsIGRvX2NvbXBpbGUpOiBVcGRhdGUuCgoyMDAzLTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMpOiBBZGQgZGVzY3JpcHRpb24gb2YgZGlmZmVyZW50CglBUk0gc3VwcG9ydGVkIGZpbGUgZm9ybWF0IHRhcmdldHMuCgpTYXQgSnVuIDE0IDExOjEyOjA0IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVvcmcuYyAoZW1pdF9kZWxheV9zZXF1ZW5jZSwgZGJyX3NjaGVkdWxlKTogQ2xlYXIgaW5zbiBsb2NhdG9ycwoJaW5zaWRlIGRlbGF5IHNsb3RzLgoKMjAwMy0wNi0xMyAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogdW53aW5kLWMuYzogRGVmaW5lIE5PX1NJWkVfT0ZfRU5DT0RFRF9WQUxVRS4KCSogdW53aW5kLXBlLmggKHNpemVfb2ZfZW5jb2RlZF92YWx1ZSk6IERvIG5vdCBkZWZpbmUgaWYKCU5PX1NJWkVfT0ZfRU5DT0RFRF9WQUxVRSBpcyBkZWZpbmVkLgoKMjAwMy0wNi0xMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByIDxDT01QTEVYX0NTVD4pOiBIYW5kbGUgdGhlIGNhc2Ugb2YKCWV4cGFuZGluZyBhIGNvbXBsZXggY29uc3RhbnQgaW50byBhIENPTkNBVCB0YXJnZXQuCgoyMDAzLTA2LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3N2cjMuaCAoQVNNX0ZJTEVfU1RBUlQpOiBEb24ndCB1c2UgQVNNX0ZJTEVfU1RBUlRfMS4KCShBU01fRklMRV9TVEFSVF8xKTogRGVsZXRlLgoJKiBjb25maWcvaTM4Ni9hdHQuaCwgY29uZmlnL2kzODYvc2NvNS5oLAoJY29uZmlnL2kzODYvc3lzdjMuaAoJKEFTTV9GSUxFX1NUQVJUXzEpOiBEZWxldGUuCgoyMDAzLTA2LTEzICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2JzZC5oOiBSZW1vdmUgQVNNX0ZJTEVfU1RBUlQuCgkqIGNvbmZpZy9pMzg2L2RqZ3BwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9nYXMuaCAoQVNNX0ZJTEVfU1RBUlQpOiBPdXRwdXQgLmZpbGUgYmVmb3JlIC5pbnRlbF9zeW50YXguCgoJKiBjb25maWcvaTM4Ni9kamdwcC5oOiBNb3ZlIGluY2x1ZGVkIHVuaXguaCwgYnNkLmgsIGdhcy5oIHRvIC4uLgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LXBjLW1zZG9zZGpncHApOiAuLi4gaGVyZS4KCjIwMDMtMDYtMTMgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCVBSIGJvb3RzdHJhcC8xMDgzNQoJKiBoYWlmYS1zY2hlZC5jIChtYXhfbG9va2FoZWFkX3RyaWVzLAoJY2FjaGVkX2ZpcnN0X2N5Y2xlX211bHRpcGFzc19kZmFfbG9va2FoZWFkLAoJY2FjaGVkX2lzc3VlX3JhdGUpOiBOZXcgdmFyaWFibGVzLgoJKG1heF9pc3N1ZSk6IENoZWNrIHRoZSBudW1iZXIgb2YgdHJpZXMuCgkoY2hvb3NlX3JlYWR5KTogQ2FsY3VsYXRlIG1heF9sb29rYWhlYWRfdHJpZXMuCgkoc2NoZWRfaW5pdCk6IENoZWNrIGNhY2hlZF9pc3N1ZV9yYXRlLgoKMjAwMy0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNmZ2J1aWxkLmMgKG1ha2VfZWRnZXMpOiBTZXQgQUJOT1JNQUwgd2l0aCBTSUJDQUxMLgoJKiBjZmdydGwuYyAocHVyZ2VfZGVhZF9lZGdlcyk6IEV4cGVjdCBpdCB0b28uCgoyMDAzLTA2LTEzICBKaW0gV2lsc29uICA8d2lsc29uQHR1bGlwdHJlZS5vcmc+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBib290c3RyYXAvMTA5ODMKCSogY29tYmluZS5jIChtYWtlX2V4dHJhY3Rpb24pOiBVc2UgZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUKCXdoZW4gZXh0cmFjdGluZyBmcm9tIGEgUkVHIGFuZCBub3QgaW4gdGhlIGRlc3RpbmF0aW9uIG9mIGEgU0VULgoKMjAwMy0wNi0xMyAgRG91ZyBFdmFucyAgPGRqZUBzZWJhYmVhY2gub3JnPgoKCSogdHN5c3RlbS5oIChhYm9ydCk6IERlY2xhcmUgaW4gaW5oaWJpdF9saWJjIGNhc2UgdG8gcmVtb3ZlIGJ1aWxkCgl3YXJuaW5ncyBmb3IgYWRkdnNpMywgZXQuYWwuCgoyMDAzLTA2LTEzICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfbW9kZV9hdHRyaWJ1dGUpOiBVc2UgVkVDVE9SX01PREVfUCBtYWNyby4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9zdWJyZWcpOiBTYW1lLgoKCSogZW1pdC1ydGwuYyAoZ2VuX2xvd3BhcnRfY29tbW9uKTogU2FtZS4KCjIwMDMtMDYtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBidWlsdGlucy5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCjIwMDMtMDYtMTMgIERvdWcgRXZhbnMgIDxkamVAc2ViYWJlYWNoLm9yZz4KCSAgICBLYXp1aGlybyBJbmFva2EgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmggKG0zMnJfcGFzc19ieV9yZWZlcmVuY2UpOiBEZWNsYXJlLgoJKiBjb25maWcvbTMyci9tMzJyLmMgKG0zMnJfcGFzc19ieV9yZWZlcmVuY2UpOiBOZXcgZm4uCgkobTMycl92YV9hcmcpOiBVc2UgaXQuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogRGl0dG8uCgkoUkVUVVJOX0lOX01FTU9SWSk6IERpdHRvLgoKMjAwMy0wNi0xMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjLXR5cGVjay5jOiBSZW1vdmUgI2lmIDAgY2xhdXNlcy4KCglQUiBvdGhlci8xNDk0CgkqIGNvbmZpZy9hbHBoYS9vcGVuYnNkLmgsIGNvbmZpZy9pMzg2L29wZW5ic2QuaCwKCWNvbmZpZy9tNjhrL29wZW5ic2QuaCwgY29uZmlnL3NwYXJjL29wZW5ic2QuaDogUmVtb3ZlCglyZXNpZHVhbCByZWZlcmVuY2UgdG8gRUdDUy4KCjIwMDMtMDYtMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKG91dHB1dF9jYWxsX21lbSk6IElmIHRoZSBhZGRyZXNzIHJlZmVyZW5jZXMgdGhlIGxpbmstcmVnaXN0ZXIKCXVzZSBhbiBpbnN0cnVjdGlvbiBzZXF1ZW5jZSB0aGF0IGF2b2lkcyBlYXJseS1jbG9iYmVyaW5nIElQLgoJKGVsaW1pbmF0ZV9scjJpcCk6IERlbGV0ZS4KCjIwMDMtMDYtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtZm9ybWF0LmMgKGZvcm1hdF90eXBlc19vcmlnKTogRGlzYWxsb3cgJyonIHdpZHRoL3ByZWNpc2lvbiBpbgoJYXNtX2ZwcmludGYgZm9ybWF0IGNoZWNrcy4KCjIwMDMtMDYtMTMgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF92YV9hcmcpOiBGaXggYWxpZ25tZW50IHdoZW4gcmV0cmlldmluZwoJbm9uLWludGVncmFsIHR5cGVzIGZyb20gaW50ZWdlciByZWdpc3RlciBzYXZlIGFyZWEgc2xvdHMuCgoyMDAzLTA2LTEzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9pMzg2L3N2cjNkYnguaDogR05VIENDIC0+IEdDQzsgSW50ZWwgMzg1IC0+IEludGVsIDM4Ni4KCjIwMDMtMDYtMTMgIEZsb3JpYW4gV2VpbWVyICA8ZndAZGVuZWIuZW55by5kZT4KCgkqIGRvYy9pbnZva2UudGV4aSAoU1BBUkMgT3B0aW9ucyk6IERvY3VtZW50IGBgLW1pbXB1cmUtdGV4dCcnLgoKMjAwMy0wNi0xMyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGludXguaCAoVEFSR0VUX0FTTV9GSUxFX0VORCk6IFNldCBUQVJHRVRfQVNNX0ZJTEVfRU5ECgl0byBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrLgoKMjAwMy0wNi0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTEwODkKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc3NlX21vdmFwcyk6IFVzZSBhbiBleHBhbmRlciB0byBmb3JjZQoJb25lIG9wZXJhbmQgdG8gYmUgYSByZWdpc3Rlci4KCShzc2VfbW92dXBzKTogTGlrZXdpc2UuCgoyMDAzLTA2LTEzICBEb3VnIEV2YW5zICA8ZGplQHNlYmFiZWFjaC5vcmc+CgoJUmVtb3ZlIHNvbWUgYnVpbGQgd2FybmluZ3MuCgkqIGNvbmZpZy9tMzJyL2luaXRmaW5pLmMgKF9fQ1RPUl9MSVNUX18sX19EVE9SX0xJU1RfXyk6IEF0dHJpYnV0ZSB1c2VkLgoJKF9fZG9fZ2xvYmFsX2N0b3JzLF9fZG9fZ2xvYmFsX2R0b3JzKTogRGl0dG8uCgoyMDAzLTA2LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTA1NTcKCSogcnRsYW5hbC5jIChzdWJyZWdfb2Zmc2V0X3JlcHJlc2VudGFibGVfcCk6IFJlbGF4IHN1YnJlZyBjaGVjay4KCjIwMDMtMDYtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTMyci9tMzJyLm1kOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDAzLTA2LTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoJICAgIENocmlzdGlhbiBFaHJoYXJkdCA8ZWhyaGFyZHRAbWF0aGVtYXRpay51bmktdWxtLmRlPgoKCVBSIHRhcmdldC8xMDE0MgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV9wYXJtcyk6IEFkZAoJbmV3ICdzdGFjaycgZmllbGQuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8xKTogU2V0ICdzdGFjaycgdG8gMSBpZiB3ZSBydW4gb3V0IG9mCglpbnRlZ2VyIHNsb3RzIGZvciBhbiBpbnRlZ2VyIGZpZWxkLgoJKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMyk6IFNoaWZ0IHZlY3RvciBpbmRleC4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzIpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlKTogSW5pdGlhbGl6ZSAnc3RhY2snIHRvIDAuCglTZXQgJ3N0YWNrJyB0byAxIGlmIHdlIHJ1biBvdXQgb2YgaW50ZWdlciBzbG90cyBmb3IgYW4gaW50ZWdlciBmaWVsZC4KCUdlbmVyYXRlIChwYXJhbGxlbCBbKGV4cHJfbGlzdCAobmlsKSAuLi4pIC4uLl0pIGlmICdzdGFjaycgaXMgc2V0IHRvIDEuCgoyMDAzLTA2LTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMDk1NQoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBGaXggb2ZmLWJ5LW9uZSBidWcuCgoyMDAzLTA2LTEyICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChmdW5jdGlvbl9hcmcpOiBSZW1vdmUgdHlwby4KCjIwMDMtMDYtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGxlZ2l0aW1hdGVfY29uc3RhbnRfcCk6IEhhbmRsZSBVTlNQRUNfTlRQT0ZGCglhbmQgVU5TUEVDX0RUUE9GRi4KCjIwMDMtMDYtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMDQ3NQoJKiBleHBtZWQuYyAoZW1pdF9zdG9yZV9mbGFnKTogVXNlIHNpbXBsaWZ5X2dlbl9zdWJyZWcgZGlyZWN0bHkKCWZvciBleHRyYWN0aW5nIHN1Yi13b3Jkcy4KCjIwMDMtMDYtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0Lzc1OTQKCSogY29uZmlnL202OGsvbTY4ay5tZCAoemVyb19leHRlbmRoaXNpMik6IFVzZSBnZW5fbG93cGFydF9TVUJSRUcuCgkoemVyb19leHRlbmRxaWhpMiwgemVyb19leHRlbmRxaXNpMik6IExpa2V3aXNlLgoKMjAwMy0wNi0xMiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZnVuY3Rpb25fYXJnKTogQWx3YXlzIHNwbGl0IHZlY3RvcnMgZm9yCgllNTAwIGlmIGl0J3MgYSBzdGRhcmcgZnVuY3Rpb24uCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBBZHZhbmNlIDIgcmVnaXN0ZXJzIGZvciB2ZWN0b3JzIGluIGEKCXN0ZGFyZyBmdW5jdGlvbi4KCShpbml0X2N1bXVsYXRpdmVfYXJncyk6IEluaXRpYWxpemUgc3RkYXJnLgoJKHJzNjAwMF9zcGVfZnVuY3Rpb25fYXJnKTogTmV3LgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAwX2FyZ3MpOiBBZGQgc3RkYXJnLgoKMjAwMy0wNi0xMiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTU9ERVNfVElFQUJMRV9QKTogQWRkIFNQRSB2ZWN0b3JzLgoKMjAwMy0wNi0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNjgKCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6ICBIYW5kbGUgYWRkaXRpb24KCWFuZCBtdWx0aXBsaWNhdGlvbiBvZiB6ZXJvIGV4dGVuc2lvbnMsIGZsb2F0aW5nIHBvaW50IGRpdmlzaW9uLAoJYW5kIGludGVnZXI8LT5mcCwgZnA8LT5mcCBhbmQgemVybyBleHRlbnNpb24gY29udmVyc2lvbnMuCglUaGUgYnVpbHQtaW4gY2VpbCBhbmQgZmxvb3IgZnVuY3Rpb25zIHByZXNlcnZlIHNpZ25lZG5lc3MuCgoyMDAzLTA2LTEyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogQ2hhbmdlTG9nOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIENoYW5nZUxvZy4yOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjZmdsb29wLmg6IExpa2V3aXNlLgoJKiBjZ3JhcGguYzogTGlrZXdpc2UuCgkqIGNvdmVyYWdlLmM6IExpa2V3aXNlLgoJKiBjcHBjaGFyc2V0LmM6IExpa2V3aXNlLgoJKiBjcHBoYXNoLmg6IExpa2V3aXNlLgoJKiBjcHBsZXguYzogTGlrZXdpc2UuCgkqIGNwcGxpYi5jOiBMaWtld2lzZS4KCSogZGJ4b3V0LmM6IExpa2V3aXNlLgoJKiBkZi5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYzogTGlrZXdpc2UuCgkqIGV4cGxvdy5jOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5jOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5oOiBMaWtld2lzZS4KCSogZ2Nvdi5jOiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUuYzogTGlrZXdpc2UuCgkqIGdnYy5oOiBMaWtld2lzZS4KCSogb3B0cy5jOiBMaWtld2lzZS4KCSogcmVhbC5jOiBMaWtld2lzZS4KCSogcmVsb2FkLmM6IExpa2V3aXNlLgoJKiBzdG10LmM6IExpa2V3aXNlLgoKMjAwMy0wNi0xMiAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChtMzJyLSotZWxmKTogQ2hhbmdlIGNvbXBhbnkgdG8gUmVuZXNhcy4KClRodSBKdW4gMTIgMjA6MDA6NTUgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBiYXNpYy1ibG9jay5oIChmbG93X2RlbGV0ZV9ibG9ja19ub2V4cHVuZ2UpOiBLaWxsLgoJKiBjZmdydGwuYyAoZmxvd19kZWxldGVfYmxvY2tfbm9leHB1bmdlKTogTWVyZ2UgdG8KCXJ0bF9kZWxldGVfYmxvY2suCgoyMDAzLTA2LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGlubGluZS1hc20vNDgyMwoJKiByZWctc3RhY2suYyAoYW55X21hbGZvcm1lZF9hc20pOiBOZXcuCgkoY2hlY2tfYXNtX3N0YWNrX29wZXJhbmRzKTogU2V0IGl0LgoJKGNvbnZlcnRfcmVnc18xKTogQ2hlY2sgaXQgYmVmb3JlIGFib3J0aW5nLgoKMjAwMy0wNi0xMiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQ6IENoYW5nZSBhbGwgY2xvYmJlcnMgb2YgdGhlIGFjY3VtdWxhdG9yIHRvIHNldHMuCgoyMDAzLTA2LTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtb3B0cy5jIChjb21wbGFpbl93cm9uZ19sYW5nKTogQWRkIG9uIGFyZ3VtZW50LgoJUHJpbnQgbm8tIHN3aXRjaCBpZiBvbiBpcyBmYWxzZS4KCShjX2NvbW1vbl9kZWNvZGVfb3B0aW9uKTogQWRqdXN0IGNhbGxlci4KCjIwMDMtMDYtMTIgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9lbWl0X3Byb2xvZ3VlKTogVXNlIExBIGluc3RlYWQgb2YgQVIKCXRvIGluaXRpYWxpemUgR09UIHJlZ2lzdGVyLgoKMjAwMy0wNi0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogQWRkIHN1cHBvcnQgZm9yCglmbG9hdGluZyBwb2ludCBjb25zdGFudHMsIGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbi4KCjIwMDMtMDYtMTIgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2gubWQgKGFkZGRpM19jb21wYWN0LCBzdWJkaTNfY29tcGFjdCk6IEFkZCBlYXJseWNsb2JiZXIKCWNvbnN0cmFpbnQgbW9kaWZpZXIgZm9yIG9wZXJhbmQgMC4KCjIwMDMtMDYtMTIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCURvbid0IHdhcm4gb24gZG9sbGFycyBpbiBidWlsdGluIG1hY3JvIGRlZmluaXRpb25zLAoJZS5nLiBfX1JFR0lTVEVSX1BSRUZJWF9fLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogTW92ZSBtZW1iZXIgd2Fybl9kb2xsYXJzLi4uCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiAuLi50byBoZXJlLiAgQ2hhbmdlIHR5cGUgdG8KCXVuc2lnbmVkIGNoYXIuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBTZXQgaXQgdG8gMSBoZXJlLgoJKHBvc3Rfb3B0aW9ucyk6IERvbid0IHNldCBpdCBoZXJlLgoJKiBjLW9wdHMuYyAoY19jb21tb25faW5pdF9vcHRpb25zKTogUmVzZXQgaXQgdG8gMCBoZXJlLgoJKGZpbmlzaF9vcHRpb25zKTogU2V0IGl0IGhlcmUuCgkqIGNwcGxleC5jIChmb3Jtc19pZGVudGlmaWVyX3ApOiBUd2VhayBmb3IgbmV3IGxvY2F0aW9uIG9mCgl3YXJuX2RvbGxhcnMuCgoJKiBjb25maWd1cmUuaW4gKGFzc2VtYmxlciBkd2FyZjIgZGVidWdfbGluZSBzdXBwb3J0KTogRGVmaW5lIGluc24KCWZvciBjcmlzLSotKiBhbmQgbW1peC0qLSouCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDYtMTEgIFV3ZSBTdGllYmVyICA8dXdlQGthb3MtZ3JvdXAuZGU+CgoJKiBjb25maWcuZ2NjIChhcm0qLSota2FvcyosIGlbMzQ1NjddODYtKi1rYW9zKiwgcG93ZXJwYy0qLWthb3MqLAoJcG93ZXJwY2xlLSota2FvcyosIHN0cm9uZ2FybS0qLWthb3MqKTogTmV3IHRhcmdldHMuCgkoc2gtKi1lbGYqKTogQWRkIHNoKi0qLWthb3MqIHN1cHBvcnQuCgkqIGNvbmZpZy9rYW9zLmgsIGNvbmZpZy9hcm0va2Fvcy1zdHJvbmdhcm0uaCwgY29uZmlnL2FybS9rYW9zLWFybS5oLAoJY29uZmlnL2kzODYva2Fvcy1pMzg2LmgsIGNvbmZpZy9yczYwMDAva2Fvcy1wcGMuaCwKCWNvbmZpZy9zaC9rYW9zLXNoLmg6IE5ldyBmaWxlcy4KCjIwMDMtMDYtMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnY3NlLmMgKGZpc19nZXRfY29uZGl0aW9uKTogTWFrZSBpdCBhIGdsb2JhbCBmdW5jdGlvbi4KCSogcmVsb2FkMS5jIChyZWxvYWRfY3NlX21vdmUyYWRkKTogRGV0ZWN0IGltcGxpY2l0IHNldHMuCgkqIHJ0bC5oOiBBZGQgYSBwcm90b3R5cGUgZm9yIGZpc19nZXRfY29uZGl0aW9uLgoKMjAwMy0wNi0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IERvbid0IHdhcm4gZm9yIG1lbW9yaWVzIHdpdGgKCXF1ZXVlZCBhZGRyZXNzZXMuCgoyMDAzLTA2LTExICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5oIChTVUJUQVJHRVRfQVNNX1JFTEFYX1NQRUMpOiBSZXdyaXRlIHdpdGhvdXQKCWJyYWNrZXRzLgoKMjAwMy0wNi0xMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogaG9va3MuYyAoaG9va19pbnRfc2l6ZV90X2NvbnN0Y2hhcnB0cl9pbnRfMCk6IE5ldy4KCSogaG9va3MuaCAoaG9va19pbnRfc2l6ZV90X2NvbnN0Y2hhcnB0cl9pbnRfMCk6IE5ldy4KCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfZGVjb2RlX29wdGlvbiwgTEFOR19IT09LU19ERUNPREVfT1BUSU9OKTogRGllLgoJKExBTkdfSE9PS1NfSEFORExFX09QVElPTiwgTEFOR19IT09LU19JTklUSUFMSVpFUik6IFVwZGF0ZS4KCSogbGFuZ2hvb2tzLmMgKGxoZF9kZWNvZGVfb3B0aW9uKTogUmVtb3ZlLgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3MpOiBSZW1vdmUgZGVjb2RlX29wdGlvbi4KCSogb3B0cy5jIChoYW5kbGVfb3B0aW9uKTogTm8gbG9uZ2VyIHVzZSBkZWNvZGVfb3B0aW9uLgoKMjAwMy0wNi0xMSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnbG9vcGFuYWwuYyAodmFyaWFibGVfaW5pdGlhbF92YWx1ZSk6IFVwZGF0ZSB0aGUgc2V0IG9mIGFsdGVyZWQKCXJlZ2lzdGVycyBjb3JyZWN0bHkuCgoyMDAzLTA2LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvZDMwdi9kMzB2Lmg6IERlbGV0ZSByZWZlcmVuY2UgdG8gQVNNX0ZJTkFMX1NQRUMuCgkqIGNvbmZpZy9pMzg2L25ldGJzZC1lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3ZheC9uZXRic2QtZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcveHRlbnNhL2VsZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS9saW51eC5oOiBMaWtld2lzZS4KCjIwMDMtMDYtMTEgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvaXJpczVnYXMuaCAoTURFQlVHX0FTTV9TUEVDKTogT3ZlcnJpZGUgdG8gbWF0Y2gKCURXQVJGIDIgZGVmYXVsdC4KCgkqIGNvbmZpZy9taXBzL2RieG1kZWJ1Zy5oOiBOZXcgZmlsZS4KCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqbzMyLCBtaXBzLXNnaS1pcml4NSopOiBVc2UgaXQgd2l0aAoJZ2FzIGFuZCAtLXdpdGgtc3RhYnMuCgoyMDAzLTA2LTExICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBleHByLmMgKGNhbl9tb3ZlX2J5X3BpZWNlcyk6IGFsaWduIGFyZ3VtZW50IG1heSBiZSB1bnVzZWQuCgoyMDAzLTA2LTExICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogSGFuZGxlIG1vdmVzIGJldHdlZW4gdHdvIENPTkNBVHMuCgoyMDAzLTA2LTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBBY2NlcHQgREltb2RlIGlmCgkhVEFSR0VUX0g4MzAwLgoKMjAwMy0wNi0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChmaW5hbF9wcmVzY2FuX2luc24pOiBEb24ndCBkdW1wIHJ0bC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKE1BU0tfUlRMX0RVTVApOiBSZW1vdmUuCgkoVEFSR0VUX1JUTF9EVU1QKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NXSVRIQ0VTKTogUmVtb3ZlIC1tcnRsLWR1bXAuCgoyMDAzLTA2LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogb3B0YWJzLmMgKGdlbl9jb25kX3RyYXApOiBGaXggcHJlcGFyZV9vcGVyYW5kIHR5cG8uCgoyMDAzLTA2LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoY2FsbF9ncCk6IEZpeCBtZW1vcnkgbW9kZS4KCjIwMDMtMDYtMTAgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHR1bGlwdHJlZS5vcmc+CgoJUFIgdGFyZ2V0Lzg4MTIKCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBGb3IgZXF1aXYgcmVnLCBhZGQgbG9vcCBvdmVyIGFsbAoJaGFyZCByZWdzIGZvciByZWxvYWRfcmVnX3VzZWRfYXRfYWxsIGFuZCByZWdfY2xhc3NfY29udGVudHMgY2hlY2tzLgoKMjAwMy0wNi0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChwcmludF9vcGVyYW5kKTogUmVtb3ZlIHN1cHBvcnQgZm9yCglvcGVyYW5kIGNoYXJhY3RlciAnYicuCglBZGQgdGhlIEFORCBjYXNlIHRvIG9wZXJhbmQgY2hhcmFjdGVyICdjJy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICh0d28gYW5vbnltb3VzIHBhdHRlcm5zKTogUmVwbGFjZQoJb3BlcmFuZCBjaGFyYWN0ZXIgJ2InIHdpdGggJ2MnLgoKMjAwMy0wNi0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChwcmludF9vcGVyYW5kKTogUmVtb3ZlIHN1cHBvcnQgZm9yCglvcGVyYW5kIGNoYXJhY3RlciAndScuCgoyMDAzLTA2LTEwICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogRml4IHR5cG8uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDYtMTAgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAodW5pY29zbWtfZmlsZV9lbmQpOiBBZGQgY29uZGl0aW9uYWwKCWNvbXBpbGF0aW9uIGd1YXJkLgoKMjAwMy0wNi0xMCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC1wcm90b3MuaCAoZnVuY3Rpb25fc3ltYm9sKTogRGVjbGFyZS4KCSogc2guYyAoZXhwYW5kX2Jsb2NrX21vdmUsIGV4cGFuZF9hc2hpZnRydCk6IFVzZSBpdC4KCShzaF9leHBhbmRfcHJvbG9ndWUsIHNoX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKHNoX2luaXRpYWxpemVfdHJhbXBvbGluZSk6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCSogc2gubWQgKHVkaXZzaTMsIGRpdnNpMywgbXVsc2kzLCBpY19pbnZhbGlkYXRlX2xpbmUpOiBVc2UgaXQuCgkoaW5pdGlhbGl6ZV90cmFtcG9saW5lLCBjYWxsLCBjYWxsX3BvcCwgY2FsbF92YWx1ZSwgc2liY2FsbCk6IExpa2V3aXNlLgoJKGNhbGxfdmFsdWVfcG9wLCBzaGNvbXBhY3RfcmV0dXJuX3RyYW1wKTogTGlrZXdpc2UuCgoJKiBzaC5oIChPVkVSUklERV9PUFRJT05TKTogRG9uJ3Qgc3VwcHJlc3MgLS1wcm9maWxlLWFyYy1mbGFnLgoKCSogc2gubWQgKEdPVGFkZHIycGljcmVnKTogVXNlIGdlbl9sb3dwYXJ0IHRvIGdldCBsb3dwYXJ0IG9mCgl0YXJnZXQgcmVnaXN0ZXIuCgoyMDAzLTA2LTEwICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGRvYy9tZC50ZXhpIChNYWNoaW5lIENvbnN0cmFpbnRzKTogRG9jdW1lbnQgc3Rvcm15J3MgWgoJY29uc3RyYWludC4KCjIwMDMtMDYtMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZXhjZXB0LmMgKGNhbGxfc2l0ZV9iYXNlKTogTWFyayB3aXRoIEdUWS4KCjIwMDMtMDYtMTAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLXByb3RvLmg6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoJKiBhcm0uYzogTGlrZXdpc2UuCgoyMDAzLTA2LTEwICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmMgKHNoX291dHB1dF9taV90aHVuayk6IENhbGwgaW5zbl9sb2NhdG9yc19pbml0aWFsaXplLgoKMjAwMy0wNi0xMCAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IENvbnZlcnQgc3RydWN0dXJlX3ZhbHVlX2FkZHIgdG8gUG1vZGUgaWYKCW5lY2Vzc2FyeS4KCjIwMDMtMDYtMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0RFQ0xfT0tfRk9SX1NJQkNBTEwpOiBOZXcuCgkoTEFOR19IT09LU19ERUNMUyk6IEFkZCBMQU5HX0hPT0tTX0RFQ0xfT0tfRk9SX1NJQkNBTEwuCgkobGhkX2RlY2xfb2tfZm9yX3NpYmNhbGwpOiBOZXcuCgkqIGxhbmdob29rcy5jIChsaGRfZGVjbF9va19mb3Jfc2liY2FsbCk6IE5ldy4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3NfZm9yX2RlY2xzLm9rX2Zvcl9zaWJjYWxsKTogTmV3IGZpZWxkLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IENoZWNrIGxhbmdfaG9vayBiZWZvcmUgZ2VuZXJhdGluZyBhCglzaWJjYWxsLgoKMjAwMy0wNi0xMCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2V4dHJhX2NvbnN0cmFpbnRfcCk6IEFkZCBaLAoJd2hpY2ggbWF0Y2hlcyAoY29uc3RfaW50IDApIGZvciBhZGRoaTMuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5tZDogRG9jdW1lbnQga25vd24gY29uc3RyYWludHMuCgkoYWRkaGkzKTogSGFuZGxlIGFkZGluZyB6ZXJvLgoKMjAwMy0wNi0xMCAgS2F6dWhpcm8gSW5hb2thIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmggKEhBUkRfUkVHTk9fUkVOQU1FX09LKTogTmV3LgoJKiBjb25maWcvbTMyci9tMzJyLmMgKG0zMnJfaGFyZF9yZWdub19yZW5hbWVfb2spOiBOZXcuCgkqIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmg6IFByb3RvdHlwZSBpdC4KCjIwMDMtMDYtMTAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9lYWJpLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUgYnVpbHRpbnMKCWNvbW1vbiB0byByczYwMDAgc3lzdiB0YXJnZXRzLgoJKiBjb25maWcvcnM2MDAwL2VhYmlzaW0uaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERpdHRvLgoJKiBjb25maWcvcnM2MDAwL3J0ZW1zLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEaXR0by4KCjIwMDMtMDYtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgYXJtLXdpbmNlLXBlIHRhcmdldC4KCSogY29uZmlnL2FybS9wZS5oIChNVUxUSUxJQl9ERUZBVUxUUyk6IERlZmluZS4KCUFkZCBjb21tZW50IGFib3V0IGRlZmF1bHQgYXBjczI2IHN1cHBvcnQuCgkqIGNvbmZpZy9hcm0vdC1wZSAoTVVMVElMSUJfT1BUSU9OUyk6IEFkZCBhbiAtbWFwY3MtMzIKCW11bHRpbGliLgoJKE1VTFRJTElCX0RJUk5BTUVTKTogQWRkICdhcGNzMzInLgoJKiBjb25maWcvYXJtL3Qtd2luY2UtcGU6IE5ldyBtYWtlZmlsZSBmcmFnbWVudC4KCSogY29uZmlnL2FybS93aW5jZS1wZS5oOiBOZXcgZmlsZS4gIE92ZXJyaWRlcyBhIGZldyBkZWZpbml0aW9ucwoJaW4gYXJtL3BlLmgKCjIwMDMtMDYtMTAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluKTogT3B0aW1pemUgY29zKC14KSBhcyBjb3MoeCkuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCA8TkVHQVRFX0VYUFI+KTogQ29udmVydCAtZih4KSBpbnRvIGYoLXgpCgl3aGVuIHggaXMgZWFzaWx5IG5lZ2F0ZWQgYW5kIGYgaXMgc2luLCB0YW4gb3IgYXRhbi4KCShmb2xkIDxNVUxUX0VYUFI+KTogT3B0aW1pemUgdGFuKHgpKmNvcyh4KSBhbmQgY29zKHgpKnRhbih4KSBhcwoJc2luKHgpIHdpdGggZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zLgoJKGZvbGQgPFJESVZfRVhQUj4pOiBXaXRoIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBmb2xkCglzaW4oeCkvY29zKHgpIGFzIHRhbih4KSBhbmQgY29zKHgpL3Npbih4KSBhcyAxLjAvdGFuKHgpLgoKMjAwMy0wNi0xMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQgPEVRX0VYUFI+KTogIERvbid0IGZvbGQgeCA9PSB4IG9ubHkgaWYgeAoJaXMgYSBmbG9hdGluZyBwb2ludCB0eXBlICphbmQqIHdlIGN1cnJlbnRseSBob25vciBOYU5zLgoJKGZvbGQgPE5FX0VYUFI+KTogTGlrZXdpc2UuCgoyMDAzLTA2LTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMTEzMQoJKiB0cmVlLWlubGluZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IENhbGwgdGhlIGxhbmd1YWdlLXNwZWNpZmljCglob29rIGVhcmx5LgoKMjAwMy0wNi0wOSAgRGF2aWQgVGF5bG9yICA8ZHRheWxvckBlbWMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3ZhX3N0YXJ0LCByczYwMDBfdmFfYXJnKTogIFNraXAgb3ZlcgoJdGhlIGZfcmVzIGZpZWxkLgoKMjAwMy0wNi0wOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSByZWZlcmVuY2VzIHRvIGhvc3RfdHJ1bmNhdGVfdGFyZ2V0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSByZWZlcmVuY2VzIHRvIHRydW5jYXRlX3RhcmdldCwKCWhvc3RfdHJ1bmNhdGVfdGFyZ2V0LgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZS5pbiwgY29uZmlnL202OGhjMTEvdC1tNjhoYzExLWdhczoKCVJlcGxhY2UgImJ1aWxkX2Nhbm9uaWNhbCIgd2l0aCBidWlsZCwgImhvc3RfY2Fub25pY2FsIiB3aXRoIGhvc3QuCgkqIGNvbmZpZ3VyZS5pbjogVXNlIEdDQ19UT1BMRVZfU1VCRElSUy4KCSogYWNsb2NhbC5tNDogSW5jbHVkZSAuLi9jb25maWcvYWN4Lm00LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA2LTA5ICBEYXZpZCBUYXlsb3IgIDxkdGF5bG9yQGVtYy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYnVpbGRfdmFfbGlzdCk6IEdpdmUgdGhlIHR3bwoJYnl0ZXMgb2YgcGFkZGluZyBpbiB0aGUgX192YV9saXN0X3RhZyBzdHJ1Y3R1cmUgYSBuYW1lIChyZXNlcnZlZCkuCgoyMDAzLTA2LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAob3BlcmFuZF9lcXVhbF9wKTogSGFuZGxlIEFERFJfRVhQUiBhbmQgVFJVVEhfTk9UX0VYUFIuCgoyMDAzLTA2LTA5ICBPc2t1IFNhbGVybWEgIDxvc2t1QGlraS5maT4KCgkqIGMtZm9ybWF0LmMgKGNoZWNrX2Zvcm1hdF9zdHJpbmcsIGdldF9jb25zdGFudCk6IE5ldy4KCShoYW5kbGVfZm9ybWF0X2F0dHJpYnV0ZSwgaGFuZGxlX2Zvcm1hdF9hcmdfYXR0cmlidXRlLAoJZGVjb2RlX2Zvcm1hdF9hdHRyKTogQ2hhbmdlIHRvIHVzZSBhYm92ZSBmdW5jdGlvbnMuCgoyMDAzLTA2LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogUmUtd29yZCB3YXJuaW5nLgoKMjAwMy0wNi0wOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0Lzg3ODcKCSogY29uZmlnL2kzODYvZGpncHAuaCAoQVNNX0ZJTEVfU1RBUlQpOiBlbWl0IGAuaW50ZWxfc3ludGF4JwoJaWYgLW1hc209aW50ZWwuCgoyMDAzLTA2LTA5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkB0dWxpcHRyZWUub3JnPgoKCSogY29uZmlnL2Zydi9jbW92Yy5jLCBjb25maWcvZnJ2L2Ntb3ZoLmMsIGNvbmZpZy9mcnYvY21vdncuYywKCWNvbmZpZy9mcnYvZnJ2YmVnaW4uYywgY29uZmlnL2Zydi9mcnZlbmQuYywgY29uZmlnL2Zydi9saWIxZnVuY3MuYXNtOgoJQWRkIGxpYmdjYyBleGNlcHRpb24uCgoyMDAzLTA2LTA5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgkgICAgQXlhbCBaYWtzICA8Z2NjaGFpZmFAdXMuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChkZWZpbmVfYXR0ciAidHlwZSIpOiBBZGQgaW5zZXJ0X3dvcmQuCgkoaW5zdnNpKik6IEFkZCBpbnNlcnRfd29yZCBhdHRyaWJ1dGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92YXJpYWJsZV9pc3N1ZSk6IEFkZCBUWVBFX0lOU0VSVF9XT1JELgoJKiBjb25maWcvcnM2MDAwL3s0MHgubWQsNjAzLm1kLDZ4eC5tZCw3NDUwLm1kLDd4eC5tZCxtcGMubWQsCglwb3dlcjQubWQscmlvczEubWQscmlvczIubWQscnM2NC5tZH06IEFkZCBpbnNlcnRfd29yZC4KCjIwMDMtMDYtMDkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDAzLTA2LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogREVDTF9TT1VSQ0VfTElORV9GSVJTVCBpcwoJcmVtb3ZlZC4KCjIwMDMtMDYtMDkgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guYyAoZ2VuX2Jsb2NrX3JlZGlyZWN0KTogVXNlIGxvY2F0b3JzLgoKMjAwMy0wNi0wOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uaCAoVEhVTUJfUFJJTlRfT1BFUkFORF9BRERSRVNTKTogVXNlICV3ZCBpbiBmb3JtYXQgYW5kIHJlbW92ZQoJY2FzdCB0byBpbnQuCgoyMDAzLTA2LTA5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IEFzc3VtZSBnYXMgMi4xNCBhbmQgYWJvdmUgY2FuIGhhbmRsZSBNSVBTIHJlbG9jYXRpb24KCW9wZXJhdG9ycy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDYtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCSAgICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoR0xPQkFMX1BPSU5URVJfUkVHTlVNKTogTmV3IG1hY3JvLgoJKFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNKTogTG9vayBhdCBwaWNfb2Zmc2V0X3RhYmxlX3J0eCBhZnRlciByZWxvYWQuCgkoU1RBUlRJTkdfRlJBTUVfT0ZGU0VUKTogRG9uJ3QgYWxsb2NhdGUgYSBjcHJlc3RvcmUgc2xvdCBmb3IKCW4zMi82NCBQSUMuCgkoTVVTVF9TQVZFX1JFR0lTVEVSUyk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2ZyYW1lX2luZm8pOiBSZW1vdmUgZXh0cmFfc2l6ZSBmaWVsZC4KCShtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIGdsb2JhbF9wb2ludGVyIGZpZWxkLgoJKG1pcHNfY2xhc3NpZnlfY29uc3RhbnQpOiBDaGVjayBmb3IgKGNvbnN0ICRncCkgdXNpbmcgcG9pbnRlciBlcXVhbGl0eQoJd2l0aCBwaWNfb2Zmc2V0X3RhYmxlX3J0eC4KCShtaXBzX2NsYXNzaWZ5X2NvbnN0YW50KTogSGFuZGxlIFJFTE9DX0xPQURHUF9ISSBhbmQgUkVMT0NfTE9BREdQX0xPLgoJKG1pcHNfcmVzdG9yZV9ncCk6IFVzZSBjdXJyZW50X2Z1bmN0aW9uX291dGdvaW5nX2FyZ3Nfc2l6ZS4KCShwcmludF9vcGVyYW5kKTogVXNlIFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNIGluc3RlYWQgb2YKCUdQX1JFR19GSVJTVCArIDI4LiAgSGFuZGxlIHJlbG9jYXRpb24gc3RyaW5ncyB0aGF0IGhhdmUKCW1vcmUgdGhhbiBvbmUgJygnLgoJKG1pcHNfcmVsb2Nfc3RyaW5nKTogSGFuZGxlIFJFTE9DX0xPQURHUF9ISSBhbmQgUkVMT0NfTE9BREdQX0xPLgoJKG1pcHNfZ2xvYmFsX3BvaW50ZXIpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19zYXZlX3JlZ19wKTogTmV3IGZ1bmN0aW9uLCBtb3N0bHkgc3BsaXQgb3V0IGZyb20uLi4KCShjb21wdXRlX2ZyYW1lX3NpemUpOiAuLi5oZXJlLiAgUmVtb3ZlIGhhbmRsaW5nIG9mIGV4dHJhX3NpemUuCglSZWNsYWltIGFyZ3Nfc2l6ZSBpZiBubyB2YXJpYWJsZXMgZGVwZW5kIG9uIGl0LiAgRG9uJ3QgdHJlYXQgZ3AKCWFzIGEgc3BlY2lhbCBjYXNlOiBoYW5kbGUgaXQgaW4gdGhlIG1haW4gR1BSIGxvb3AuCgkobWlwc19pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IEZpeCBjb21tZW50LgoJKHNhdmVfcmVzdG9yZV9pbnNucyk6IFNhdmUgZXZlcnkgcmVnaXN0ZXIgaW4gdGhlIEdQUiBtYXNrLAoJcmVtb3ZpbmcgZGlzdGluY3Rpb24gYmV0d2VlbiBtYXNrIGFuZCByZWFsX21hc2suCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBVcGRhdGUgLmZyYW1lIHBzdWVkby1vcCBhZnRlcgoJdGhlIHJlbW92YWwgb2YgZXh0cmFfc2l6ZS4gIE1vdmUgdGhlIFNWUjQgUElDIHN0YWNrIGFsbG9jYXRpb24KCWFuZCBjcHJlc3RvcmUgaW5zdHJ1Y3Rpb25zIHRvIG1pcHNfZXhwYW5kX3Byb2xvZ3VlLgoJKG1pcHNfZ3BfaW5zbik6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IFNldCBSRUdOTyAocGljX29mZnNldF90YWJsZV9ydHgpIHRvCgl0aGUgY2hvc2VuIGdsb2JhbCBwb2ludGVyLiAgSGFuZGxlIFNWUjQgUElDIHN0YWNrIGFsbG9jYXRpb24KCWluIHRoZSBzYW1lIHdheSBhcyBvdGhlciBBQklzLiAgQWRqdXN0IHZhcmFyZ3MgY29kZSBhY2NvcmRpbmdseS4KCUVtaXQgYSBjcHJlc3RvcmUgaW5zbiBhZnRlciBhbGxvY2F0aW5nIHRoZSBzdGFjay4gIFVzZSBtaXBzX2dwX2luc24KCXRvIGVtaXQgdGhlIGxvYWRncCBzZXF1ZW5jZS4gIEZvbGxvdyBpdCB3aXRoIGEgbG9hZGdwX2Jsb2NrYWdlCglpZiBub3QgdXNpbmcgZXhwbGljaXQgcmVsb2NzLgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogUmVpbnN0YXRlIHRoZSBkZWZhdWx0IGdwIHJlZ2lzdGVyLgoJKG1pcHMxNl9ncF9wc2V1ZG9fcmVnKTogVXNlIHBpY19vZmZzZXRfdGFibGVfcnR4LgoJKG1pcHMxNl9vcHRpbWl6ZV9ncCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChVTlNQRUNfTE9BREdQKTogUmVtb3ZlLgoJKFVOU1BFQ19TRVRKTVAsIFVOU1BFQ19MT05HSk1QKTogUmVtb3ZlLgoJKFVOU1BFQ19DUFJFU1RPUkUsIFJFTE9DX0xPQURHUF9ISSwgUkVMT0NfTE9BREdQX0xPKTogTmV3LgoJKGxvYWRncCk6IFJlbW92ZS4KCShsb2FkZ3BfYmxvY2thZ2UsIGNwcmVzdG9yZSk6IE5ldyBpbnN0cnVjdGlvbnMuCgkoYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBJbXBsZW1lbnQgdXNpbmcgZW1pdF9tb3ZlX2luc24uICBVc2UKCXBpY19vZmZzZXRfdGFibGVfcnR4LgoJKGJ1aWx0aW5fc2V0am1wX3NldHVwXzMyLCBidWlsdGluX3NldGptcF9zZXR1cF82NCk6IFJlbW92ZS4KCShidWlsdGluX2xvbmdqbXApOiBVc2UgZ2VuX3Jhd19SRUcgdG8gZm9yY2UgdXNlIG9mICQyOC4KCjIwMDMtMDYtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfb3V0cHV0X2RpdmlzaW9uKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX0NIRUNLX1JBTkdFX0RJVik6IFJlbW92ZS4KCShNQVNLX0JSQU5DSExJS0VMWSk6IFVzZSBNQVNLX0NIRUNLX1JBTkdFX0RJVidzIG9sZCBudW1iZXIuCgkoVEFSR0VUX05PX0NIRUNLX1pFUk9fRElWLCBUQVJHRVRfQ0hFQ0tfUkFOR0VfRElWKTogUmVtb3ZlLgoJKFRBUkdFVF9DSEVDS19aRVJPX0RJVik6IE5ldyBtYWNyby4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW1vdmUgLW1jaGVjay1yYW5nZS1kaXYgJiAtbW5vLWNoZWNrLXJhbmdlLWRpdi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9kaXZpc2lvbik6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAobGVuZ3RoKTogVGFrZSBUQVJHRVRfQ0hFQ0tfWkVST19ESVYgaW50bwoJYWNjb3VudCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGRpdmlzaW9uLgoJKGRpdm1vZHNpNCwgZGl2bW9kZGk0LCB1ZGl2bW9kc2k0LCB1ZGl2bW9kZGk0KTogVHVybiBpbnRvIGRlZmluZV9pbnNucy4KCUVuYWJsZSByZWdhcmRsZXNzIG9mIG9wdGltaXphdGlvbiBsZXZlbC4gIFVzZSBtaXBzX291dHB1dF9kaXZpc2lvbi4KCShkaXZtb2RzaTRfaW50ZXJuYWwsIGRpdm1vZGRpNF9pbnRlcm5hbCwgdWRpdm1vZHNpNF9pbnRlcm5hbCwKCXVkaXZtb2RkaTRfaW50ZXJuYWwsIGRpdl90cmFwLCBkaXZfdHJhcF9ub3JtYWwsIGRpdl90cmFwX21pcHMxNiwKCWRpdnNpMywgZGl2c2kzX2ludGVybmFsLCBkaXZkaTMsIGRpdmRpM19pbnRlcm5hbCwgbW9kc2kzLAoJbW9kc2kzX2ludGVybmFsLCBtb2RkaTMsIG1vZGRpM19pbnRlcm5hbCwgdWRpdnNpMywgdWRpdnNpM19pbnRlcm5hbCwKCXVkaXZkaTMsIHVkaXZkaTNfaW50ZXJuYWwsIHVtb2RzaTMsIHVtb2RzaTNfaW50ZXJuYWwsIHVtb2RkaTMsCgl1bW9kZGkzX2ludGVybmFsKTogUmVtb3ZlLgoKMjAwMy0wNi0wOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3JlZ19uYW1lcyk6IENoYW5nZSBoaWxvIGVudHJ5IHRvICIiLgoJKG1pcHNfc3dfcmVnX25hbWVzKTogTGlrZXdpc2UuCgkobWlwc19yZWdub190b19jbGFzcyk6IENoYW5nZSBoaWxvIGVudHJ5IHRvIE5PX1JFR1MuCgkoaGlsb19vcGVyYW5kKTogVXNlIE1EX1JFR19QLgoJKGV4dGVuZF9vcGVyYXRvcik6IE5ldyBwcmVkaWNhdGUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFJlbW92ZSAnYScgY29uc3RyYWludC4KCShtaXBzX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBSZW1vdmUgaGlsbyBoYW5kbGluZy4gIEFsc28gcmVtb3ZlCgloYW5kbGluZyBvZiAocGx1cyBzcCByZWcpIHJlbG9hZHMgZm9yIG1pcHMxNi4KCShtaXBzX3JlZ2lzdGVyX21vdmVfY29zdCk6IFJlbW92ZSBoaWxvIGhhbmRsaW5nLgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZJWEVEX1JFR0lTVEVSUyk6IE1ha2UgaGlsbyBlbnRyeSBmaXhlZC4KCShNRF9SRUdfTEFTVCk6IFJlbW92ZSBoaWxvIGZyb20gcmFuZ2UuCgkoSElMT19SRUdOVU0pOiBEZWxldGUuCgkocmVnX2NsYXNzKTogUmVtb3ZlIEhJTE9fUkVHIGFuZCBISUxPX0FORF9HUl9SRUdTLgoJKFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBlbnRyeSBmb3IgZXh0ZW5kX29wZXJhdG9yLgoJKERFQlVHX1JFR0lTVEVSX05BTUVTKTogQ2hhbmdlIGhpbG8gZW50cnkgdG8gIiIuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFJlbW92ZSBoaWxvIGNsb2JiZXJzIHdoZXJldmVyIHRoZXkgb2NjdXIuCglSZW1vdmUgY29uc3RyYWludHMgZnJvbSBtdWx0aXBsaWNhdGlvbiBkZWZpbmVfZXhwYW5kcy4gIFJlbW92ZQoJY2xvYmJlcnMgZnJvbSAiZGVjb3JhdGl2ZSIgZGVmaW5lX2V4cGFuZCBwYXR0ZXJucy4KCShVTlNQRUNfSElMT19ERUxBWSk6IERlbGV0ZS4KCSgqbXVsX2FjY19zaSwgKm11bF9zdWJfc2kpOiBBZGQgZWFybHktY2xvYmJlciB0byBvcGVyYW5kIDYuCgkobXVsc2lkaTMsIHVtdWxzaWRpMyk6IENoYW5nZSBwYXR0ZXJuIHRvIG1hdGNoIHRoZSBUQVJHRVRfNjRCSVQgY2FzZS4KCUFkanVzdCBDIGNvZGUgdG8ganVzdCBlbWl0IGluc25zIGZvciAhVEFSR0VUXzY0QklULgoJKG11bHNpZGkzX2ludGVybmFsKTogUmVuYW1lIHRvIG11bHNpZGkzXzMyYml0LgoJKG11bHNpZGkzXzY0Yml0KTogVXNlIGEgImQiIGNvbnN0cmFpbnQgZm9yIHRoZSBkZXN0aW5hdGlvbi4KCVVzZSBleHRlbmRfb3BlcmF0b3Igc28gdGhhdCB0aGUgcGF0dGVybiBjYW4gaGFuZGxlIHVtdWxzaWRpMyBhcyB3ZWxsLgoJU3BsaXQgdGhlIGluc3RydWN0aW9uIGFmdGVyIHJlbG9hZC4KCSgqbXVsc2lkaTNfNjRiaXRfcGFydHMpOiBOZXcgcGF0dGVybiwgZ2VuZXJhdGVkIGJ5IG11bHNpZGkzXzY0Yml0LgoJKHVtdWxzaWRpM19pbnRlcm5hbCk6IFJlbmFtZSB0byB1bXVsc2lkaTNfMzJiaXQuCgkodW11bHNpZGkzXzY0Yml0KTogUmVtb3ZlLgoJKCpzbXNhY19kaSwgKnVtc2FjX2RpKTogTGluZS13cmFwIGZpeGVzLgoJKHVkaXZzaTNfaW50ZXJuYWwpOiBEb24ndCBhbGxvdyBvcGVyYW5kIDIgdG8gYmUgY29uc3RhbnQuCgkodWRpdmRpM19pbnRlcm5hbCwgdW1vZHNpM19pbnRlcm5hbCwgdW1vZGRpM19pbnRlcm5hbCk6IExpa2V3aXNlLgoJKG1vdmRpX2ludGVybmFsMiwgbW92c2lfaW50ZXJuYWwpOiBSZW1vdmUgaGlsbyBhbHRlcm5hdGl2ZXMuCgkocmVsb2FkX2luW3NkXWksIHJlbG9hZF9vdXRbc2RdaSwgaGlsb19kZWxheSk6IFJlbW92ZS4KCjIwMDMtMDYtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTA5MTMKCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfRklMRV9TV0lUQ0hJTkcsIE5PX0RCWF9GVU5DVElPTl9FTkQsCglQVVRfU0RCX1NDTCwgUFVUX1NEQl9JTlRfVkFMLCBQVVRfU0RCX1ZBTCwgUFVUX1NEQl9FTkRFRiwKCVBVVF9TREJfVFlQRSwgUFVUX1NEQl9TSVpFLCBQVVRfU0RCX0RJTSwgUFVUX1NEQl9TVEFSVF9ESU0sCglQVVRfU0RCX05FWFRfRElNLCBQVVRfU0RCX0xBU1RfRElNLCBQVVRfU0RCX1RBRywgUFVUX1NEQl9TUkNfRklMRSwKCVNEQl9HRU5FUkFURV9GQUtFLCBURVhUX1NFQ1RJT04pOiBEZWxldGUuCgkoUFVUX1NEQl9ERUYsIFBVVF9TREJfUExBSU5fREVGLCBQVVRfU0RCX0JMT0NLX1NUQVJULAoJUFVUX1NEQl9CTE9DS19FTkQsIFBVVF9TREJfRlVOQ1RJT05fRU5EKTogUmVwbGFjZSB1c2Ugb2YKCWFzbV9vdXRfdGV4dF9maWxlIHdpdGggYXNtX291dF9maWxlLgoJKiBjb25maWcvbWlwcy9pcmlzNWdhcy5oIChQVVRfU0RCX1NJWkUsIFBVVF9TREJfVFlQRSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9lbGYuaCAoVEVYVF9TRUNUSU9OKTogVW5kZWZpbmUuCgkqIGNvbmZpZy9taXBzL2VsZjY0LmggKFRFWFRfU0VDSU9OKTogVW5kZWZpbmUuCgkqIGNvbmZpZy9taXBzL29wZW5ic2QuaCAoVEVYVF9TRUNJT04pOiBVbmRlZmluZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChhc21fb3V0X3RleHRfZmlsZSwgYXNtX291dF9kYXRhX2ZpbGUpOiBEZWxldGUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FibGUgc21hbGwtZGF0YSBvcHRpbWl6YXRpb25zIHVubGVzcyB1c2luZwoJZ2FzIG9yIGV4cGxpY2l0IHJlbG9jYXRpb25zLgoJKG1pcHNfYXNtX2ZpbGVfc3RhcnQsIG1pcHNfYXNtX2ZpbGVfZW5kLCBtaXBzX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSwKCWlyaXM2X2FzbV9uYW1lZF9zZWN0aW9uLCBpcmlzNl9hc21fZmlsZV9zdGFydCk6IFJlbW92ZSBjb2RlIGZvcgoJaGFuZGxpbmcgVEFSR0VUX0ZJTEVfU1dJVENISU5HLgoJKGNvcHlfZmlsZV9kYXRhKTogTW92ZSBpbnRvIFRBUkdFVF9JUklYNiBibG9jay4KCjIwMDMtMDYtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHByLmggKEVYUEFORF9NRU1PUlkpOiBOZXcuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBDaGVjayBpdC4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogUHJvdmlkZSBpdCB3aGVuIHRoZSBjb25zdHJhaW50CglyZXF1aXJlcyBhIG1lbW9yeS4gIFdhcm4gZm9yIG1lbW9yeSBpbnB1dCBjb25zdHJhaW50cyB3aXRob3V0CglhIG1lbW9yeSBvcGVyYW5kLgoKMjAwMy0wNi0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdmFyYXNtLmM6IERvbid0IGluY2x1ZGUgYy10cmVlLmguCgoyMDAzLTA2LTA4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBwcmVkaWN0Lmg6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoJKiBwcmVkaWN0LmM6IExpa2V3aXNlLgoJKiB0cmVlLWR1bXAuaDogTGlrZXdpc2UuCgkqIHRyZWUtZHVtcC5jOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5oOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5jOiBMaWtld2lzZS4KCSogY29tYmluZS5jOiBMaWtld2lzZS4KCgkqIHJ0bC5oOiBDb252ZXJ0IHByb3RvdHlwZXMgb2YgY29tYmluZS5jIHRvIElTTyBDOTAuCgpTdW4gSnVuICA4IDIxOjI3OjQxIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZnbGF5b3V0LmMgKGluc25fc2NvcGUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uCgkoYmxvY2tfbG9jYXRvcnNfKiwgbGluZV9sb2NhdG9ycyosIGZpbGVfbG9jYXRvcnMqKTogTmV3IHN0YXRpYyB2YXJyYXlzLgoJKHNjb3BlX3RvX2luc25zX2luaXRpYWxpemUpOiBVc2UgdGhlbS4KCShpbnNuX2xpbmUsIGluc25fZmlsZSk6IE5ldyBmdW5jdGlvbnMuCgkoc2NvcGVfdG9faW5zbnNfZmluYWxpemUpOiBVc2UgaW5zbl9zY29wZS4KCShwcm9sb2d1ZV9sb2NhdG9yLCBlcGlsb2d1ZV9sb2NhdG9yKTogTmV3IGdsb2JhbCB2YXJpYWJsZXMuCgkqIGVtaXQtcnQuYyAodHJ5X3NwbGl0LCBtYWtlX2luc25fcmF3LCBtYWtlX2p1bXBfaW5zbl9yYXcsCgltYWtlX2NhbGxfaW5zbl9yYXcsIGVtaXRfY29weV9vZl9pbnNuX2FmdGVyKTogVXNlIGxvY2F0b3JzLgoJKGVtaXRfaW5zbl9hZnRlcl9zY29wZSwgZW1pdF9pbnNuX2JlZm9yZV9zY29wZQoJZW1pdF9qdW1wX2luc25fYWZ0ZXJfc2NvcGUsIGVtaXRfanVtcF9pbnNuX2JlZm9yZV9zY29wZQoJZW1pdF9jYWxsX2luc25fYWZ0ZXJfc2NvcGUsIGVtaXRfY2FsbF9pbnNuX2JlZm9yZV9zY29wZSk6IFJlbmFtZSB0by4uLgoJKGVtaXRfaW5zbl9hZnRlcl9zZXRsb2MsIGVtaXRfaW5zbl9iZWZvcmVfc2V0bG9jCgllbWl0X2p1bXBfaW5zbl9hZnRlcl9zZXRsb2MsIGVtaXRfanVtcF9pbnNuX2JlZm9yZV9zZXRsb2MKCWVtaXRfY2FsbF9pbnNuX2FmdGVyX3NldGxvYywgZW1pdF9jYWxsX2luc25fYmVmb3JlX3NldGxvYyk6IC4uLiB0aGVzZTsKCXVzZSBsb2NhdG9ycy4KCSogZmluYWwuYyAobm90aWNlX3NvdXJjZV9saW5lKTogVXNlIGxvY2F0b3JzLgoJKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogU2V0IGluaXRpYWwgc291cmNlIGZpbGUgYW5kIGxpbmUuCgkoZmluYWxfc2Nhbl9pbnNuKTogVXNlIGxvY2F0b3JzLgoJKiBpZmN2dC5jIChub2NlX3RyeV9zdG9yZV9mbGFnLCBub2NlX3RyeV9zdG9yZV9mbGFnX2NvbnN0YW50cywKCW5vY2VfdHJ5X2FkZGNjLCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2ssIG5vY2VfdHJ5X2Ntb3ZlLAoJbm9jZV90cnlfY21vdmVfYXJpdGgsIG5vY2VfdHJ5X21pbm1heCwgbm9jZV90cnlfYWJzLAoJbm9jZV9wcm9jZXNzX2lmX2Jsb2NrLCBmaW5kX2NvbmRfdHJhcCk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9pbnNuX2xpc3QpOiBMaWtld2lzZS4KCSoganVtcC5jIChkdXBsaWNhdGVfbG9vcF9leGl0X3Rlc3QpOiBMSWtld2lzZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IFByaW50IGxvY2F0b3JzLgoJKiByZWNvZy5jIChwZWVwaG9sZTJfb3B0aW1pemUpOiBMaWtld2lzZS4KCSogcnRsLmggKElOU05fU0NPUEUpOiBSZW1vdmUuCgkoZW1pdF9pbnNuX2FmdGVyX3Njb3BlLCBlbWl0X2luc25fYmVmb3JlX3Njb3BlCgllbWl0X2p1bXBfaW5zbl9hZnRlcl9zY29wZSwgZW1pdF9qdW1wX2luc25fYmVmb3JlX3Njb3BlCgllbWl0X2NhbGxfaW5zbl9hZnRlcl9zY29wZSwgZW1pdF9jYWxsX2luc25fYmVmb3JlX3Njb3BlKTogUmVuYW1lIHRvLi4uCgkoZW1pdF9pbnNuX2FmdGVyX3NldGxvYywgZW1pdF9pbnNuX2JlZm9yZV9zZXRsb2MKCWVtaXRfanVtcF9pbnNuX2FmdGVyX3NldGxvYywgZW1pdF9qdW1wX2luc25fYmVmb3JlX3NldGxvYwoJZW1pdF9jYWxsX2luc25fYWZ0ZXJfc2V0bG9jLCBlbWl0X2NhbGxfaW5zbl9iZWZvcmVfc2V0bG9jKTogLi4uIHRoZXNlOwoJKGluc25fZmlsZSwgaW5zbl9saW5lLCBwcm9sb2d1ZV9sb2NhdG9yLCBlcGlsb2d1ZV9sb2NhdG9yKTogRGVjbGFyZS4KCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5KTogVXNlIGxvY2F0b3JzLgoJKiBmdW5jdGlvbi5jIChzZXRfaW5zbl9sb2NhdG9ycyk6IE5ldyBmdW5jdGlvbi4KCSh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogU2V0IHRoZSBsb2NhdG9ycyBhY2NvcmRpbmdseS4KCjIwMDMtMDYtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoTE9OR19MT05HX1RZUEVfU0laRSk6IFNldCB0byA2NC4KCSogY29uZmlnL2g4MzAwL3QtaDgzMDAgKExJQjFBU01GVU5DUyk6IFJlbW92ZSBfZmxvYXRkaXNmCglfZml4c2ZkaSBfZml4dW5zc2ZkaS4KCShMSUIyRlVOQ1NfRVhUUkEpOiBBZGQgZW50cmllcyBmb3IgY2x6aGkyLCBjdHpoaTIsIHBhcml0eWhpMiwKCXBvcGNvdW50aGkyLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRERJPVNJLgoJKiBjb25maWcvaDgzMDAvY2x6aGkyLmM6IE5ldy4KCSogY29uZmlnL2g4MzAwL2N0emhpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL3Bhcml0eWhpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL3BvcGNvdW50aGkyLmM6IExpa2V3aXNlLgoKU3VuIEp1biAgOCAxNTo1MjoxNyBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKHN1YnNpXzNfemV4dCwgc3NlMl9uYW5kdjJkaTMpOiBGaXggcHJlZGljYXRlcy4KCSogaTM4Ni5jIChrOF9hdm9pZF9qdW1wX21pc3NwcmVkaWN0cyk6IEZpeCBkZWJ1ZyBvdXRwdXQuCgoJKiBjZmcuYyAodmVyaWZ5X2Zsb3dfaW5mbyk6IE1vdmUgSUwgaW5kZXBlbmRlbnQgY2hlY2tzIGZyb20gY2ZncnRsIGhlcmUuCgkoZHVtcF9iYik6IE5ldyBiYXNlZCBvbiBvbGQgZHVtcF9iYiBpbiBjZmdydGwuYwoJKGRlYnVnX2JiLCBkZWJ1Z19iYl9uKTogTW92ZSB0aGUgZnVuY3Rpb25zIGZyb20gY2ZncnRsLmMgaGVyZS4KCSogY2ZnaG9va3MuaCAoY2ZnaF92ZXJpZnlfZmxvd19pbmZvKTogUmV0dXJuIHN0YXR1cy4KCSogY2ZnbGF5b3V0LmMgKGNmZ19sYXlvdXRfZmluYWxpemUpOiBWZXJpZnkgQ0ZHIGNvcnJlY3RuZXNzLgoJKiBjZmdydGwuYyAoZGVidWdfYmIsIGRlYnVnX2JiX24pOiBNb3ZlIHRvIGNmZy5jCgkoZHVtcF9iYik6IFJlbW92ZSBnZW5lcmljIHBhcnRzLgoJKHJ0bF92ZXJpZnlfZmxvd19pbmZvXzEpOiBCcmVhayBvdXQgZnJvbSBydGxfdmVyaWZ5X2Zsb3dfaW5mby4KCShydGxfdmVyaWZ5X2Zsb3dfaW5mbyk6IE9ubHkgY2hlY2sgdGhpbmdzIGRlcGVuZGVpbmcgb24gbGluZWFyaXplZCBSVEwuCgoyMDAzLTA2LTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbjogUmVuYW1lIG9wdGlvbnMuYyBhbmQgb3B0aW9ucy5oIHRvIGMtb3B0aW9ucy5jIGFuZAoJYy1vcHRpb25zLmguCgkoT0JKUyk6IFJlbW92ZSBvcHRpb25zLm8uCgkqIGMtb3B0cy5jOiBEb24ndEluY2x1ZGUgYy1vcHRpb25zLmggaW5zdGVhZCBvZiBvcHRpb25zLmguCgkqIG9wdHMuYzogRG9uJ3QgaW5jbHVkZSBvcHRpb25zLmguCgkoZmluZF9vcHQpOiBDYW4ndCB1c2UgZW51bSBvcHRfY29kZSBvciBOX09QVFMuCgkqIG9wdHMuaCAoc3RydWN0IGNsX29wdGlvbiwgY2xfb3B0aW9ucywgY2xfb3B0aW9uc19jb3VudCk6IE1vdmUgZnJvbS4uLgoJKiBvcHRzLnNoOiAuLi4gaGVyZS4KCjIwMDMtMDYtMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgkgICAgVWxyaWNoIFdlaWdhbmQgIDxVbHJpY2guV2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIHBjaC85ODMwCgkqIGdnYy1jb21tb24uYyAoSEFWRV9NTUFQX0ZJTEUpOiBJbmNsdWRlIHN5cy90eXBlcy5oCglpZiBIQVZFX01JTkNPUkUgaXMgZGVmaW5lZC4KCShNQVBfRkFJTEVEKTogRGVmaW5lIGlmIG5vdCBkZWZpbmVkLgoJKGd0X3BjaF9zYXZlKTogVGVzdCBhZ2FpbnN0IE1BUF9GQUlMRUQuCgkoZ3RfcGNoX3Jlc3RvcmUpOiBJZiBIQVZFX01JTkNPUkUsIHVzZSBNQVBfRklYRUQgdG8gZm9yY2UKCXRoZSBtYXBwaW5nIGFkZHJlc3MgdG8gdGhlIHByZWZlcnJlZCBiYXNlIGFmdGVyIGNoZWNraW5nIGl0CglpcyBwb3NzaWJsZSB0byBkbyBzby4gVGVzdCBhZ2FpbnN0IE1BUF9GQUlMRUQuCgkqIGNvbmZpZ3VyZS5pbjogVGVzdCBmb3IgdGhlIHByZXNlbmNlIG9mIG1pbmNvcmUgaW4gbGliYy4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA2LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBGaXgKCWNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGd1YXJkLgoKMjAwMy0wNi0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIG9wdGFicy5jIChleHBhbmRfYWJzKTogU2V0IHJlc3VsdF91bnNpZ25lZHAgdG8gMSBpZgoJZmxhZ190cmF2IGlzIHplcm8uCgoyMDAzLTA2LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1jcHBidWlsdGluLmMgKGNfY3BwX2J1aWx0aW5zKTogRGVmaW5lIF9fRVhDRVBUSU9OUyBmb3IgQyBhbHNvLgoKMjAwMy0wNi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKEVER0VfU0lCQ0FMTCk6IE5ldy4KCShFREdFX0FMTF9GTEFHUyk6IFVwZGF0ZS4KCSogY2ZnLmMgKGR1bXBfZWRnZV9pbmZvKTogQWRkIHNpYmNhbGwgbmFtZS4KCSogY2ZnYnVpbGQuYyAobWFrZV9lZGdlcyk6IFVzZSBFREdFX1NJQkNBTEwuCgkqIGNmZ3J0bC5jIChwdXJnZV9kZWFkX2VkZ2VzKTogSGFuZGxlIHNpYmNhbGxzLgoKMjAwMy0wNi0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogbWtsaWJnY2MuaW4gKGxpYjJmdW5jcyk6IFJlbW92ZSBfZXhpdC4KCSogbGliZ2NjMi5jOiBSZW1vdmUgTF9leGl0LgoJKiBnYmwtY3RvcnMuaDogUmVtb3ZlIGRlY2xhcmF0aW9ucyBkZXBlbmRlbmQgb24gTkVFRF9BVEVYSVQuCgoJKiBzeXN0ZW0uaDogUG9pc29uIE5FRURfQVRFWElULCBPTl9FWElULCBFWElUX0JPRFkuCgoJKiBkb2MvdG0udGV4aSAoTWlzYyk6IFJlbW92ZSBORUVEX0FURVhJVCwgT05fRVhJVCwgRVhJVF9CT0RZLgoKCSogZ2djLmg6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoJKiBnZ2Mtbm9uZS5jOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jOiBMaWtld2lzZS4KCSogZ2djLXBhZ2UuYzogTGlrZXdpc2UuCgkqIGdnYy1zaW1wbGUuYzogTGlrZXdpc2UuCgoJKiBjcnRzdHVmZi5jOiBSZW1vdmUgdW5kZWZpbmVkIHVzYWdlIG9mIElOSVRfU0VDVElPTl9QUkVBTUJMRS4KCgkqIHN5c3RlbS5oOiBQb2lzb24gSU5JVF9TRUNUSU9OX1BSRUFNQkxFLgoKMjAwMy0wNi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHdpdGhfY3B1IGhhbmRsaW5nKTogVHJhbnNsYXRlIHNwYXJjNjQgaW4KCSRtYWNoaW5lIHRvIC0td2l0aC1jcHU9djkuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jCgkoVEFSR0VUX0FTTV9HTE9CQUxJWkVfTEFCRUwgW1RBUkdFVF9BQklfVU5JQ09TTUtdKTogQ29ycmVjdCBkZWZpbml0aW9uLgoJKGFscGhhX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiAjaWZkZWYgb3V0IHdoZW4gVEFSR0VUX0FCSV9VTklDT1NNSy4KCgkqIHRhcmdldC5oOiBOZXcgaG9vayBhc21fb3V0LmZpbGVfZW5kLgoJKiB0YXJnZXQuaDogVXBkYXRlIHRvIG1hdGNoLiAgTmV3IGhvb2sgbWFjcm8gVEFSR0VUX0FTTV9GSUxFX0VORC4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IFVzZSB0YXJnZXRtLmFzbV9vdXQuZmlsZV9lbmQuCgkqIHN5c3RlbS5oOiBQb2lzb24gQVNNX0ZJTEVfRU5ELgoJKiB2YXJhc20uYyAoZmlsZV9lbmRfaW5kaWNhdGVfZXhlY19zdGFjayk6IE5ldy4KCSogb3V0cHV0Lmg6IFByb3RvdHlwZSBpdC4KCSogZG9jL3RtLnRleGk6IERvY3VtZW50IFRBUkdFVF9BU01fRklMRV9FTkQgYW5kCglmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrLiAgRGVsZXRlIHJlZmVyZW5jZXMgdG8gYXR0YXNtLmguCgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9BU01fRklMRV9FTkQpOiBSZXNldCB0byBkYXJ3aW5fZmlsZV9lbmQuCgkoQVNNX0ZJTEVfRU5EKTogRGVsZXRlOyBtb3ZlIGNvZGUuLi4KCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fZmlsZV9lbmQpOiBIZXJlOyBuZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmg6IFByb3RvdHlwZSBpdC4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKHVuaWNvc21rX2FzbV9maWxlX2VuZCk6IE1ha2Ugc3RhdGljLAoJcmVuYW1lIHVuaWNvc21rX2ZpbGVfZW5kLgoJKiBjb25maWcvYXJtL2FvZi5oIChBU01fRklMRV9FTkQpOiBEZWxldGU7IG1vdmUgY29kZS4uLgoJKiBjb25maWcvYXJtL2FybS5jIChhb2ZfZmlsZV9lbmQpOiAuLi4gaGVyZTsgbmV3IHN0YXRpYyBmdW5jdGlvbi4KCVNldCBUQVJHRVRfQVNNX0ZJTEVfRU5EIHRvIGFvZl9maWxlX2VuZCBpZiBBT0ZfQVNTRU1CTEVSLgoJTWFrZSBhb2ZfZHVtcF9pbXBvcnRzIGFuZCBhb2ZfZHVtcF9waWNfdGFibGUgc3RhdGljLgoJKiBjb25maWcvYXZyL2F2ci5jIChhc21fZmlsZV9lbmQpOiBSZW5hbWUgYXZyX2ZpbGVfZW5kLCBtYWtlIHN0YXRpYy4KCVNldCBUQVJHRVRfQVNNX0ZJTEVfRU5EIHRvIGF2cl9maWxlX2VuZC4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2ZpbGVfZW5kKTogTWFrZSBzdGF0aWMuICBUYWtlIG5vIGFyZ3VtZW50cy4KCVNldCBUQVJHRVRfQVNNX0ZJTEVfRU5EIHRvIGM0eF9maWxlX2VuZC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGFzbV9maWxlX2VuZCk6IFJlbmFtZSBoODMwMF9maWxlX2VuZCwKCW1ha2Ugc3RhdGljLiBUYWtlIG5vIGFyZ3VtZW50cy4gIFNldCBUQVJHRVRfQVNNX0ZJTEVfRU5EIHRvCgloODMwMF9maWxlX2VuZC4KCSogY29uZmlnL2kzNzAvaTM3MC5oIChBU01fRklMRV9FTkQpOiBEZWxldGU7IG1vdmUgY29kZS4uLgoJKiBjb25maWcvaTM3MC9pMzcwLmMgKGkzNzBfZmlsZV9lbmQpOiAuLi4gaGVyZTsgbmV3IHN0YXRpYyBmdW5jdGlvbi4KCVNldCBUQVJHRVRfQVNNX0ZJTEVfRU5EIHRvIGkzNzBfZmlsZV9lbmQuCgkgKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYXNtX2ZpbGVfZW5kKTogUmVuYW1lIGl4ODZfZmlsZV9lbmQuCgkgVGFrZSBubyBhcmd1bWVudHMuICBDYWxsIGZpbGVfZW5kX2luZGljYXRlX2V4ZWNfc3RhY2sgaWYKCSBORUVEX0lORElDQVRFX0VYRUNfU1RBQ0s7IGRvbid0IHVzZSBTVUJUQVJHRVRfRklMRV9FTkQuCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogU2V0IFRBUkdFVF9BU01fRklMRV9FTkQsIG5vdCBBU01fRklMRV9FTkQuCglEZWZpbmUgTkVFRF9JTkRJQ0FURV9FWEVDX1NUQUNLIHRvIDAuCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmgsIGNvbmZpZy9pMzg2L2xpbnV4NjQuaDogUmVkZWZpbmUKCU5FRURfSU5ESUNBVEVfRVhFQ19TVEFDSyB0byAxIGluc3RlYWQgb2Ygc2V0dGluZyBTVUJUQVJHRVRfRklMRV9FTkQuCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGkzODZfcGVfYXNtX2ZpbGVfZW5kKTogUmVuYW1lIHRvCglpMzg2X3BlX2ZpbGVfZW5kLiAgVGFrZSBubyBhcmd1bWVudHMuICBVc2UgaXg4Nl9maWxlX2VuZC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2hwdXhfYXNtX2ZpbGVfZW5kKTogUmVuYW1lIHRvCglpYTY0X2hwdXhfZmlsZV9lbmQsIG1ha2Ugc3RhdGljLiAgVGFrZSBubyBhcmd1bWVudHMuCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoYXNtX2ZpbGVfc3RhcnQsIGFzbV9maWxlX2VuZCwKCWNvbW1hbmRzX2luX3Byb2xvZ3VlcywgY29tbWFuZHNfaW5fZXBpbG9ndWVzKTogRGVsZXRlLgoJKGZ1bmN0aW9uX2VwaWxvZ3VlKTogVXBkYXRlIHRvIG1hdGNoLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYXNtX2ZpbGVfZW5kKTogUmVuYW1lIG1pcHNfZmlsZV9lbmQsCgltYWtlIHN0YXRpYy4gIFRha2Ugbm8gYXJndW1lbnRzLgoJKGlyaXM2X2FzbV9maWxlX2VuZCk6IFJlbmFtZSBpcmlzNl9maWxlX2VuZCwgbWFrZSBzdGF0aWMsIHVzZQoJbWlwc19maWxlX2VuZCwgdGFrZSBubyBhcmd1bWVudHMuCglTZXQgVEFSR0VUX0FTTV9GSUxFX0VORCB0byBpcmlzNl9maWxlX2VuZCBvciBtaXBzX2ZpbGVfZW5kIGFzCglhcHByb3ByaWF0ZS4KCSogY29uZmlnL21taXgvbW1peC5jIChtbWl4X2FzbV9maWxlX2VuZCk6IFJlbmFtZSBtbWl4X2ZpbGVfZW5kLAoJbWFrZSBzdGF0aWMsIHRha2Ugbm8gYXJndW1lbnRzLiBTZXQgVEFSR0VUX0FTTV9GSUxFX0VORCB0bwoJbW1peF9maWxlX2VuZC4KCSogY29uZmlnL3BhL3BhLmMgKG91dHB1dF9kZWZlcnJlZF9wbGFiZWxzKTogTWFrZSBzdGF0aWMsIHRha2UKCW5vIGFyZ3VtZW50cy4gIFNldCBUQVJHRVRfQVNNX0ZJTEVfRU5EIHRvIG91dHB1dF9kZWZlcnJlZF9wbGFiZWxzLgoJKiBjb25maWcvcnM2MDAwL3hjb2ZmLmggKFRBUkdFVF9BU01fRklMRV9FTkQpOiBTZXQgaXQuCgkoQVNNX0ZJTEVfRU5EKTogRGVsZXRlOyBtb3ZlIGNvZGUuLi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3hjb2ZmX2ZpbGVfZW5kKTogLi4uIGhlcmU7CgluZXcgc3RhdGljIGZ1bmN0aW9uLgoKCSogY29uZmlnL2F2ci9hdnIuaCwgY29uZmlnL2NyaXMvY3Jpcy5oLCBjb25maWcvaDgzMDAvaDgzMDAuaAoJKiBjb25maWcvbW1peC9tbWl4LmgsIGNvbmZpZy9taXBzL2lyaXM2LmgsIGNvbmZpZy9taXBzL21pcHMuaDoKCURvbid0IHNldCBBU01fRklMRV9FTkQuCgkqIGNvbmZpZy9hbHBoYS9saW51eC1lbGYuaCwgY29uZmlnL202OGsvbGludXguaCwgY29uZmlnL3JzNjAwMC9saW51eC5oCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oLCBjb25maWcvczM5MC9saW51eC5oLCBjb25maWcvc3BhcmMvbGludXguaAoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oOiBTZXQgVEFSR0VUX0FTTV9GSUxFX0VORCB0bwoJZmlsZV9lbmRfaW5kaWNhdGVfZXhlY19zdGFjazsgZG9uJ3Qgc2V0IEFTTV9GSUxFX0VORC4KCSogY29uZmlnL2FscGhhL3VuaWNvc21rLmgsIGNvbmZpZy9pMzg2L2N5Z21pbmcuaAoJKiBjb25maWcvaWE2NC9ocHV4Lmg6IFNldCBUQVJHRVRfQVNNX0ZJTEVfRU5ELCBub3QgQVNNX0ZJTEVfRU5ELgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCwgY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oLCBjb25maWcvYzR4L2M0eC1wcm90b3MuaAoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmgsIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmgKCSogY29uZmlnL2lwMmsvaXAyay1wcm90b3MuaCwgY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaAoJKiBjb25maWcvbW1peC9tbWl4LXByb3Rvcy5oLCBjb25maWcvcGEvcGEtcHJvdG9zLmg6IFVwZGF0ZS4KClNhdCBKdW4gIDcgMTg6MzI6MTMgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmggKE9QVElPTl9ERUZBVUxUX1NQRUNTKTogQXZvaWQgLW1jcHUgZGVmYXVsdCB3aGVuIC1tYXJjaCBpcwoJc3BlY2lmaWVkLgoKU2F0IEp1biAgNyAxNToyMDowMSBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluIChzdGFnZXByb2ZpbGVfYnVpbGQpOiBLaWxsIHJlZHVuZGFudCB0YXJnZXQuCgkqIGkzODYuYyAobWRlcF9yZW9yZyk6IERvbid0IHBhZCBqdW1wcyBmb3IgQXRobG9uLgoKMjAwMy0wNi0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZG9jL3RtLnRleGkgKENvc3RzKTogUmVtb3ZlIERPTlRfUkVEVUNFX0FERFIgZG9jdW1lbnRhdGlvbi4KCgkqIGNvbmZpZy9hdnIvYXZyLmg6IFJlbW92ZSBjb21tZW50IHJlZ2FyZGluZyBET05UX1JFRFVDRV9BRERSLgoJKiBjb25maWcvZHNwMTZ4eC9kc3AxNnh4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvaXAyay9pcDJrLmg6IExpa2V3aXNlLgoKMjAwMy0wNi0wNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW4gKE9KQlMsIGMtb3B0cy5vKTogVXBkYXRlLgoJKGMtb3B0aW9ucy5jLCBjLW9wdGlvbnMuaCk6IFJlbmFtZSBvcHRpb25zLmggYW5kIG9wdGlvbnMuYy4KCShvcHRpb25zLmgpOiBSZW5hbWUgb3B0aW9uc18uaC4KCShvcHRzLm8pOiBOZXcuCgkqIGMtY29tbW9uLmggKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBSZXBsYWNlIGNfY29tbW9uX2RlY29kZV9vcHRpb24uCgkoY19jb21tb25faW5pdF9vcHRpb25zKTogVXBkYXRlIHByb3RvdHlwZS4KCSogYy1sYW5nLmMgKGNfaW5pdF9vcHRpb25zKTogVXBkYXRlIHByb3RvdHlwZS4KCShMQU5HX0hPT0tTX0hBTkRMRV9PUFRJT04pOiBPdmVycmlkZS4KCShMQU5HX0hPT0tTX0RFQ09ERV9PUFRJT04pOiBEcm9wLgoJKiBjLW9wdHMuYzogSW5jbHVkZSBvcHRzLmggYW5kIG9wdGlvbnMuaCBpbnN0ZWFkIG9mIGMtb3B0aW9ucy5oCglhbmQgYy1vcHRpb25zLmMuCgkobGFuZ19mbGFncyk6IE1vdmUgdG8gZmlsZSBzY29wZS4KCShmaW5kX29wdCwgY19jb21tb25fZGVjb2RlX29wdGlvbik6IFJlbW92ZS4KCShDTF9DLCBDTF9PQkpDLCBDTF9DWFgsIENMX09CSkNYWCwgQ0xfSk9JTkVELCBDTF9TRVBBUkFURSwKCUNMX1JFSkVDVF9ORUdBVElWRSk6IE1vdmUgdG8gb3B0cy5oLgoJKG1pc3NpbmdfYXJnKTogVXBkYXRlIHByb3RvdHlwZS4KCShjX2NvbW1vbl9pbml0X29wdGlvbnMpOiBVcGRhdGUgZm9yIG5ldyBwcm90b3R5cGUuCgkoY19jb21tb25faGFuZGxlX29wdGlvbnMpOiBGaWxlbmFtZXMgYXJlIHBhc3NlZCBhcyBOX09QVFMuCgkqIGhvb2tzLmMgKGhvb2tfaW50X3ZvaWRfMCk6IE5ldy4KCSogaG9va3MuaCAoaG9va19pbnRfdm9pZF8wKTogTmV3LgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfSU5JVF9PUFRJT05TKTogTmV3IGRlZmF1bHQuCgkoTEFOR19IT09LU19IQU5ETEVfT1BUSU9OKTogRGVmYXVsdCB0byBOVUxMIGZvciBub3cuCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6IFVwZGF0ZS4KCSogbGFuZ2hvb2tzLmggKGluaXRfb3B0aW9ucyk6IFVwZGF0ZS4KCShoYW5kbGVfb3B0aW9uKTogTmV3LgoJKiBvcHRzLmMsIG9wdHMuaDogTmV3IGZpbGVzLgoJKiBvcHRzLnNoOiBVcGRhdGUgYyBmaWxlIHRvIGluY2x1ZGUgb3B0cy5oIGFuZCBvcHRpb25zLmguCgkqIHRvcGxldi5jOiBJbmNsdWRlIG9wdHMuaDsgY2hhbmdlIG9wdGlvbnMuaCB0byBvcHRpb25zXy5oLgoJKHBhcnNlX29wdGlvbnNfYW5kX2RlZmF1bHRfZmxhZ3MpOiBHZXQgbGFuZ19tYXNrLCB1c2UKCWhhbmRsZV9vcHRpb24gZm9yIGxhbmd1YWdlLXNwZWNpZmljIGhhbmRsaW5nLgoJKiBvYmpjL29iamMtbGFuZy5jIChMQU5HX0hPT0tTX0RFQ09ERV9PUFRPTik6IERyb3AuCgkoTEFOR19IT09LU19IQU5ETEVfT1BUSU9OKTogT3ZlcnJpZGUuCgkob2JqY19pbml0X29wdGlvbnMpOiBVcGRhdGUuCgoyMDAzLTA2LTA3ICBNYWdudXMgS3JldGggPG1hZ251cy5rcmV0aEBnbXguZGU+CgkgICAgVGhpYmF1ZCBHYWlsbGFyZCA8dGhpYmF1ZC5nYWlsbGFyZEBudG8uYXRtZWwuY29tPgoKCVBSIG90aGVyLzcwMzEKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtY29tbW9uKTogUmVtb3ZlIEdDT1ZfSU5TVEFMTF9OQU1FIGluc3RlYWQgb2YKCWdjb3YuCgoyMDAzLTA2LTA3ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9MRF9ST19SV19TRUNUSU9OX01JWElORyk6IFJlbW92ZSBxdW90ZXMgaW4KCXNlY3Rpb24gbmFtZXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDYtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKTogRGVmaW5lLgoKMjAwMy0wNi0wNiAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25AdHVsaXB0cmVlLm9yZz4KCglQUiBpbmxpbmUtYXNtLzEwODkwCgkqIHJlbG9hZDEuYyAobWVyZ2VfYXNzaWduZWRfcmVsb2Fkcyk6IEFib3J0IG9ubHkgaWYgdHdvIHJlbG9hZHMgaGF2ZQoJZGlmZmVyZW50IGluIGZpZWxkcy4KCjIwMDMtMDYtMDYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBNYWtlICQodGFyZ2V0X3N1YmRpcikgY29ycmVzcG9uZCB3aXRoIHRvcCBsZXZlbCB1c2FnZS4KCSogTWFrZWZpbGUuaW46IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA2LTA2ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OLAoJQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogQ2FzdCBgU0laRScgYW5kIGBBTElHTkVEJyBwYXJhbWV0ZXJzIHRvCgl1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKiBwYS1wcm8tZW5kLmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT00sIEFTTV9PVVRQVVRfQUxJR05FRF9MT0NBTCk6CglMaWtld2lzZS4KCSogcGE2NC1ocHV4LmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04sIEFTTV9PVVRQVVRfQUxJR05FRF9MT0NBTCk6CglMaWtld2lzZS4KCjIwMDMtMDYtMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFByZXJlcXVpc2l0ZXMpOiBOZXcgc2VjdGlvbiBkb2N1bWVudGluZwoJdG9vbHMgYW5kIHBhY2thZ2VzIG5lY2Vzc2FyeSBwcmlvciB0byBidWlsZGluZyBhbmQvb3IKCW1vZGlmeWluZyBHQ0MuCgkqIGRvYy9pbnN0YWxsLnRleGkyaHRtbDogQWxzbyBnZW5lcmF0ZSBwcmVyZXF1aXNpdGVzLmh0bWwuCgoyMDAzLTA2LTA2ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCglQUiB0YXJnZXQvMTEwNTIKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogRmFpbCBpZiB0aGUgZGVzdGluYXRpb24gaGFzCglzaWRlLWVmZmVjdHMuCgoyMDAzLTA2LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAocmVzb2x2ZV9hc21fb3BlcmFuZF9uYW1lcyk6IFJlbmFtZSBmcm9tCglyZXNvbHZlX29wZXJhbmRfbmFtZXMuICBObyBsb25nZXIgc3RhdGljLiAgQXZvaWQgbmVlZGxlc3MgY29weWluZy4KCURvbid0IGJ1aWxkIGFycmF5IG9mIGNvbnN0cmFpbnRzLgoJKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBCdWlsZCBpdCBoZXJlLgoJKiB0cmVlLmg6IERlY2xhcmUgcmVzb2x2ZV9hc21fb3BlcmFuZF9uYW1lcy4KCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBQdXQgYXJ0aWZpY2lhbCB2YXJzIGludG8gcmVnaXN0ZXJzIGV2ZW4KCXdoZW4gbm90IG9wdGltaXppbmcsIGFuZCBkb24ndCBtYXJrIHRoZSByZWdzIGFzIHVzZXIgdmFycy4KCjIwMDMtMDYtMDYgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guaCAoRlVOQ1RJT05fQVJHXzEpOiBDb25zaXN0ZW50bHkgdXNlIE5FV19NT0RFIGZvciB0aGUgbW9kZQoJb2YgdGhlIGdlbmVyYXRlZCByZWdpc3Rlci4KCjIwMDMtMDYtMDYgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlnLmdjYzogQWRkIGEgbWlzc2luZyBzcGFyYzY0IGNhc2UuCgoyMDAzLTA2LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG1rbGliZ2NjLmluOiBQcm9wYWdhdGUgLm5vdGUuR05VLXN0YWNrIHNlY3Rpb24gaWYgbmVlZGVkIGludG8KCXRoZSAuaGlkZGVuIGFzc2VtYmx5IHN0dWJzLgoKMjAwMy0wNi0wNiAgSC5KLiBMdSA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcuZ2NjIChleHRyYV9oZWFkZXJzKTogQWRkIGVtbWludHJpbi5oIGZvciBpWzM0NTY3XTg2LSotKgoJYW5kIHg4Nl82NC0qLSouCgoJKiBjb25maWcvaTM4Ni9tbWludHJpbi5oOiBVcGRhdGUgdmVyc2lvbiBhbmQgYWRkIGFsdGVybmF0ZQoJaW50cmluc2ljIG5hbWVzLgoJKiBjb25maWcvaTM4Ni94bW1pbnRyaW4uaDogTGlrZXdpc2UuCgoJKiBjb25maWcvaTM4Ni94bW1pbnRyaW4uaDogSW5jbHVkZSA8ZW1taW50cmluLmg+LiBNb3ZlIFNTRTIKCWludHJpbnNpY3MgdG8gLi4uCgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oOiBIZXJlLiBOZXcgZmlsZS4KCjIwMDMtMDYtMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkIDxBQlNfRVhQUj4pOiAgUmUtZm9sZCB0aGUgcmVzdWx0IG9mIGZvbGRpbmcKCWZhYnMoLXgpIGludG8gZmFicyh4KS4gIFVzZSB0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCB0byBkZXRlcm1pbmUKCXdoZW4gdGhlIEFCU19FWFBSIChmYWJzIG9yIGFicykgaXMgbm90IHJlcXVpcmVkLgoJKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogTW92ZSB0aGUgbG9naWMgdGhhdCBzcXJ0IGFuZCBleHAgYXJlCglhbHdheXMgbm9ubmVnYXRpdmUgZnJvbSBmb2xkIHRvIGhlcmUuICBBZGRpdGlvbmFsbHksIGNhYnMgYW5kIGZhYnMKCWFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLCBhbmQgcG93IGFuZCBhdGFuIGFyZSBub24tbmVnYXRpdmUgaWYKCXRoZWlyIGZpcnN0IGFyZ3VtZW50IGlzIG5vbi1uZWdhdGl2ZS4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jYWJzKTogTmV3IGZ1bmN0aW9uIHRvIGZvbGQgY2Fic3ssZixsfS4KCUV2YWx1YXRlIGNhYnMgb2YgYSBjb25zdGFudCBhdCBjb21waWxlLXRpbWUuICBDb252ZXJ0IGNhYnMgb2YgYQoJbm9uLWNvbXBsZXggYXJndW1lbnQgaW50byBmYWJzLiAgQ29udmVydCBjYWJzKHopIGludG8KCXNxcnQoei5yKnouciArIHouaSp6LmkpIGF0IHRoZSB0cmVlLWxldmVsIHdpdGggLWZmYXN0LW1hdGggb3IKCS1mdW5zYWZlLW1hdGgtb3B0aW1pemF0aW9ucyBvciAtZmZhc3QtbWF0aC4KCShmb2xkX2J1aWx0aW4pOiBDb252ZXJ0IEJVSUxUX0lOX0ZBQlN7LEYsTH0gaW50byBhbiBBQlNfRVhQUi4KCUZvbGQgQlVJTFRfSU5fQ0FCU3ssRixMfSB1c2luZyBmb2xkX2J1aWx0aW5fY2Ficy4KClRodSBKdW4gIDUgMjA6NTE6MDkgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBzb3VyY2VidWlsZC50ZXhpIChGcm9udCBFbmQgRGlyZWN0b3J5KTogRG9jdW1lbnQgbmV3IGhvb2tzLgoKRnJpIEp1biAgNiAxMTowMjozNSBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZ1bmN0aW9uLmMgKEZMT09SX1JPVU5ELCBDRUlMX1JPVU5EKTogRml4LgoJKiBpMzg2Lm1kIChnZW5fcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjayk6IERlYWwgd2l0aCBnaWdhbnRpYwoJc3RhY2sgZnJhbWVzLgoJKHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2tfcmV4NjRfMik6IE5ldyBwYXR0ZXJuCgpGcmkgSnVuICA2IDExOjAzOjE0IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJCQkgICAgICAgUG9wIFNlYmFzdGlhbgoJCQkgICAgICAgWmRlbmVrIER2b3JhayA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmdob29rcy5oLCBjZmdob29rcy5jOiBOZXcgZmlsZXMuCgkqIE1ha2VmaWxlLmluIChCQVNJQ19CTE9DS19IKTogRGVwZW5kcyBvbiBjZmdob29rcy5oLgoJKE9CSlMpOiBBZGQgY2ZnaG9va3Muby4KCShjZmdob29rcy5vKTogTmV3IHJ1bGUuCgkqIGJhc2ljLWJsb2NrLmggKHNwbGl0X2VkZ2UpOiBSZW5hbWUgdG8gcnRsX3NwbGl0X2VkZ2UuCgkodmVyaWZ5X2Zsb3dfaW5mbyk6IFJlbmFtZSB0byBydGxfdmVyaWZ5X2Zsb3dfaW5mby4KCShjZmdob29rcy5oKTogSW5jbHVkZWQgaGVyZS4KCSogY2ZncnRsLmMgKHNwbGl0X2VkZ2UpOiBSZW5hbWVkIHJ0bF9zcGxpdF9lZGdlLgoJKHZlcmlmeV9mbG93X2luZm8pOiBSZW5hbWVkIHJ0bF92ZXJpZnlfZmxvd19pbmZvLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgcnRsX3JlZ2lzdGVyX2NmZ19ob29rcy4KCgkqIGJhc2ljLWJsb2NrLmggKHNwbGl0X2Jsb2NrLCBzcGxpdF9lZGdlLCBmbG93X2RlbGV0ZV9ibG9jaywKCXJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCwgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlKTogRGVsZXRlLgoJKGZsb3dfZGVsZXRlX2Jsb2NrX25vZXhwdW5nZSk6ICBSZXR1cm4gdm9pZC4KCSogY2ZnLmMgKHZlcmlmeV9mbG93X2luZm8pOiBOZXcgZnVuY3Rpb24uCgkqIGNmZ2NsZWFudXAuYyAodHJ5X3NpbXBsaWZ5X2NvbmRqdW1wLCBvdXRnb2luZ19lZGdlc19tYXRjaCwKCXRyeV9jcm9zc2p1bXBfdG9fZWRnZSwgdHJ5X29wdGltaXplX2NmZywgZGVsZXRlX3VucmVhY2hhYmxlX2Jsb2Nrcyk6CglVc2UgZGVsZXRlX2Jsb2NrLgoJKiBjZmdsYXlvdXQuYyAoZnVuY3Rpb25fZm9vdGVyKTogUmVuYW1lIHRvLi4uCgkoY2ZnX2xheW91dF9mdW5jdGlvbl9mb290ZXIpOiAuLi4gdGhpcyB2YXJpYWJsZQoJKHVubGlua19pbnNuX2NoYWluKTogTWFrZSBnbG9iYWwuCgkoZml4dXBfcmVvcmRlcl9jaGFpbiwgcmVjb3JkX2VmZmVjdGl2ZV9lbmRwb2ludHMpOiBVcGRhdGUuCgkoY2xlYW51cF91bmNvbmRpdGlvbmFsX2p1bXBzKTogVXNlIGRlbGV0ZV9ibG9jay4KCShjZmdfbGF5b3V0X3JlZGlyZWN0X2VkZ2UsIGNmZ19sYXlvdXRfc3BsaXRfYmxvY2spOiBNb3ZlIHRvIGNmZ3J0bC5jCgkoY2ZnX2xheW91dF9kdXBsaWNhdGVfYmIpOiBVc2UgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlLgoJKGNmZ19sYXlvdXRfaW5pdGlhbGl6ZSwgY2ZnX2xheW91dF9maW5hbGl6ZSk6IFVwZGF0ZSBob29rcy4KCSogY2ZnbGF5b3V0LmggKGNmZ19sYXlvdXRfcmVkaXJlY3RfZWRnZSwgY2ZnX2xheW91dF9zcGxpdF9ibG9jayk6ICBEZWxldGUuCgkoY2ZnX2xheW91dF9mdW5jdGlvbl9mb290ZXIpOiBEZWNsYXJlLgoJKiBjZmdsb29wbWFuaXAgKHNwbGl0X2xvb3BfYmIpOiBEbyBub3QgdXBkYXRlIFJCSS4KCShyZW1vdmVfYmJzKTogVXNlIGRlbGV0ZV9ibG9jay4KCShsb29wX3JlaWRyZWN0X2VkZ2UsIGxvb3BfZGVsZXRlX2JyYW5jaF9lZGdlKTogVXNlCglyZWRpcmVjdF9lZGdlX2FuZF9icmFuY2guCgkoY3JlYXRlX3ByZWhlYWRlcik6IFVzZSBzcGxpdF9ibG9jayBhbmQgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlLgoJKHNwbGl0X2VkZ2Vfd2l0aCk6IExpa2V3aXNlLgoJKiBjZmdydGwuYzogSW5jbHVkZSBjZmdsYXlvdXQuaAoJKHNwbGl0X2VkZ2UpOiBSZW5hbWUgdG8gLi4uCgkocnRsX3NwbGl0X2VkZ2UpIC4uLiB0aGlzIG9uZTsgbWFrZSBsb2NhbC4KCShyZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiBSZW5hbWUgdG8gLi4uCgkocnRsX3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCkgLi4uIHRoaXMgb25lOyBtYWtlIGxvY2FsLgoJKHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaF9mb3JjZSk6IFJlbmFtZSB0byAuLi4KCShydGxfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlKSAuLi4gdGhpcyBvbmU7IG1ha2UgbG9jYWwuCgkoY2ZnX2xheW91dF9kZWxldGVfYmxvY2ssIGNmZ19sYXlvdXRfZGVsZXRlX2VkZ2VfYW5kX2JyYW5jaF9mb3JjZSk6IE5ldy4KCShjZmdfbGF5b3V0X3JlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCwgY2ZnX2xheW91dF9zcGxpdF9ibG9jayk6IE1vdmUgaGVyZSBmcm9tCgljZmdsYXlvdXQuYzsgdXBkYXRlIHRvIGRpcmVjdGx5IGNhbGwgUlRMIGNvdW50ZXJwYXJ0cy4KCShydGxfY2ZnX2hvb2tzLCBjZmdfbGF5b3V0X3J0bF9jZmdfaG9va3MpOiBOZXcgZnVuY3Rpb25zLgoJKiBpZmN2dC5jIChmaW5kX2NvbmRfdHJhcCk6IFVzZSBkZWxldGVfYmxvY2suCgkoZmluZF9pZl9jYXNlXzEpOiBVc2UgZGVsZXRlX2Jsb2NrLgoJKGZpbmRfaWZfY2FzZV8yKTogVXNlIGRlbGV0ZV9ibG9jay4KCSogcnRsLmggKHVubGlua19pbnNuX2NoYWluKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKHJ0bF9yZWlnc3Rlcl9jZmdfaG9va3MpOiBOZXcuCgoyMDAzLTA2LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcmVjb2cuYyAocGVlcGhvbGUyX29wdGltaXplKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKMjAwMy0wNi0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlY29nLmMgKHBlZXBob2xlMl9vcHRpbWl6ZSk6IERvbid0IHNwbGl0IGJsb2NrIHVubGVzcwoJY2FuX3Rocm93X2ludGVybmFsLgoKMjAwMy0wNi0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChnZXRfc2hpZnRfYWxnKTogQ29ycmVjdCB0aGUgc3ludGF4IG9mIHJvdHhsLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCphZGRzaTNfbHNoaWZ0cnRfMTZfemV4dGhpKTogTGlrZXdpc2UuCgoyMDAzLTA2LTA1ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vNDQ5MAoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBEb24ndCB1c2UgWEZNb2RlIGlmIFRBUkdFVF8xMjhCSVRfTE9OR19ET1VCTEUuCgkqIGRvYy9pbnZva2UudGV4aSAobTk2Yml0LWxvbmctZG91YmxlLCBtMTI4Yml0LWxvbmctZG91YmxlKTogIFJld29yZAoJZG9jdW1lbnRhdGlvbiB0byBhY2N1cmF0ZWx5IHJlZmxlY3Qgd2hhdCB0aGVzZSBvcHRpb25zIGRvLgoKMjAwMy0wNi0wNiAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGludXguaCAoU1RBUlRGSUxFX1NQRUMpOiBIYW5kbGUgLXBpZS4gIFNpbXBsaWZ5LgoJKEVOREZJTEVfU1BFQyk6IFJlZGVmaW5lIHRvIGhhbmRsZSAtcGllLgoKMjAwMy0wNi0wNSAgUGhpbCBFZHdhcmRzIDxwaGlsQGphai5jb20+CgoJKiBNYWtlZmlsZS5pbiAocW10ZXN0LWcrKyk6IFVzZSB0YXJnZXRfYWxpYXMsIG5vdCB0YXJnZXQuCgoyMDAzLTA2LTA1ICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIHRvcGxldi5jIChwdXNoX3NyY2xvYyk6ICBTaW1wbGlmeSBiZWhhdmlvciB0byBzYXZlIGN1cnJlbnQgbG9jYXRpb24KCWFuZCBzZXQgY3VycmVudCBsb2NhdGlvbiB0byBwYXJhbWV0ZXJzLgoJKHBvcF9zcmNsb2MpOiAgU2ltcGxpZnkgc2VtYW50aWNzLgoJKGxhbmdfZGVwZW5kZW50X2luaXQpOiAgUmVtb3ZlIG5vdy11c2VsZXNzIGluaXRpYWwgcHVzaF9zcmNsb2MuCgoyMDAzLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSk6IFJldHVybiAwIGZvcgoJbGFuZ3VhZ2Utc3BlY2lmaWMgdHJlZSBjb2Rlcy4KCjIwMDMtMDYtMDUgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgbWlkZGxlLWVuZC85OTg2CgkqIHBhLmMgKHBhX2luaXRfYnVpbHRpbnMpOiBBbHNvIHNldCBpbXBsaWNpdF9idWlsdF9pbl9kZWNscyBmb3IKCUJVSUxUX0lOX0ZQVVRDX1VOTE9DS0VEIHRvIE5VTExfVFJFRS4KClRodSBKdW4gIDUgMTg6MzI6NDYgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpbnN0YWxsLnRleDogRG9jdW1lbnQgcHJvZmlsZWRib290c3RyYXAuCgoJKiBjb25maWd1cmUuaW46ICBBZGQgc3VwcG9ydCBmb3IgbGFuZy5zdGFnZXByb2ZpbGUgYW5kCglsYW5nLnN0YWdlZmVlZGJhY2sKCSogTWFrZWZpbGUuaW4gKGNsZWFuLCBkaXN0Y2xlYW4pOiBLaWxsIG5ldyBzdGFnZXMKCShQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MpOiBCcmVhayBmcm9tIC4uLgoJKFNUQUdFMl9GTEFHU19UT19QQVNTKTogLi4uIHRoaXMgb25lLgoJKFNUQUdFUFJPRklMRV9GTEFHU19UT19QQVNTLCBTVEFHRUZFRURCQUNLX0ZMQUdTX1RPX1BBU1MpOiBOZXcuCgkoc3RhZ2VbMi00XV9idWlsZCk6IEFkZCBQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MuCgkoc3RhZ2Vwcm9maWxlX2J1aWxkLCBzdGFnZXByb2ZpbGVfY29weSwgc3RhZ2VmZWVkYmFja19idWlsZCwKCXN0YWdlZmVlZGJhY2tfY29weSk6IE5ldy4KCShyZXN0YWdlcHJvZmlsZSwgcmVzdGFnZWZlZWRiYWNrLCBzdGFnZXByb2ZpbGUtc3RhcnQsCglzdGFnZXByb2ZpbGUsIHN0YWdlZmVlZGJhY2stc3RhcnQpOiBMaWtld2lzZS4KCjIwMDMtMDYtMDUgIERhdmlkIE1pbGxlciAgPGRhdmVtQHJlZGhhdC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIG9wdGFicy5jIChIQVZFX2NvbmRpdGlvbmFsX3RyYXApOiBQcm92aWRlIGRlZmF1bHQuCgkoZ2VuX2NvbmRpdGlvbmFsX3RyYXApOiBMaWtld2lzZS4KCShpbml0X29wdGFicyk6IE1lcmdlIGluaXRfdHJhcHMuCgkoZ2VuX2NvbmRfdHJhcCk6IFVzZSBwcmVwYXJlX29wZXJhbmQuICBSZXN0cnVjdHVyZSBhbmQgYXZvaWQgaWZkZWYuCgpUaHUgSnVuICA1IDE0OjU5OjQ0IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9pZl90aGVuX2Vsc2UpOiAoSUZfVEhFTl9FTFNFIChORSBSRUcgMCkgKDApICg4KSkKCWlzIFJFRyBmb3Igbm9uemVyb19iaXRzIChSRUcpID09IDguCgpUaHUgSnVuICA1IDEzOjIzOjUxIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWxpZ24pOiBGaXggd2FybmluZzsgY2xhcmlmeSB3aGF0IHRvIGRvIHdoZW4gbm8gcDJhbGlnbgoJaXMgYXZhaWxhYmxlLgoKMjAwMy0wNi0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG0zMnItZWxmKTogUmV2ZXJ0IHByZXZpb3VzIGRlbHRhLgoJKiBjb25maWcvbTMyci90LW0zMnIgKGNydGluaXQubyk6IEZpeCBydWxlIHRvIHdvcmsgd2l0aAoJbXVsdGlsaWJzLiAgUmVtb3ZlIG0zMnJ4IHNwZWNpZmljIHZlcnNpb24uCgkoY3J0ZmluaS5vKTogTGlrZXdpc2UuCgkoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBEZWZpbmUuCgoyMDAzLTA2LTA1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL21kLnRleGkgKE1hY2hpbmUgQ29uc3RyYWludHMpOiBDb3JyZWN0IHRoZSBtZWFuaW5nIG9mCgljb25zdHJhaW50cyByZWxhdGVkIHRvIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycyBvbiBTUEFSQy4KCjIwMDMtMDYtMDUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgkgICAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiB0YXJnZXQvMTA2NjMKCSogY29uZmlndXJlLmluIChIQVZFX0xEX1JPX1JXX1NFQ1RJT05fTUlYSU5HKTogUmVkaXJlY3QKCWFzc2VtYmxlciBhbmQgbGlua2VyIG91dHB1dCB0byAvZGV2L251bGwuCglVc2UgYSAnc2VkJyBjb25zdHJ1Y3QgaW5zdGVhZCBvZiAnZ3JlcCAtQTEnLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA2LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChzdHJ1Y3QgaXg4Nl9hZGRyZXNzKTogQWRkIHNlZy4KCShub19zZWdfYWRkcmVzc19vcGVyYW5kKTogTmV3LgoJKGl4ODZfZGVjb21wb3NlX2FkZHJlc3MpOiBSZXN0cnVjdHVyZSBQTFVTIGxvb3AuICBBY2NlcHQgb25lCglVTlNQRUNfVFAgaWYgVEFSR0VUX1RMU19ESVJFQ1RfU0VHX1JFRlMuICBBZGp1c3QgRVNQIHN3YXAgdGVzdAoJdG8gdGVzdCBmb3IgYSByZWdudW0sIG5vdCBzdGFja19wb2ludGVyX3J0eC4KCShpeDg2X2FkZHJlc3NfY29zdCk6IFJlZHVjZSBjb3N0IGlmIG5vbi1kZWZhdWx0IHNlZ21lbnQuCgkobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBSZW1vdmUgVU5TUEVDX1RQIGNoZWNrLgoJKGdldF90aHJlYWRfcG9pbnRlcik6IEFkZCB0b19yZWcgYXJndW1lbnQuICBEb24ndCByZXByZXNlbnQKCXRoZSB0aHJlYWQgcG9pbnRlciBhcyBhIG1lbW9yeSBsb2FkLgoJKGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MpOiBTcGxpdCBvdXQgb2YgLi4uCgkobGVnaXRpbWl6ZV9hZGRyZXNzKTogLi4uIGhlcmUuCgkocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogSGFuZGxlIHBhcnRzLnNlZy4KCShpeDg2X2V4cGFuZF9tb3ZlKTogVXNlIGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MuCgkoaXg4Nl9ydHhfY29zdHMpOiBIYW5kbGUgVU5TUEVDX1RQLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKE1BU0tfVExTX0RJUkVDVF9TRUdfUkVGUyk6IE5ldy4KCShUQVJHRVRfVExTX0RJUkVDVF9TRUdfUkVGUyk6IE5ldy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgdGxzLWRpcmVjdC1zZWctcmVmcy4KCShUQVJHRVRfVExTX0RJUkVDVF9TRUdfUkVGU19ERUZBVUxUKTogRGVmYXVsdC4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgbm9fc2VnX2FkZHJlc3Nfb3BlcmFuZC4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobGVhXzEpOiBVc2UgaXQuCgkobGVhXzFfcmV4NjQsIGxlYV8xX3pleHQsIGxlYV8yX3JleDY0KTogTGlrZXdpc2UuCgkobG9hZF90cF9zaSwgYWRkX3RwX3NpLCBsb2FkX3RwX2RpLCBhZGRfdHBfZGkpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmggKFRBUkdFVF9UTFNfRElSRUNUX1NFR19SRUZTX0RFRkFVTFQpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2xpbnV4NjQuaCAoVEFSR0VUX1RMU19ESVJFQ1RfU0VHX1JFRlNfREVGQVVMVCk6IE5ldy4KCSogZG9jL2ludm9rZS50ZXhpOiBBZGQgLW10bHMtZGlyZWN0LXNlZy1yZWZzLgoKMjAwMy0wNi0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChRTVRFU1RSVU5GTEFHUyk6IFNldCBmb3IgRGVqYUdOVSBlbXVsYXRpb24uCgkoUU1URVNUX0dQUF9URVNUUyk6IFVzZSAiZysrIiBieSBkZWZhdWx0LgoJKHN0YW1wLXFtdGVzdCk6IFR3ZWFrIGRhdGFiYXNlIGNyZWF0aW9uLgoJKFFNVEVTVF9ESVIvY29udGV4dCk6IFVwZGF0ZSBjb250ZXh0IGZpbGUgZm9ybWF0LgoJKHFtdGVzdC1nKyspOiBUd2VhayBjb21tYW5kLWxpbmUuCgoyMDAzLTA2LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAodmFyYXNtLm8pOiBEb24ndCBzZXQgLVduby1lcnJvci4KCSogcnM2MDAwL3QtcnM2MDAwICh2YXJhc20ubywgb3V0X29iamVjdF9maWxlKTogRG9uJ3QgY2xlYXIuCgoyMDAzLTA2LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGJvb3RzdHJhcC8zMTYzCgkqIGFjbG9jYWwubTQgKEFDX0ZVTkNfTU1BUF9BTllXSEVSRSwgQUNfRlVOQ19NTUFQX0ZJTEUpOiBEZWxldGUuCgkoZ2NjX0FDX0ZVTkNfTU1BUF9CTEFDS0xJU1QpOiBOZXcuCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIHN5cy9tbWFuLmggYW5kIG1tYXAgaW4gQUNfQ0hFQ0tfSEVBREVSUwoJYW5kIEFDX0NIRUNLX0ZVTkNTIGxpc3RzLCByZXNwZWN0aXZlbHkuICBVc2UKCWdjY19BQ19GVU5DX01NQVBfQkxBQ0tMSVNULCBub3QgQUNfRlVOQ19NTUFQX0FOWVdIRVJFIG5vcgoJQUNfRlVOQ19NTUFQX0ZJTEUuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwMy0wNi0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYXJtL2FvdXQuaCAoQVNNX09VVFBVVF9TS0lQKTogRml4IGNhc3QgZm9yIGZvcm1hdCBzcGVjaWZpZXIgd2FybmluZy4KCSogYXJtLmMgKGFybV9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBGaXggZm9ybWF0IHNwZWNpZmllcnMuCgkqIGFybS5oIChBUk1fUFJJTlRfT1BFUkFORF9BRERSRVNTKTogTGlrZXdpc2UuCgkqIG02OGsuYyAobTY4a19vdXRwdXRfbWlfdGh1bmspOiBVc2UgbW9yZSByZWFkYWJsZSAld2QgaW5zdGVhZCBvZgoJSE9TVF9XSURFX0lOVF9QUklOVF9ERUMuCgkqIHZheC5jICh2YXhfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRml4IGZvcm1hdCBzcGVjaWZpZXJzLgoKMjAwMy0wNi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNzZS5jIChmaW5kX2Jlc3RfYWRkcik6IENvbnNpZGVyIGJpbmFyeSBvcGVyYXRvcnMgZXZlbiBpZiBzZWNvbmQKCWFyZ3VtZW50IGlzIG5vdCBDT05TVF9JTlQuCgoyMDAzLTA2LTA0ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBkb2MvaW52b2tlLnRleGkgKG1heC1jc2UtcGF0aC1sZW5ndGgpOiBEb2N1bWVudC4KCjIwMDMtMDYtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChhbGlnbik6IFVzZSBBU01fT1VUUFVUXypBTElHTiBtYWNyb3MuCgoyMDAzLTA2LTA0ICBBbmRyZXcgUGluc2tpIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoUlM2MDAwX09VVFBVVF9CQVNFTkFNRSk6CglSZW1vdmUgc2VtaS1jb2xvbiBhdCB0aGUgZW5kIG9mIHRoZSBleHByZXNzaW9uLgoKMjAwMy0wNi0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaTM3MC5jIChtdnNfZnVuY3Rpb25fbmFtZV9sZW5ndGgpOiBGaXggc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoJKiBpMzcwLmggKG12c19mdW5jdGlvbl9uYW1lX2xlbmd0aCk6IExpa2V3aXNlLgoJKiBpOTYwLmggKENPTlNUQU5UX0FMSUdOTUVOVCk6IExpa2V3aXNlLgoJKiBtaXBzL2xpbnV4LmggKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBMaWtld2lzZS4KCSogcGEvcGEtcHJvLWVuZC5oIChBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKTogTGlrZXdpc2UuCgkqIHBhLmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBMaWtld2lzZS4KCSogcnM2MDAwL3hjb2ZmLmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBEZWxldGUgdW51c2VkCgl2YXJpYWJsZS4KCjIwMDMtMDYtMDQgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlnLmdjYzogUmVvcmdhbml6ZSAtLXdpdGgtY3B1IGxvZ2ljLiAgU2V0Cgljb25maWd1cmVfZGVmYXVsdF9vcHRpb25zIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBDUFUsIC0td2l0aC1jcHUsCgktLXdpdGgtYXJjaCwgLS13aXRoLXR1bmUsIC0td2l0aC1zY2hlZHVsZSwgLS13aXRoLWFiaSwgYW5kCgktLXdpdGgtZmxvYXQuICBDaGVjayBmb3IgbGVnYWwgdmFsdWVzIG9mIHZhcmlvdXMgb3B0aW9ucy4KCSogY29uZmlndXJlLmluOiBEZWZpbmUgY29uZmlndXJlX2RlZmF1bHRfb3B0aW9ucyBpbiBjb25maWdhcmdzLmguCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX0RFRkFVTFRfQVJDSF9QKQoJKFRBUkdFVF9ERUZBVUxUX0ZMT0FUX1ApOiBOZXcgbWFjcm9zLgoJKiBnY2MuYyAoZG9fb3B0aW9uX3NwZWMpOiBOZXcgZnVuY3Rpb24uCgkoc3RydWN0IGRlZmF1bHRfc3BlYywgb3B0aW9uX2RlZmF1bHRfc3BlY3MpOiBOZXcuCgkobWFpbik6IENhbGwgZG9fb3B0aW9uX3NwZWMuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oLCBjb25maWcvYXJtL2FybS5oLCBjb25maWcvaTM4Ni9pMzg2LmgsCgljb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9wYS9wYS5oLCBjb25maWcvcnM2MDAwL3JzNjAwMC5oLAoJY29uZmlnL3NwYXJjL3NwYXJjLmggKE9QVElPTl9ERUZBVUxUX1NQRUNTKTogRGVmaW5lLgoKCSogZG9jL2luc3RhbGwudGV4aTogVXBkYXRlIC0td2l0aC1jcHUgZG9jdW1lbnRhdGlvbi4gIE1lbnRpb24KCS0td2l0aC1hcmNoLCAtLXdpdGgtc2NoZWR1bGUsIC0td2l0aC10dW5lLCAtLXdpdGgtYWJpLCBhbmQKCS0td2l0aC1mbG9hdC4KCSogZG9jL3RtLnRleGkgKERyaXZlcik6IERvY3VtZW50IE9QVElPTl9ERUZBVUxUX1NQRUNTLgoKMjAwMy0wNi0wNCAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBjb25maWcuZ2NjOiBPbmx5IHByb2Nlc3MgLS13aXRoLWNwdSBsb2dpYyBpbiB0aGUgdGhpcmQgcGFzcy4KCjIwMDMtMDYtMDQgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlnLmdjYzogUmVvcmdhbml6ZSAtLXdpdGgtY3B1IHNlY3Rpb24uICBSZW1vdmUgYW4KCW9ic29sZXRlIGNvbW1lbnQgYWJvdXQgdGhlIGRlZmF1bHQgQ1BVIGZvciB4ODYtNjQuICBGaXgKCWEgdHlwbyBmb3IgdGhlIGVwOTMxMi4gIFVwZGF0ZSB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgUG93ZXJQQwoJQ1BVcy4gIFN1cHBvcnQgYSBsaW1pdGVkIHNldCBvZiBuZXcgLS13aXRoLWNwdSBvcHRpb25zCglmb3IgaTM4Ni4KCjIwMDMtMDYtMDQgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9jb21wbGV4X2Z1bmN0aW9uX3ZhbHVlKTogVW5wYWNrCgljb21wbGV4IG51bWJlcnMgPD0gMzIgYml0cyBpbnRvIHR3byByZWdpc3RlcnMuCgoyMDAzLTA2LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbHBoYS5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBGaXggZm9ybWF0IHNwZWNpZmllciB3YXJuaW5ncy4KCSogYWxwaGEvZWxmLmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBMaWtld2lzZS4KCSogYWxwaGEvdm1zLmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBMaWtld2lzZS4KCSogYXJtL2FvZi5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCk6IExpa2V3aXNlLgoJKiBhcm0vcGUuaCAoQVNNX09VVFBVVF9DT01NT04pOiBMaWtld2lzZS4KCSogYXZyLmggKEFTTV9PVVRQVVRfQ09NTU9OLCBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwsCglBU01fT1VUUFVUX1NLSVApOiBMaWtld2lzZS4KCSogYzR4LmggKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCk6IExpa2V3aXNlLgoJKiBkc3AxNnh4LmggKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCk6IExpa2V3aXNlLgoJKiBoODMwMC5oIChBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwsIEFTTV9PVVRQVVRfQ09NTU9OKToKCUxpa2V3aXNlLgoJKiBpMzcwLmggKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCk6IExpa2V3aXNlLgoJKiBpMzg2L2N5Z21pbmcuaCAoQVNNX09VVFBVVF9DT01NT04pOiBMaWtld2lzZS4KCSogaTM4Ni9kYXJ3aW4uaCAoQVNNX09VVFBVVF9DT01NT04pOiBMaWtld2lzZS4KCSogaTk2MC5oIChBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwpOiBMaWtld2lzZS4KCSogbTY4ay9ocDMyMC5oIChQUklOVF9PUEVSQU5EX0FERFJFU1MpOiBMaWtld2lzZS4KCSogbWNvcmUuaCAoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTik6IExpa2V3aXNlLgoJKiBwZHAxMS5oIChBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwpOiBMaWtld2lzZS4KCSogcHR4NC5oIChBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKTogTGlrZXdpc2UuCgkqIHNwYXJjL2ZyZWVic2QuaCAoQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMKTogTGlrZXdpc2UuCgkqIHN2cjMuaCAoQVNNX09VVFBVVF9DT01NT04pOiBMaWtld2lzZS4KCjIwMDMtMDYtMDQgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogYy1kZWNsLmMgKGNfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDbGVhciBpbnB1dF9maWxlX25hbWUKCXdoaWxlIGJ1aWxkaW5nIGNvbW1vbiBub2Rlcy4KCSogZHdhcmYyb3V0LmMgKGdlbl9jb21waWxlX3VuaXRfZGllLCBkd2FyZjJvdXRfZmluaXNoKToKCURvbid0IGFkZCB3b3JraW5nIGRpcmVjdG9yeSBmb3Igc3RyaW5ncyBsaWtlIDxidWlsdC1pbj4gLgoKMjAwMy0wNi0wNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi1pYm0tYWl4Kik6IE5hdGl2ZSBhcyBhbmQgbGQgcmVxdWlyZWQKCXRvIGJvb3RzdHJhcCBvbiBBSVggNUwuCgoyMDAzLTA2LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoaGFuZGxlX2NsZWFudXBfYXR0cmlidXRlKTogTmV3LgoJKGNfY29tbW9uX2F0dHJpYnV0ZXMpOiBBZGQgaXQuCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IEhvbm9yIHRoZSBjbGVhbnVwIGF0dHJpYnV0ZS4KCSogZG9jL2V4dGVuZC50ZXhpIChWYXJpYWJsZSBBdHRyaWJ1dGVzKTogRG9jdW1lbnQgaXQuCgoJKiB1bndpbmQtYy5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKExJQjJBRERFSCk6IEFkZCBpdC4KCSogY29uZmlnL3QtZGFyd2luLCBjb25maWcvdC1saW51eCwgY29uZmlnL3QtbGludXgtZ251bGliYzEsCgljb25maWcvaWE2NC90LWlhNjQ6IExpa2V3aXNlLgoKMjAwMy0wNi0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jICh0cmFtcG9saW5lc19jcmVhdGVkKTogTmV3IHZhcmlhYmxlLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBTZXQgaXQgd2hlbiBkb2luZyBJTklUSUFMSVpFX1RSQU1QT0xJTkUuCgkqIGZ1bmN0aW9uLmggKHRyYW1wb2xpbmVzX2NyZWF0ZWQpOiBBZGQuCgkqIGNvbmZpZy9zMzkwL2xpbnV4LmggKEFTTV9GSUxFX0VORCk6IERlZmluZS4KCSogY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIChBU01fRklMRV9FTkQpOiBEZWZpbmUuCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmggKEFTTV9GSUxFX0VORCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChBU01fRklMRV9FTkQpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChBU01fRklMRV9FTkQpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvcHBjLWFzbS5oOiBBZGQgLm5vdGUuR05VLXN0YWNrIG9uIHBvd2VycGMtbGludXguCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChBU01fRklMRV9FTkQpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKEFTTV9GSUxFX0VORCk6IERlZmluZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2FzbV9maWxlX2VuZCk6IFVzZSBTVUJUQVJHRVRfRklMRV9FTkQuCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmggKFNVQlRBUkdFVF9GSUxFX0VORCk6IERlZmluZS4KCSogY29uZmlnL2kzODYvbGludXg2NC5oIChTVUJUQVJHRVRfRklMRV9FTkQpOiBEZWZpbmUuCgpXZWQgSnVuICA0IDE4OjM5OjMzIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChtaW5faW5zbl9zaXplLCBrOF9hdm9pZF9qdW1wX21pc3NwcmVkaWN0cyk6IE5ldyBmdW5jdGlvbnMKCShpeDg2X3Jlb3JnKTogVXNlIGl0LgoJKiBpMzg2Lm1kIChhbGlnbik6IE5ldyBpbnNuIHBhdHRlcm4uCgoyMDAzLTA2LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl90eXBlX2NvbXBpbGF0aW9uKTogRml4IHR5cG8uCgoyMDAzLTA2LTA0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL2kzODYvbGludXguaCAoTk9fUFJPRklMRV9DT1VOVEVSUyk6IERlZmluZSB0byAxLgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKE5PX1BST0ZJTEVfQ09VTlRFUlMpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvbmV0YnNkLWVsZi5oIChOT19QUk9GSUxFX0NPVU5URVJTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKE5PX1BST0ZJTEVfQ09VVE5FUlMpOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi5oIChOT19QUk9GSUxFX0NPVU5URVJTKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKE5PX1BST0ZJTEVfQ09VTlRFUlMpOiBEZWZpbmUgdG8gMCBpZiBub3QgZGVmaW5lZC4KCShwcm9maWxlX2Z1bmN0aW9uKTogQWxsb3cgTk9fUFJPRklMRV9DT1VOVEVSUyB0byBiZSBub24tY29uc3RhbnQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF9wcm9maWxlX2hvb2spOiBMaWtld2lzZS4KCgkqIGNvbmZpZ3VyZS5pbiAocG93ZXJwYyotKiwgczM5MCotKik6IFNldCB0bHNfYXNfb3B0LgoJUGFzcyBpdCB0byAkZ2NjX2N2X2FzLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYWJpX25hbWUpOiBSZW1vdmUgaW5pdGlhbGl6ZXIuCgkocHJpbnRfb3BlcmFuZCk6IEFsbG93IFRBUkdFVF9BSVggdG8gYmUgbm9uLWNvbnN0YW50LgoJKHJzNjAwMF9haXhfZW1pdF9idWlsdGluX3Vud2luZF9pbml0LCByczYwMDBfZW1pdF9laF90b2NfcmVzdG9yZSk6CglEZWZpbmUgdW5jb25kaXRpb25hbGx5LgoJKHJzNjAwMF9lbGZfZGVjbGFyZV9mdW5jdGlvbl9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZWhfcmV0dXJuKTogQWxsb3cgVEFSR0VUX0FJWCB0byBiZQoJbm9uLWNvbnN0YW50LgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCBbIVJTNjAwMF9CSV9BUkNIXSAoVEFSR0VUXzY0QklUKTogRGVmaW5lCgl0byAxLgoJKERFRkFVTFRfQVJDSDY0X1AsIFJTNjAwMF9CSV9BUkNIX1ApOiBEZWZpbmUuCglbSU5fTElCR0NDMl0gKFRBUkdFVF82NEJJVCk6IERlZmluZSBiYXNlZCBvbiB3aGV0aGVyIF9fcG93ZXJwYzY0X18KCWlzIGRlZmluZWQuCgkoVEFSR0VUX0FJWCk6IERlZmluZSB0byAxIGlmIFRBUkdFVF82NEJJVC4KCShQUk9DRVNTT1JfREVGQVVMVCk6IFJlbW92ZS4KCShUQVJHRVRfUkVMT0NBVEFCTEUsIFJTNjAwMF9BQklfTkFNRSwgSU5WQUxJRF82NEJJVCwKCUlOVkFMSURfMzJCSVQsIFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogRGVmaW5lLgoJW1JTNjAwMF9CSV9BUkNIXSAoT1ZFUlJJREVfT1BUSU9OUywgQVNNX0ZJTEVfU1RBUlQpOiBEZWZpbmUuCgkoQVNNX0RFRkFVTFRfU1BFQywgQVNNX1NQRUMsIExJTktfT1NfTElOVVhfU1BFQyk6IERlZmluZSBmb3IgYm90aAoJLW0zMiBhbmQgLW02NC4KCShNVUxUSUxJQl9ERUZBVUxUUyk6IERlZmluZS4KCShTVUJTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBEZWZpbmUuCgkoQVNNX1NQRUMzMiwgQVNNX1NQRUM2NCwgQVNNX1NQRUNfQ09NTU9OKTogRGVmaW5lLgoJKFRBUkdFVF9UT0MpOiBEZWZpbmUgb25seSBpZiAhUlM2MDAwX0JJX0FSQ0guCgkoVEFSR0VUX05PX1RPQyk6IFJlbW92ZS4KCVshUlM2MDAwX0JJX0FSQ0hdIChUQVJHRVRfUkVMT0NBVEFCTEUsIFRBUkdFVF9FQUJJLAoJVEFSR0VUX1BST1RPVFlQRSk6IERlZmluZSB0byAwLgoJKE5PX1BST0ZJTEVfQ09VTlRFUlMpOiBEZWZpbmUgdG8gVEFSR0VUXzY0QklULgoJKFBST0ZJTEVfSE9PSyk6IE9ubHkgY2FsbCBvdXRwdXRfcHJvZmlsZV9ob29rIGlmIFRBUkdFVF82NEJJVC4KCShBREpVU1RfRklFTERfQUxJR04sIFJPVU5EX1RZUEVfQUxJR04pOiBBZGp1c3QgdG8gd29yayBwcm9wZXJseQoJaWYgIVRBUkdFVF82NEJJVC4KCShVU0VSX0xBQkVMX1BSRUZJWCk6IFJlbW92ZS4KCShKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBEZWZpbmUgdG8gVEFSR0VUXzY0QklULgoJKFNFVFVQX0ZSQU1FX0FERFJFU1NFUyk6IE9ubHkgY2FsbCByczYwMDBfYWl4X2VtaXRfYnVpbHRpbl91bndpbmRfaW5pdAoJaWYgVEFSR0VUXzY0QklULgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBIYW5kbGUgYm90aCAtbTMyIGFuZCAtbTY0LgoJKExJTktfT1NfTElOVVhfU1BFQzMyLCBMSU5LX09TX0xJTlVYX1NQRUM2NCk6IERlZmluZS4KCShTVEFSVEZJTEVfTElOVVhfU1BFQywgRU5ERklMRV9MSU5VWF9TUEVDKTogUmVtb3ZlLgoJKFRPQ19TRUNUSU9OX0FTTV9PUCk6IERlZmluZSBkZXBlbmRpbmcgb24gVEFSR0VUXzY0QklULgoJKE1JTklNQUxfVE9DX1NFQ1RJT05fQVNNX09QKTogTGlrZXdpc2UuCgkoU0laRV9UWVBFLCBQVFJESUZGX1RZUEUsIFdDSEFSX1RZUEUpOiBEZWZpbmUgZGVwZW5kaW5nIG9uCglUQVJHRVRfNjRCSVQuCgkoUlM2MDAwX0NBTExfR0xVRSk6IExpa2V3aXNlLgoJKFNBVkVfRlBfUFJFRklYLCBTQVZFX0ZQX1NVRkZJWCwgUkVTVE9SRV9GUF9QUkVGSVgsCglSRVNUT1JFX0ZQX1NVRkZJWCk6IExpa2V3aXNlLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBSZW1vdmUuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fU0laRSwgQVNNX09VVFBVVF9TT1VSQ0VfTElORSwKCURCWF9PVVRQVVRfQlJBQywgREJYX09VVFBVVF9ORlVOKTogT25seSBvdXRwdXQgZG90IGJlZm9yZSBmdW5jdGlvbgoJbmFtZSBpZiBUQVJHRVRfNjRCSVQuCgkoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCk6IEhhbmRsZSBib3RoIFRBUkdFVF82NEJJVCBhbmQKCSFUQVJHRVRfNjRCSVQuCgkoQVNNX09VVFBVVF9SRUdfUFVTSCwgQVNNX09VVFBVVF9SRUdfUE9QKTogUmVtb3ZlIHVuZGVmcy4KCShBU01fUFJFRkVSUkVEX0VIX0RBVEFfRk9STUFUKTogVGFrZSBUQVJHRVRfNjRCSVQgaW50byBhY2NvdW50LgoJKERSQUZUX1Y0X1NUUlVDVF9SRVQpOiBEZWZpbmUuCgkoU0lHTkFMX0ZSQU1FU0laRSk6IE5ldyBlbnVtIHZhbHVlLgoJKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9kZWZhdWx0NjQuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tMzIgYW5kIC1tNjQKCW9wdGlvbnMuCgkoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBJZiByczYwMDBfYWJpX25hbWUgaXMgTlVMTCwgc2V0IGl0Cgl0byBSUzYwMDBfQUJJX05BTUUuICBPbmx5IGRpc2FsbG93IG1peGluZyBvZiAtZlBJQyB3aXRoIC1tY2FsbC1haXhkZXNjCglpZiAhVEFSR0VUXzY0QklULgoJWyFSUzYwMDBfQklfQVJDSF0gKFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogRGVmaW5lLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBVc2UgcnM2MDAwX2VsZl9kZWNsYXJlX2Z1bmN0aW9uX25hbWUKCWZ1bmN0aW9uLgoJKFRBUkdFVF9PU19TWVNWX0NQUF9CVUlMVElOUyk6IERlZmluZS4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogVXNlIGl0LgoJKENQUF9TWVNWX1NQRUMpOiBSZW1vdmUuCgkoQ1BQX1NQRUMpOiBSZW1vdmUgY3BwX3N5c3YuCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogUmVtb3ZlIGNwcF9zeXN2LgoJQWRkIFNVQlNVQlRBUkdFVF9FWFRSQV9TUEVDUy4KCShTVUJTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvYmlhcmNoNjQuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfZWxmX2RlY2xhcmVfZnVuY3Rpb25fbmFtZSk6CglOZXcgcHJvdG90eXBlLgoJKiBjb25maWcvcnM2MDAwL3gtbGludXg2NDogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvdC1saW51eDY0OiBCdWlsZCAtbTY0LCAtbTMyIGFuZCAtbTMyIC1tc29mdC1mbG9hdAoJbXVsdGlsaWJzLgoJKiBjb25maWcvcnM2MDAwL2VhYmktY2kuYXNtOiBQcm90ZWN0IHdpdGggI2lmbmRlZiBfX3Bvd2VycGM2NF9fLgoJKiBjb25maWcvcnM2MDAwL2VhYmktY24uYXNtOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC90cmFtcC5hc206IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3NvbC1jaS5hc206IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3NvbC1jbi5hc206IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKFRBUkdFVF82NEJJVCk6IERlZmluZSB0byAwLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBVc2UgVEFSR0VUX09TX1NZU1ZfQ1BQX0JVSUxUSU5TLgoJKiBjb25maWcvcnM2MDAwL3BwYy1hc20uaDogTW92ZSBfX3Bvd2VycGM2NF9fIHNlY3Rpb24gYmVmb3JlCglfQ0FMTF9BSVhERVNDIHNlY3Rpb24uCgkqIGNvbmZpZy5nY2MgKHBvd2VycGM2NC0qLWxpbnV4Kik6IENvbmZpZ3VyZSBhIGJpLWFyY2ggY29tcGlsZXIsCglkZWZhdWx0aW5nIHRvIC1tNjQgdW5sZXNzIC0td2l0aC1jcHU9IGlzIG9uZSBvZiB0aGUgMzItYml0IENQVXMKCW9yIGRlZmF1bHQzMi4KCjIwMDMtMDYtMDQgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY29uZmlnLmdjYzogUmV2ZXJ0IGFjY2lkZW50YWxseSBjb21taXR0ZWQgQVJNIGNoYW5nZXMuCgoyMDAzLTA2LTA0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGRjb25zdHBpLCBkY29uc3RlKTogTmV3IG1hdGhlbWF0aWNhbCBjb25zdGFudHMuCgkoaW5pdF9idWlsdGluX2Rjb25zdHMpOiBOZXcgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSBkY29uc3RwaQoJYW5kIGRjb25zdGUuCgkoZm9sZF9idWlsdGluKTogT3B0aW1pemUgZXhwKDEuMCkgPSBlLiAgRXZhbHVhdGUgZXhwKHgpIGF0Cgljb21waWxlIHRpbWUgd2l0aCAtZmZhc3QtbWF0aCB3aGVuIHggaXMgYW4gaW50ZWdlciBjb25zdGFudC4KCU9wdGltaXplIHRhbigwLjApID0gMC4wLiAgT3B0aW1pemUgYXRhbigwLjApID0gMC4wLAoJYXRhbigxLjApID0gcGkvNCBhbmQgdGFuKGF0YW4oeCkpID0geCB3aXRoIC1mZmFzdC1tYXRoLgoKMjAwMy0wNi0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEF2b2lkIGNhbGxpbmcgcHVyZSBvciBjb25zdCBmdW5jdGlvbnMKCXdoZW4gdGhlIHJlc3VsdCBpcyBpZ25vcmVkIChvciB2b2lkKSBhbmQgbm9uZSBvZiB0aGUgYXJndW1lbnRzCglhcmUgdm9sYXRpbGUuICBNb3ZlIHdhcm5pbmcgZGlhZ25vc3RpYyBlYXJsaWVyIGluIGZ1bmN0aW9uLgoKMjAwMy0wNi0wNCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogc3lzdGVtLmg6IERvIG5vdCBwb2lzb24gVERFU0NfU0VDVElPTl9BU01fT1AsCglSREFUQV9TRUNUSU9OX0FTTV9PUCBhbmQgU1VCVEFSR0VUX1BST0xPR1VFLgoKMjAwMy0wNi0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZmluYWwuYyAoYXNtX2ZwcmludGYpOiBVcGRhdGUgY29tbWVudHMsIGFjY2VwdCAiLSsgIzAiIGZsYWdzLAoJb3B0aW1pemUgJyUnIGNhc2UsIGhhbmRsZSAlYywgZG9uJ3QgYWNjZXB0ICVwLCAlZSwgJWYgb3IgJWcsCgloYW5kbGUgJWxsLCBvcHRpbWl6ZSByZWd1bGFyIGNoYXJhY3RlciBjYXNlLgoKMjAwMy0wNi0wNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogTWFrZWZpbGUuaW4gKGNzZS5vKTogQWRkIHBhcmFtcy5oIGRlcGVuZGVuY3kuCgkqIGNzZS5jOiBJbmNsdWRlIHBhcmFtcy5oLgoJKFBBVEhMRU5HVEgpOiBSZW1vdmVkLgoJKHN0cnVjdCBjc2VfYmFzaWNfYmxvY2tfZGF0YSk6IE1ha2UgcGF0aCBhcnJheSBkeW5hbWljLgoJKGNzZV9lbmRfb2ZfYmFzaWNfYmxvY2spOiBVc2UgUEFSQU1fTUFYX0NTRV9QQVRIX0xFTkdUSCBpbnN0ZWFkCglvZiBQQVRITEVOR1RILgoJKGNzZV9tYWluLCBjc2VfYmFzaWNfYmxvY2spOiBBbGxvY2F0ZSBwYXRoIGFycmF5LgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfQ1NFX1BBVEhfTEVOR1RIKTogTmV3LgoKV2VkIEp1biAgNCAwOTo0OToyMSBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl9yZW9yZyk6IFJlcGxhY2UgdGhlIGp1bXAgaW5zdGVhZCBvZiBhZGRpbmcgbm9wLgoJKiBpMzg2Lm1kIChVTlNQRUNfUkVQKTogTmV3IGNvbnN0YW50LgoJKHJldHVybl9pbnRlcm5hbF9sb25nKTogTmV3IHBhdHRlcm4uCgoyMDAzLTA2LTA0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMTAxOAoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfdjhwbHVzX3NoaWZ0KTogVXNlIHdoaWNoX2FsdGVybmF0aXZlCgljb25zaXN0ZW50bHkgdG8gZGVjaWRlIHdoZXRoZXIgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIgaXMgcmVhbGx5CglyZXF1aXJlZC4KCjIwMDMtMDYtMDQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEwODc2CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChDT05TVF9PS19GT1JfTEVUVEVSKTogQWRkCgluZXcgJ08nIGNvbnN0cmFpbnQgZm9yIGNvbnN0YW50IDQwOTYuCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGFkZGRpMyBleHBhbmRlcik6IENhbm9uaWNhbGl6ZSBwYXR0ZXJuLgoJRG8gbm90IHRyYW5zZm9ybSBpbnRvIE1JTlVTIGluc24gZm9yIGNvbnN0YW50IDQwOTYuCgkoKmFkZGRpM19zcDY0IGluc24pOiBDYW5vbmljYWxpemUgcGF0dGVybi4gQWRkIG5ldyBhbHRlcm5hdGl2ZQoJZm9yIGNvbnN0YW50IDQwOTYgYXMgdGhpcmQgb3BlcmFuZC4KCShhZGRzaTMgZXhwYW5kZXIpOiBSZW1vdmUuCgkoKmFkZHNpMyBpbnNuKTogUmVuYW1lIGludG8gJ2FkZHNpMycuIENhbm9uaWNhbGl6ZSBwYXR0ZXJuLiBBZGQKCW5ldyBhbHRlcm5hdGl2ZSBmb3IgY29uc3RhbnQgNDA5NiBhcyB0aGlyZCBvcGVyYW5kLgoJKHN1YmRpMyBleHBhbmRlcik6IERvIG5vdCB0cmFuc2Zvcm0gaW50byBQTFVTIGluc24gZm9yIGNvbnN0YW50IDQwOTYuCgkoKnN1YmRpM19zcDY0IGluc24pOiBBZGQgbmV3IGFsdGVybmF0aXZlIGZvciBjb25zdGFudCA0MDk2IGFzIHRoaXJkCglvcGVyYW5kLgoJKHN1YnNpMyBleHBhbmRlcik6IFJlbW92ZS4KCSgqc3Vic2kzIGluc24pOiBSZW5hbWUgaW50byAnc3Vic2kzJy4gQWRkIG5ldyBhbHRlcm5hdGl2ZSBmb3IKCWNvbnN0YW50IDQwOTYgYXMgdGhpcmQgb3BlcmFuZC4KCSogZG9jL21kLnRleGkgKE1hY2hpbmUgQ29uc3RyYWludHMpOiBEb2N1bWVudCBuZXcgJ08nIGNvbnN0cmFpbnQgZm9yCgl0aGUgU1BBUkMgcG9ydC4KCjIwMDMtMDYtMDMgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy90LWxpbnV4NjQgKENSVFNUVUZGX1RfQ0ZMQUdTX1MpOiBEZWZpbmUuCgoyMDAzLTA2LTA0ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWcvaTM4Ni91d2luLmg6IFJlbW92ZSBTVUJUQVJHRVRfUFJPTE9HVUUuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogRG8gbm90IHVzZQoJU1VCVEFSR0VUX1BST0xPR1VFLgoKCSogc3lzdGVtLmg6IFBvaXNpb24gU1VCVEFSR0VUX1BST0xPR1VFLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmg6IFJlbW92ZSB1bnVzZWQgcmRhdGVfc2VjdGlvbiBwcm90b3R5cGUuCgoJKiBvdXRwdXQuaDogUmVtb3ZlIFRERVNDX1NFQ1RJT05fQVNNX09QIGFuZCBSREFUQV9TRUNUSU9OX0FTTV9PUAoJZGVwZW5kZW5kIGNvZGUuCgoJKiBzeXN0ZW0uaDogUG9pc29uIFRERVNDX1NFQ1RJT05fQVNNX09QIGFuZCBSREFUQV9TRUNUSU9OX0FTTV9PUC4KCgkqIHN5c3RlbS5oOiBQb2lzb24gSU5TTl9DQUNIRV9ERVBUSCwgSU5TTl9DQUNIRV9TSVpFIGFuZAoJSU5TTl9DQUNIRV9MSU5FX1dJRFRILgoKCSogbGliZ2NjMi5jIChJTlNOX0NBQ0hFX1BMQU5FX1NJWkUpOiBSZW1vdmVkLgoJKF9fY2xlYXJfY2FjaGUpOiBSZW1vdmUgY29kZSBkZXBlbmRlbmQgb24gSU5TTl9DQUNIRV9ERVBUSCwKCUlOU05fQ0FDSEVfU0laRSBhbmQgSU5TTl9DQUNIRV9MSU5FX1dJRFRILgoKCSogZG9jL3RtLnRleGkgKFRyYW1wb2xpbmVzKTogUmVtb3ZlIElOU05fQ0FDSEVfREVQVEgsCglJTlNOX0NBQ0hFX1NJWkUgYW5kIElOU05fQ0FDSEVfTElORV9XSURUSC4KCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IFJlbW92ZSB1c2FnZSBvZiBEQlhfT1VUUFVUX0VOVU0uCgkoZGJ4b3V0X3N5bWJvbCk6IFJlbW92ZSB1c2FnZSBvZiBEQlhfT1VUUFVUX0NPTlNUQU5UX1NZTUJPTC4KCShkYnhvdXRfYmxvY2spOiBSZW1vdmUgdXNhZ2Ugb2YgREJYX09VVFBVVF9DQVRDSC4KCShkYnhvdXRfYmxvY2spOiBSZW1vdmUgdXNhZ2Ugb2YgREJYX0xCUkFDX0ZJUlNULgoJKGRieG91dF9zb3VyY2VfZmlsZSk6IFJlbW92ZSB1c2FnZSBvZiBEQlhfT1VUUFVUX1NPVVJDRV9GSUxFTkFNRS4KCShkYnhvdXRfaW5pdCk6IFJlbW92ZSB0ZXN0IGZvciBEQlhfV09SS0lOR19ESVJFQ1RPUlkuCgoJKiBkb2MvdG0udGV4aSAoREJYIE9wdGlvbnMpOiBEbyBub3QgZG9jdW1lbnQgREJYX0xCUkFDX0ZJUlNULAoJREJYX09VVFBVVF9TT1VSQ0VfRklMRU5BTUUgYW5kIERCWF9PVVRQVVRfRU5VTSBhbmQKCURCWF9XT1JLSU5HX0RJUkVDVE9SWS4KCgkqIHN5c3RlbS5oOiBQb2lzb24gREJYX0xCUkFDX0ZJUlNULCBEQlhfT1VUUFVUX0VOVU0sCglEQlhfT1VUUFVUX1NPVVJDRV9GSUxFTkFNRSBhbmQgREJYX1dPUktJTkdfRElSRUNUT1JZLgoKCSogY29uZmlnL2Zydi9mcnYtcHJvdG9zLmg6IFJlbW92ZSB1bnVzZWQgY29uc3Rfc2VjdGlvbgoJZGVjbGFyYXRpb24uCgkqIGNvbmZpZy92YXgvdmF4LXByb3Rvcy5oOiBMaWtld2lzZS4KCgkqIG91dHB1dC5oOiBSZW1vdmUgQ09OU1RfU0VDVElPTl9BU01fT1AgdXNhZ2UuCgoJKiBzeXN0ZW0uaDogUG9pc29uIENPTlNUX1NFQ1RJT05fQVNNX09QLgoKCSogY3J0c3R1ZmYuYyAoX19kb19nbG9iYWxfZHRvcnNfYXV4KTogUmVtb3ZlIHVzYWdlIG9mCglDUlRfR0VUX1JGSUJfVEVYVC4KCShmcmFtZV9kdW1teSk6IExpa2V3aXNlLgoJKiB1bndpbmQtZHcyLWZkZS1nbGliYy5jIChfVW53aW5kX0l0ZXJhdGVQaGRyQ2FsbGJhY2spOiBMaWtld2lzZS4KCSogc3lzdGVtLmg6IFBvaXNvbiBDUlRfR0VUX1JGSUJfVEVYVC4KCgkqIGNvbGxlY3QyLmMgKGlzX2N0b3JfZHRvcik6IFJlbW92ZSBDRlJPTlRfTE9TU0FHRSBkZXBlbmRlbmQgY29kZS4KCgkqIGZpeC1oZWFkZXIuYzogUmVtb3ZlIEFERF9NSVNTSU5HX0VYVEVSTl9DIGRlcGVuZGVuZCB2YXJpYWJsZXMuCgkod3JpdGVfbGJyYWMpOiBSZW1vdmUgQUREX01JU1NJTkdfRVhURVJOX0MgZGVwZW5kZW5kIGNvZGUuCgkocmVjb2duaXplZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHJlYWRfc2Nhbl9maWxlKTogTGlrZXdpc2UuCgoyMDAzLTA2LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfYmlub3ApOiBPcHRpbWl6ZSBjb21wbGV4IG11bHRpcGxpY2F0aW9uIGZvcgoJdGhlIGNhc2Ugb2Ygc3F1YXJpbmcgYSBjb21wbGV4IGFyZ3VtZW50LgoKMjAwMy0wNi0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBvcHRhYnMuYyAoZXhwYW5kX2Jpbm9wKTogQXR0ZW1wdCB0byByZXVzZSBwc2V1ZG9zIGZvciBkdXBsaWNhdGUKCW5vbi12b2xhdGlsZSBvcGVyYW5kcyBvZiBiaW5hcnkgb3BlcmF0aW9ucy4KCShwcmVwYXJlX2NtcF9pbnNuKTogTGlrZXdpc2UuCgoyMDAzLTA2LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHZhcmFzbS5jIChmb3JjZV9jb25zdF9tZW0pOiBIYW5kbGUgYWxpZ25tZW50IG9mIGNvbnN0YW50cyBub3QKCXJlcHJlc2VudGFibGUgYXMgYSB0eXBlIGluIHRoZSBmcm9udC1lbmQgbGFuZ3VhZ2UuCgoyMDAzLTA2LTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZmxvdy5jIChpbml0aWFsaXplX3VuaW5pdGlhbGl6ZWRfc3VicmVncyk6IFVzZQoJZW1pdF9tb3ZlX2luc24gaW5zdGVhZCBvZiBlbWl0dGluZyBhIGhhcmRjb2RlZCBtb3ZlLgoKMjAwMy0wNi0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfYWJzX25vanVtcCk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGV4cGFuZF9hYnMpOiAuLi4gaGVyZS4KCSogb3B0YWJzLmggKGV4cGFuZF9hYnNfbm9qdW1wKTogRGVjbGFyZS4KCSogaWZjdnQuYzogKG5vY2VfdHJ5X2Ficyk6IFVzZSBleHBhbmRfYWJzX25vanVtcC4KCSogTWFrZWZpbGUuaW4gKGlmY3Z0Lm8pOiBEZXBlbmQgb24gb3B0YWJzLmguCgoyMDAzLTA2LTAzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZHdhcmYyb3V0LmMgKERFQlVHX1NUUl9TRUNUSU9OX0ZMQUdTKTogSGVlZCBmbGFnX21lcmdlX2NvbnN0YW50cy4KCjIwMDMtMDYtMDMgIEphc29uIFRob3JwZSAgPHRob3JwZWpAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWcuZ2NjIChkZWZhdWx0X3VzZV9jeGFfYXRleGl0KTogTmV3IHZhcmlhYmxlLCBkZWZhdWx0cyB0byBuby4KCSgqLSotbmV0YnNkWzItOV0qIHwgKi0qLW5ldGJzZGVsZlsyLTldKik6IFNldCBkZWZhdWx0X3VzZV9jeGFfYXRleGl0Cgl0byB5ZXMuCgkqIGNvbmZpZ3VyZS5pbjogQWxsb3cgZGVmYXVsdF91c2VfY3hhX2F0ZXhpdCB0byBkZXRlcm1pbmUgdGhlCgl2YWx1ZSBvZiBERUZBVUxUX1VTRV9DWEFfQVRFWElUIGlmIG5vdCBleHBsaWNpdGx5IGVuYWJsZWQgb3IKCWRpc2FibGVkLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA2LTAzICBEb3VnbGFzIEIgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVEVYSV9HQ0NfRklMRVMpOiBSZW1vdmUgdm1zLnRleGkgZW50cnkuCgkqIGRvYy9nY2MudGV4aTogUmVtb3ZlIHZtcy50ZXhpIHNlY3Rpb24uCgkqIGRvYy92bXMudGV4aTogUmVtb3ZlIG9ic29sZXRlIGZpbGUuCgoyMDAzLTA1LTIzICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoaW5oaWJpdF9saWJjKTogRG9uJ3QgZGVmaW5lIHdoZW4gY29uZmlndXJpbmcKCXdpdGggLS13aXRoLW5ld2xpYiAtLXdpdGgtaGVhZGVycy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogdC1zaDogUmVtb3ZlIExJQjJGVU5DU19FWFRSQSBhbmQgZW1iZWQtYmIuYyBydWxlcy4KCjIwMDMtMDYtMDMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfYXNfaGlkZGVuKTogRGlzYWJsZSAuaGlkZGVuIGNvbXBsZXRlbHkgb24KCUlSSVggNiB3aXRob3V0IEdOVSBsZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wNi0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGVtaXRfbW92ZV9pbnNuXzEpOiBVc2UgZW1pdF9tb3ZlX2luc24gdG8gbW92ZSB0aGUgcGFydHMKCW9mIGEgY29tcGxleCBudW1iZXIgcmF0aGVyIHRoYW4gaW52b2tlIG1vdl9vcHRhYiBkaXJlY3RseS4KCjIwMDMtMDYtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X3NldCk6IERvbid0IG1vdmUgYSBzdWJyZWcgaW4gU0VUX1NSQyB0bwoJU0VUX0RFU1QgaWYgV09SRF9SRUdJU1RFUl9PUEVSQVRJT05TIGlzIG5vdCBkZWZpbmVkLgoKMjAwMy0wNi0wMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvaTM4Ni94ODYtNjQuaDogUmVtb3ZlIHR3byB0YXJnZXQtaW5kZXBlbmRlbnQgY29tbWVudHM7CgkgcmVwbGFjZSAiR05VIENDIiB3aXRoICJHQ0MiLgoKMjAwMy0wNi0wMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L3QtZnJ2IChFWFRSQV9IRUFERVJTKTogUmVtb3ZlIG1lZGlhLmgKCjIwMDMtMDYtMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9DQUJTLCBCVUlMVF9JTl9DQUJTRiwgQlVJTFRfSU5fQ0FCU0wpOgoJTmV3IGJ1aWx0aW5zIHJlcHJlc2VudGluZyBJU08gQzk5J3MgY2FicywgY2Fic2YgYW5kIGNhYnNsLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9mYWJzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluX2NhYnMpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW4pOiBFeHBhbmQgQlVJTFRfSU5fRkFCU3ssRixMfSBhbmQgQlVJTFRfSU5fQ0FCU3ssRixMfQoJdXNpbmcgZXhwYW5kX2J1aWx0aW5fZmFicyBhbmQgZXhwYW5kX2J1aWx0aW5fY2FicyByZXNwZWN0aXZlbHkuCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IG5ldyBjYWJzLCBjYWJzZiBhbmQgY2Fic2wgYnVpbHRpbnMuCgoyMDAzLTA2LTAzICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBTcGxpdCBjb21wbGV4IGFyZ3VtZW50cy4KCgkqIGRvYy90bS50ZXhpIChTUExJVF9DT01QTEVYX0FSR1MpOiBEb2N1bWVudC4KCgkqIGV4cHIuaCAoU1BMSVRfQ09NUExFWF9BUkdTKTogRGVmaW5lLgoJKHNwbGl0X2NvbXBsZXhfdHlwZXMpOiBQcm90b2l6ZS4KCShzcGxpdF9jb21wbGV4X3ZhbHVlcyk6IFByb3RvaXplLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBTcGxpdCBjb21wbGV4IGFyZ3VtZW50cyBvbiBhcmNoaXRlY3R1cmVzCgl0aGF0IHJlcXVpcmUgaXQuCgkoc3BsaXRfY29tcGxleF92YWx1ZXMpOiBOZXcuCgkoc3BsaXRfY29tcGxleF90eXBlcyk6IE5ldy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9saWJjYWxsX3ZhbHVlKTogTmV3LgoJKHJzNjAwMF9mdW5jdGlvbl92YWx1ZSk6IEhhbmRsZSBjb21wbGV4IHZhbHVlcyBvbiBBSVguCgkocnM2MDAwX2NvbXBsZXhfZnVuY3Rpb25fdmFsdWUpOiBOZXcuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX2xpYmNhbGxfdmFsdWUpOiBQcm90b2l6ZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKExJQkNBTExfVkFMVUUpOiBDYWxsIGZ1bmN0aW9uLgoJKFNQTElUX0NPTVBMRVhfQVJHUyk6IE5ldy4KCjIwMDMtMDYtMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChIQVZFX0xEX1BJRSk6IENoZWNrIGZvciBsZCAtcGllLgoJKiBjb25maWcuaW46IFJlYnVpbHQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogdG9wbGV2LmMgKGZsYWdfcGllLCBmbGFnX3NobGliKTogTmV3IHZhcmlhYmxlcy4KCShmX29wdGlvbnMpOiBBZGQgLWZwaWUgYW5kIC1mUElFLgoJKHBhcnNlX29wdGlvbnNfYW5kX2RlZmF1bHRfZmxhZ3MpOiBTZXQgZmxhZ19waWMgaWYgLWZwaWUvLWZQSUUuCglTZXQgZmxhZ19zaGxpYiBpZiBmbGFnX3BpYyBhbmQgbm90IC1mcGllLy1mUElFLgoJKiBmbGFncy5oIChmbGFnX3BpYywgZmxhZ19zaGxpYik6IEFkZC4KCSogdmFyYXNtLmMgKGRlZmF1bHRfYmluZHNfbG9jYWxfcCk6IFVzZSBmbGFnX3NobGliIGluc3RlYWQgb2YKCWZsYWdfcGljLgoJKiBnY2MuYyAoTElOS19QSUVfU1BFQyk6IERlZmluZS4KCShMSU5LX0NPTU1BTkRfU1BFQyk6IFVzZSBMSU5LX1BJRV9TUEVDLgoJKG9wdGlvbl9tYXApOiBBZGQgLS1waWUgLT4gLXBpZSBtYXBwaW5nLgoJKiBjb25maWcvc29sMi5oIChBU01fU1BFQyk6IEhhbmRsZSAtZnBpZSB0aGUgc2FtZSB3YXkgYXMgLWZwaWMKCWFuZCAtZlBJRSB0aGUgc2FtZSB3YXkgYXMgLWZQSUMuCgkqIGNvbmZpZy9vcGVuYnNkLmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vbGludXgtZ2FzLmggKFNVQlRBUkdFVF9DUFBfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL3NlbWkuaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9uZXRic2QtZWxmLmggKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvZnJlZWJzZC1zcGVjLmggKEZCU0RfQ1BQX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvYmVvcy1lbGYuaCAoQ0MxX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvZnJlZWJzZC1hb3V0LmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmggKENQUF9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL25ldGJzZC5oIChBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9vcGVuYnNkLmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbGludXguaCAoU1VCVEFSR0VUX0NQUF9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL29wZW5ic2QuaCAoU1VCVEFSR0VUX0FTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS1saW51eC5oIChDUFBfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvbmV0YnNkLWFvdXQuaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChBU01fU1BFQywgQ1BQX1NZU1ZfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3Z4d29ya3MuaCAoQ1BQX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKENQUF9TVUJUQVJHRVRfU1BFQywgQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoQ1BQX1NVQlRBUkdFVF9TUEVDLCBBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwNjQtZWxmLmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zeXN2NC5oIChBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbmV0YnNkLWVsZi5oIChBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvb3BlbmJzZDY0LmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jcmlzL2xpbnV4LmggKENSSVNfQVNNX1NVQlRBUkdFVF9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9saW51eC5oIChTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDKTogSGFuZGxlIC1waWUuCglTaW1wbGlmeS4KCSogY29uZmlnL2FscGhhL2VsZi5oIChTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2xpbnV4NjQuaCAoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9saW51eC5oIChTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLXBpZSwgLWZwaWUgYW5kIC1mUElFIG9wdGlvbnMuCgoyMDAzLTA2LTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbWNweSk6IFJlbW92ZSBlbmRwIGFyZ3VtZW50IGFuZCBlbmRwCgkhPSAwIGhhbmRsaW5nLiAgUGFzcyAwIHRvIHN0b3JlX2J5X3BpZWNlcy4KCShleHBhbmRfYnVpbHRpbl9tZW1wY3B5KTogQWRkIGVuZHAgYXJndW1lbnQuICBEb24ndCBjYWxsCglleHBhbmRfYnVpbHRpbl9tZW1jcHksIGNhbGwgc3RvcmVfYnlfcGllY2VzIHJlc3AuIG1vdmVfYnlfcGllY2VzCglkaXJlY3RseS4gIElmIGlnbm9yaW5nIHJlc3VsdCwgb25seSBkbyBleHBhbmRfY2FsbC4KCShleHBhbmRfYnVpbHRpbl9zdHBjcHkpOiBMaWtld2lzZS4gIENhbGwgZXhwYW5kX2J1aWx0aW5fbWVtcGNweQoJb3RoZXJ3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jcHksIGV4cGFuZF9idWlsdGluX21lbXNldCk6IEFkanVzdAoJc3RvcmVfYnlfcGljZXMgY2FsbGVycy4KCShleHBhbmRfYnVpbHRpbik6IEFkanVzdCBleHBhbmRfYnVpbHRpbl9tZW1jcHkgYW5kCglleHBhbmRfYnVpbHRpbl9tZW1wY3B5IGNhbGxlcnMuCgkqIGV4cHIuYyAoY2FuX21vdmVfYnlfcGllY2VzKTogTmV3IGZ1bmN0aW9uLgoJKG1vdmVfYnlfcGllY2VzKTogQWRkIGVuZHAgYXJndW1lbnQsIHJldHVybiB0byByZXNwLiBtZW1vcnkgYXQgZW5kCglvciBvbmUgYnl0ZSBlYXJsaWVyIGRlcGVuZGluZyBvbiBlbmRwLgoJKHN0b3JlX2J5X3BpZWNlcyk6IExpa2V3aXNlLgoJKGVtaXRfYmxvY2tfbW92ZSk6IEFkanVzdCBjYWxsIHRvIG1vdmVfYnlfcGllY2VzLgoJKGVtaXRfcHVzaF9pbnNuKTogQWRqdXN0IG1vdmVfYnlfcGllY2VzIGNhbGxlci4KCSogZXhwci5oIChjYW5fbW92ZV9ieV9waWVjZXMpOiBOZXcgcHJvdG90eXBlLgoJKHN0b3JlX2J5X3BpZWNlcyk6IEFkanVzdCBwcm90b3R5cGVzLgoJKiBydGwuaCAobW92ZV9ieV9waWVjZXMpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGV4cGFuZF9ibG9ja19tb3ZlKTogQWRqdXN0IG1vdmVfYnlfcGllY2VzCgljYWxsZXIuCgoyMDAzLTA2LTAzICBCZW4gRWxsaXN0b24gIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBkb2MvbWQudGV4aSAoUHJvY2Vzc29yIHBpcGVsaW5lIGRlc2NyaXB0aW9uKTogSW1wcm92ZSB3b3JkaW5nLgoKMjAwMy0wNi0wMyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBOZXcsIHB1bGxlZCBvdXQgb2YKCWNfY29tbW9uX2RlY29kZV9vcHRpb24uICBTdWJzdGl0dXRlIHVzZXMgb2YgYXJndi4KCShjX2NvbW1vbl9kZWNvZGVfb3B0aW9uKTogQnJva2VuIGludG8gdHdvLgoKMjAwMy0wNi0wMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9jb21wbGV4X2NvbnN0YW50X3BhcnQpOiAgUmVtb3ZlIHVubmVjZXNzYXJ5Cgl0ZXN0IG9mIFRSRUVfQ09OU1RBTlRfUE9PTF9BRERSRVNTX1AuCgoyMDAzLTA2LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtaXBzLmM6IERvbid0IGluY2x1ZGUgb3V0cHV0LmggdHdpY2UuCgkqIHN0b3JteTE2LmM6IExpa2V3aXNlLgoJKiB4dGVuc2EuYzogTGlrZXdpc2UuCgkqIG91dHB1dC5oOiBQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUgaW5jbHVzaW9uLgoKMjAwMy0wNi0wMiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5oIChPTERfQVJHX01PREUpOiBOZXcgbWFjcm8uCgkoRlVOQ1RJT05fQVJHX0FEVkFOQ0UsIEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IFVzZSBpdC4KCShGVU5DVElPTl9BUkdfMSk6IEJyZWFrIG91dCBvZjoKCShGVU5DVElPTl9BUkcpLiAgVXNlIE9MRF9BUkdfTU9ERS4KCjIwMDMtMDYtMDIgIEthenVoaXJvIEluYW9rYSAgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbT4KCgkqIGdjYy9jb25maWcuZ2NjIEFkZCBzdXBwb3J0IG11bHRpbGliIHBhcnRzIGZvciBtMzJyeCBwcm9jZXNzb3IuCgoyMDAzLTA2LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYy1vcHRpb25zLmMpOiBQYXNzIGluICQoQVdLKSB0byBvcHRzLnNoLgoJKG1vc3RseWNsZWFuKTogRGVsZXRlIGMtb3B0aW9ucy5jIGFuZCBjLW9wdGlvbnMuaC4KCjIwMDMtMDYtMDIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMtb3B0cy5jIChDTF9SRUpFQ1RfTkVHQVRJVkUpOiBOZXcuCgkoY19jb21tb25fZGVjb2RlX29wdGlvbik6IFVwZGF0ZSB0byB1c2UgaXQuCgkqIGMub3B0OiBVcGRhdGUgZG9jdW1lbnRhdGlvbjsgdXNlIFJlamVjdE5lZ2F0aXZlLgoJKiBvcHRzLnNoOiBIYW5kbGUgUmVqZWN0TmVnYXRpdmUuCgoyMDAzLTA2LTAxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2djLXBhZ2UuYyAoaW5pdF9nZ2MpOiBHaXZlIGJldHRlciBkaWFnbm9zdGljcyBvbiBmYWlsdXJlIHRvCglvcGVuIC9kZXYvemVyby4KCSogdG9wbGV2LmMgKGNyYXNoX3NpZ25hbCk6IFJlc2V0IGhhbmRsaW5nIGZvciByZWNlaXZlZCBzaWduYWwKCXRvIFNJR19ERkwuCgoyMDAzLTA2LTAyICBCZW4gRWxsaXN0b24gIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBEZWNsYXJlLgoJKFRBUkdFVF9TQ0hFRF9VU0VfREZBX1BJUEVMSU5FX0lOVEVSRkFDRSk6IERlZmluZSBpZiBub3QgYWxyZWFkeS4KCShhcm1fdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBJbXBsZW1lbnQuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChhcm0pOiBOZXcgYXV0b21hdG9uLgoJKHdyaXRlX2J1Zik6IFJlbW92ZSBmdW5jdGlvbiB1bml0czsgbmV3IGNwdSB1bml0LgoJKHdyaXRlX2Jsb2NrYWdlKTogUmVtb3ZlIGZ1bmN0aW9uIHVuaXRzOyBuZXcgY3B1IHVuaXQuCgkoY29yZSk6IFJlbW92ZSBmdW5jdGlvbiB1bml0czsgbmV3IGNwdSB1bml0LgoJKHJfbWVtX2Zfd2J1Zik6IE5ldyBpbnN0cnVjdGlvbiByZXNlcnZhdGlvbi4KCShzdG9yZTFfd2J1Ziwgc3RvcmUyX3didWYsIHN0b3JlM193YnVmLCBzdG9yZTRfd2J1Zik6IExpa2V3aXNlLgoJKHN0b3JlMV9sZHNjaGVkLCBzdG9yZTIsIHN0b3JlMywgc3RvcmU0KTogTGlrZXdpc2UuCgkobG9hZF9sZHNjaGVkLCBsb2FkX2xkc2NoZWRfeHNjYWxlLCBsb2FkX29yX3N0b3JlKTogTGlrZXdpc2UuCgkobXVsdCwgbXVsdF9sZHNjaGVkLCBtdWx0X2xkc2NoZWRfc3Ryb25nYXJtKTogTGlrZXdpc2UuCgkobXVsdGlfY3ljbGUsIHNpbmdsZV9jeWNsZSk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2ZwYS5tZCAoYXJtZnApOiBOZXcgYXV0b21hdG9uLgoJKGZwYSk6IFJlbW92ZSBmdW5jdGlvbiB1bml0czsgbmV3IGNwdSB1bml0LgoJKGZwYV9tZW0pOiBSZW1vdmUgZnVuY3Rpb24gdW5pdDsgbmV3IGNwdSB1bml0LgoJKGZkaXZ4LCBmZGl2ZCwgZmRpdnMsIGZtdWwsIGZmbXVsLCBmYXJpdGgsIGZmYXJpdGgpOiBOZXcgcmVzZXJ2YXRpb25zLgoJKHJfMl9mLCBmXzJfciwgZl9sb2FkLCBmX3N0b3JlLCByX21lbV9mLCBmX21lbV9yKTogTGlrZXdpc2UuCgoyMDAzLTA2LTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGluLWF0dHJzLmRlZiAoQVRUUl9BU01fRlBSSU5URik6IE5ldy4KCSogYy1mb3JtYXQuYyAoZW51bSBmb3JtYXRfdHlwZSk6IEFkZCBhc21fZnByaW50Zl9mb3JtYXRfdHlwZS4KCShOT0FSR1VNRU5UUywgYXNtX2ZwcmludGZfbGVuZ3RoX3NwZWNzLCBhc21fZnByaW50Zl9mbGFnX3NwZWNzLAoJYXNtX2ZwcmludGZfZmxhZ19wYWlycywgYXNtX2ZwcmludGZfY2hhcl90YWJsZSk6IE5ldy4KCShmb3JtYXRfdHlwZXNfb3JpZyk6IFJlbmFtZWQgZnJvbSBmb3JtYXRfdHlwZXMuICBBZGQgbmV3IGRhdGEuCgkoZm9ybWF0X3R5cGVzKTogRGVjbGFyZSBhcyBwb2ludGVyLgoJKGhhbmRsZV9mb3JtYXRfYXR0cmlidXRlKTogTW92ZSBsYXRlciBpbiBmaWxlIHNvIHdlIGhhdmUgYWxsCgluZWNlc3NhcnkgZGVjbGFyYXRpb25zLiAgQWRkIHNlY3Rpb24gdG8gY2FwdHVyZSBIT1NUX1dJREVfSU5ULgoJKiBvdXRwdXQuaCAoQVRUUklCVVRFX0FTTV9GUFJJTlRGLCBfX2djY19ob3N0X3dpZGVfaW50X18pOiBOZXcuCgkoYXNtX2ZwcmludGYpOiBNYXJrIHdpdGggQVRUUklCVVRFX0FTTV9GUFJJTlRGLgoKMjAwMy0wNi0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZG9jL3RtLnRleGkgKFN0b3JhZ2UgTGF5b3V0KTogUmVtb3ZlIFJPVU5EX1RZUEVfU0laRSBhbmQKCVJPVU5EX1RZUEVfU0laRV9VTklULgoKCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUpOiBSZW1vdmUgdXNhZ2VzIG9mCglST1VORF9UWVBFX1NJWkUgYW5kIFJPVU5EX1RZUEVfU0laRV9VTklULgoJKGZpbmFsaXplX3R5cGVfc2l6ZSk6IExpa2V3aXNlLgoJKGxheW91dF90eXBlKTogTGlrZXdpc2UuCgoJKiBzeXN0ZW0uaDogUG9pc29uIFJPVU5EX1RZUEVfU0laRSBhbmQgUk9VTkRfVFlQRV9TSVpFX1VOSVQuCgoJKiBsb29wLmMgKGNoZWNrX2luc25fZm9yX2dpdnMpOiBSZW1vdmUgRE9OVF9SRURVQ0VfQUREUiBtYWNyby4KCgkqIGNvbmZpZy9kMzB2L2QzMHYuaDogUmVtb3ZlIHRleHQgY29waWVkIGZyb20gdGhlIG1hbnVhbC4KCjIwMDMtMDYtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgkgICAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pOiBIYW5kbGUgaW50ZXJwcmV0aW5nIGludGVnZXIKCWNvbnN0YW50cyBhcyBjb25kaXRpb24gY29kZSB2YWx1ZXMuCgoyMDAzLTA2LTAxICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNwcG1hY3JvLmMgKHdhcm5fb2ZfcmVkZWZpbml0aW9uKTogSGFuZGxlIGNhc2VzIHdoZXJlIHRoZSB0d28KCWRlZmluaXRpb25zIGhhdmUgZGlmZmVyZW50IG51bWJlcnMgb2YgdG9rZW5zLgoKMjAwMy0wNi0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZ2VuLXByb3Rvcy5jIChtYWluKTogUmVhZGQgdW51c2VkIGF0dHJpYnV0ZSBmb3IgYXJnYy4KCjIwMDMtMDYtMDEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2VmaWxlLmluIChjLW9wdGlvbnMuYywgYy1vcHRpb25zLmgpOiBQYXJhbGxlbCBtYWtlIHNhZmUuCgkqIGMub3B0OiBFbmQgaW4gYmxhbmsgbGluZS4KCSogb3B0cy5zaDogVGFrZSBBV0sgZnJvbSBlbnZpcm9ubWVudCBpZiBhdmFpbGFibGU7IHVzZSBDIGxvY2FsZS4KCjIwMDMtMDYtMDEgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9saW51eC5oOiBSZW1vdmUgY29kZSBwcm90ZWN0ZWQgYnkgVVNFX0dOVUxJQkNfMS4KCjIwMDMtMDYtMDEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGdlbi1wcm90b3MuYyAobWFpbik6IFJldmVydCBwYXRjaCB0byBjaGVjayBmb3IgYXJndW1lbnQuCgoyMDAzLTA2LTAxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMTA0NAoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChsZW5ndGggYXR0cmlidXRlKTogU2V0IGxlbmd0aCB0byA0Cglmb3IgaW5zdHJ1Y3Rpb25zIG9mIHR5cGUgImZjbXAiLgoKMjAwMy0wNi0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogdG9wbGV2LmM6IFVzZSBJU08gQzkwIHByb3RvdHlwZXMuCgoJKiB0b3BsZXYuaDogVXNlIElTTyBDOTAgcHJvdG90eXBlcy4KCgkqIGdlbnJlY29nLmM6IFVzZSBJU08gQzkwIHByb3RvdHlwZXMuCgkobm9kZXNfaWRlbnRpY2FsKTogQ29ycmVjdCBkZWNsYXJhdGlvbiB0byBtYXRjaCBwcm90b3R5cGUuCgkobWF5YmVfYm90aF90cnVlKTogTGlrZXdpc2UuCgkobWVyZ2VfdHJlZXMpOiBMaWtld2lzZS4KCgkqIGdlbnBlZXAuYyAoZ2VuX3BlZXBob2xlKTogUmVtb3ZlICNpZiAwIGNvZGUuCglVc2UgSVNPIEM5MCBwcm90b3R5cGVzLgoKCSogZ2VuYXR0cnRhYi5jIChjb3B5X3J0eF91bmNoYW5naW5nKTogUmVtb3ZlICNpZiAwJ2VkIGNvZGUuCglSZW1vdmUgI2lmIDAnZWQgZnVuY3Rpb24gc2ltcGxpZnlfYnlfYWx0ZXJuYXRpdmVzLgoJKG9wdGltaXplX2F0dHJzKTogUmVtb3ZlICNpZiAwJ2VkIGNvZGUuCglSZW1vdmUgXkwuCglVc2UgSVNPIEM5MCBwcm90b3R5cGVzLgoJKG1ha2VfY2Fub25pY2FsKTogUmVtb3ZlICNpZiAwJ2VkIGNvZGUuCgkoY29udmVydF9jb25zdF9zeW1ib2xfcmVmKTogUmVtb3ZlICNpZiAwJ2VkIGZ1bmN0aW9uLgoKCSogZ2VuLXByb3Rvcy5jIChtYWluKTogQ2hlY2sgZm9yIGFyZ3VtZW50LgoKCSogcnRsLmg6IFVzZSBJU08gQzkwIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBmcm9tIGxpc3RzLmMuCgoJKiBwYXJhbXMuaDogVXNlIElTTyBDOTAgcHJvdG90eXBlcy4KCSogcGFyYW1zLmM6IExpa2V3aXNlLgoJKiBpbnRsLmM6IExpa2V3aXNlLgoJKiBpbnRsLmg6IExpa2V3aXNlLgoJKiBsaXN0cy5jOiBMaWtld2lzZS4KCSogZXJyb3JzLmM6IExpa2V3aXNlLgoJKiBlcnJvcnMuaDogTGlrZXdpc2UuCgkqIGdlbmNvZGVzLmM6IExpa2V3aXNlLgoJKiBnZW5wcmVkcy5jOiBMaWtld2lzZS4KCSogZ2VuYXR0ci5jOiBMaWtld2lzZS4KCSogZ2VuLXByb3Rvcy5jOiBMaWtld2lzZS4KCSogZ2VuZmxhZ3MuYzogTGlrZXdpc2UKCSogZ2VuY29uZGl0aW9ucy5jOiBMaWtld2lzZS4KCSogZ2VuYXV0b21hdGEuYzogTGlrZXdpc2UuCgkqIGdlbmNoZWNrLmM6IExpa2V3aXNlLgoJKiBnZW5jb25maWcuYzogTGlrZXdpc2UuCgkqIGdlbmNvbnN0YW50cy5jOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jOiBMaWtld2lzZS4KCSogZ2VuZXh0cmFjdC5jOiBMaWtld2lzZS4KCSogZ2VuZ2VucnRsLmM6IExpa2V3aXNlLgoJKiBnZW5ndHlwZS5jOiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUuaDogTGlrZXdpc2UuCgkqIGdlbm9waW5pdC5jOiBMaWtld2lzZS4KCSogZ2Vub3V0cHV0LmM6IExpa2V3aXNlLgoJKiBnZW5zdXBwb3J0LmM6IExpa2V3aXNlLgoJKiBnZW5zdXBwb3J0Lmg6IExpa2V3aXNlLgoKCSogc2Rib3V0Lmg6IFVzZSBJU08gQzkwIHByb3RvdHlwZXMuCgoJKiBzZGJvdXQuYyAoQ09OVElOKTogUmVtb3ZlZCBlbXB0eSBtYWNyby4KCShzZGJvdXRfb25lX3R5cGUpOiBSZW1vdmUgQ09OVElOIHVzYWdlcy4KCVJlbW92ZSBeTHMuCgkodGFnX29mX3J1X3R5cGUpOiBSZW1vdmUgI2lmIDAnZWQgZnVuY3Rpb24uCgkoc2Rib3V0X3N5bWJvbCk6IFJlbW92ZSAjaWYgMCdlZCBjb2RlLgoJKHNkYm91dF9vbmVfdHlwZSk6IFJlbW92ZSBhICNpZiAxLgoJKHNkYm91dF9vbmVfdHlwZSk6IFJlbW92ZSAjaWYgMCdlZCBjb2RlLgoJKHNkYm91dF9pbml0KTogUmVtb3ZlIFJNU19RVUlDS19IQUNLXzEgY29kZS4KCVJlbW92ZSBQQVJBTVMsIHVzZSBJU08gQzkwIHByb3RvdHlwZXMgZm9yIGFsbCBmdW5jdGlvbnMuCgoyMDAzLTA2LTAxICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBydGwuZGVmIChDT05TVF9ET1VCTEUpOiBVcGRhdGUgY29tbWVudC4KCjIwMDMtMDYtMDEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG9wdHMuc2g6IFJlbW92ZSBwYXRoIGZyb20gc29ydC4KCjIwMDMtMDYtMDEgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCglQUi85NjgwCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKENBTk5PVF9DSEFOR0VfTU9ERV9DTEFTUyk6IFJlcXVpcmUKCVRBUkdFVF9TUEUgZm9yIFNQRV9WRUNUT1JfTU9ERS4KCjIwMDMtMDUtMzEgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChib3RjaCk6IFJlbW92ZS4KCShkb19hYm9ydCk6IFJlbW92ZS4KCShzZXRfV3VudXNlZCk6IENvbW1lbnQuCgkoc2V0X1dleHRyYSk6IENvbW1lbnQuCglSZW1vdmUgXkwncy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogRmFjdG9yIG91dCBjb21tb24gY29kZSBpbnRvIGZ1bmN0aW9ucy4KCShyZXN0X29mX2hhbmRsZV9pbmxpbmluZyk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9zc2EpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfY3NlKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2djc2UpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfbG9vcF9vcHRpbWl6ZSk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9qdW1wX2J5cGFzcyk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9zaWJsaW5nX2NhbGxzKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX251bGxfcG9pbnRlcik6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9hZGRyZXNvZik6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9mbG93KTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2JyYW5jaF9wcm9iKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2lmX2NvbnZlcnNpb24pOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfdHJhY2VyKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2xvb3AyKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2NzZTIpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfbGlmZSk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9jb21iaW5lKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2lmX2FmdGVyX2NvbWJpbmUpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfcmVnbW92ZSk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9zY2hlZCk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9vbGRfcmVnYWxsb2MpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfbmV3X3JlZ2FsbG9jKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX3JlZ3JlbmFtZSk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9yZW9yZGVyX2Jsb2Nrcyk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9zY2hlZDIpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfbmV3X3JlZ2FsbG9jKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX29sZF9yZWdhbGxvYyk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9yZWdyZW5hbWUpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfcmVvcmRlcl9ibG9ja3MpOiBOZXcuCgkocmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncyk6IE5ldy4KCShyZXN0X29mX2hhbmRsZV9tYWNoaW5lX3Jlb3JnKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2RlbGF5X3Nsb3RzKTogTmV3LgoJKHJlc3Rfb2ZfaGFuZGxlX2ZpbmFsKTogTmV3LgoKCSogdG9wbGV2LmggKGJvdGNoKTogUmVtb3ZlIHByb3RvdHlwZS4KCShkb19hYm9ydCk6IFNhbWUuCgoyMDAzLTA1LTMxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoYy1vcHRzLm8sIGMtb3B0aW9ucy5oKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogYy1vcHRzLmM6IEluY2x1ZGUgYy1vcHRpb25zLmggYW5kIGMtb3B0aW9ucy5jLgoJKENMX0NfT05MWSwgQ0xfT0JKQ19PTkxZLCBDTF9DWFhfT05MWSwgQ0xfT0JKQ1hYX09OTFkpOgoJUmVuYW1lIENMX0MsIENMX09CSkMsIENMX0NYWCwgQ0xfT0JKQ1hYLgoJKENMX0FSRywgQ0xfQUxMLCBDT01NQU5EX0xJTkVfT1BUSU9OUywgc3RydWN0IGNsX29wdGlvbiwKCU9QVCwgb3B0X2NvbXApOiBSZW1vdmUuCgkobWlzc2luZ19hcmcsIGNfY29tbW9uX2luaXRfb3B0aW9ucywgY19jb21tb25fZGVjb2RlX29wdGlvbiwKCXdyaXRlX2xhbmdzKTogVXBkYXRlIGZvciBtYWNybyByZWRlZmluaXRpb25zIGFuZCBlbnVtZXJhdGlvbgoJbmFtZSBjaGFuZ2VzLgoJKiBjLm9wdCwgb3B0cy5zaDogTmV3IGZpbGVzLgoJKiBkb2MvcGFzc2VzLnRleGk6IFVwZGF0ZS4KCjIwMDMtMDUtMzEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGZ1bmN0aW9uLmMgKHRyYW1wb2xpbmVfYWRkcmVzcyk6IFJlbW92ZSBBTExPQ0FURV9UUkFNUE9MSU5FCgl1c2FnZS4KCgkqIGRvYy90bS50ZXhpIChUcmFtcG9saW5lcyk6IFJlbW92ZSBBTExPQ0FURV9UUkFNUE9MSU5FLgoKCSogY29uZmlnL2QzMHYvZDMwdi5oOiBSZW1vdmUgdHJhY2VzIG9mIEFMTE9DQVRFX1RSQU1QT0xJTkUuCgoJKiBzeXN0ZW0uaDogUG9pc29uIEFMTE9DQVRFX1RSQU1QT0xJTkUuCgoJKiBkb2MvdG0udGV4aSAoTWlzYyk6IFJlbW92ZSBIQU5ETEVfUFJBR01BLgoJKiBzeXN0ZW0uaDogUG9pc29uIEhBTkRMRV9QUkFHTUEuCgoyMDAzLTA1LTMxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgZHVtcCBmaWxlIG5hbWVzLgoKMjAwMy0wNS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1mb3JtYXQuYyAoZm9ybWF0X2xlbmd0aF9pbmZvLCBmb3JtYXRfY2hhcl9pbmZvLAoJZm9ybWF0X2ZsYWdfc3BlYywgZm9ybWF0X2ZsYWdfcGFpciwgZm9ybWF0X2tpbmRfaW5mbyk6CglEZS1jb25zdC1pZnkgc3RydWN0dXJlIG1lbWJlcnMuCgoyMDAzLTA1LTMxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZsYWdzLmggKGZsYWdfd3JhcHYpOiBOZXcgZmxhZyBjb250cm9sbGluZyBvdmVyZmxvdyBzZW1hbnRpY3MuCgkqIHRvcGxldi5jIChmbGFnX3dyYXB2KTogRGVjbGFyZSB0aGUgdmFyaWFibGUgd2l0aCBkZWZhdWx0IGZhbHNlLgoJKGxhbmdfaW5kZXBlbmRlbnRfb3B0aW9ucyk6IE5ldyBvcHRpb24gIi1md3JhcHYiIHRvIHNldCB0aGUgYWJvdmUuCgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2XzEpOiBEaXNhYmxlIG9wdGltaXphdGlvbiBvZiAoMip4KS8yCglhcyB4LCB3aGVuIHNpZ25lZCBhcml0aG1ldGljIG92ZXJmbG93IHdyYXBzIGFyb3VuZC4KCShmb2xkKTogT3B0aW1pemUgIi1BIC0gQiIgYXMgIi1CIC0gQSIgaWYgb3ZlcmZsb3cgd3JhcHMgYXJvdW5kLgoJKiBsb29wLmMgKGJhc2ljX2luZHVjdGlvbl92YXIpOiBJZ25vcmUgQklWcyB0aGF0IHJlbHkgb24gdW5kZWZpbmVkCglvdmVyZmxvdyB3aGVuIGZsYWdfd3JhcHYgaXMgdHJ1ZS4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgbmV3IC1md3JhcHYgY29tbWFuZCBsaW5lIG9wdGlvbi4KCSogZG9jL2MtdHJlZS50ZXhpOiBNZW50aW9uIHRoYXQgdGhlIG92ZXJmbG93IHNlbWFudGljcyBvZgoJTkVHQVRFX0VYUFIsIFBMVVNfRVhQUiwgTUlOVVNfRVhQUiBhbmQgTVVMVF9FWFBSIGlzIGRlcGVuZGVudAoJdXBvbiBib3RoIGZsYWdfd3JhcHYgYW5kIGZsYWdfdHJhcHYuCgoyMDAzLTA1LTMxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2luc3RhbGwudGV4aSAobWlwcy1zZ2ktaXJpeDUpOiBBZGQgbWlzc2luZwoJSFRNTCA8aHI+IG1hcmtlci4KCjIwMDMtMDUtMzEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBkb2MvbWQudGV4aSAoTWFjaGluZSBDb25zdHJhaW50cyk6IERvY3VtZW50CgltaXNzaW5nIFNQQVJDIGNvbnN0cmFpbnRzLgoKMjAwMy0wNS0zMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGRvYy9tZC50ZXhpIChBdXRvbWF0b24gcGlwZWxpbmUgZGVzY3JpcHRpb24pOiBVc2UKCSJ0eXBlIiBpbnN0ZWFkIG9mICJjcHUiIGFzIHRoZSBhdHRyaWJ1dGUgaW4gdGhlIGV4YW1wbGVzLgoKMjAwMy0wNS0zMCAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KCgkqIHN5c3RlbS5oOiBQb2lzb24gT0JKQ19QUk9MT0dVRS4KCjIwMDMtMDUtMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX2NvbXBsZXhfY29uc3RhbnRfcGFydCk6IE5ldyBmdW5jdGlvbiBmb3IgZ2V0dGluZwoJdGhlIGNvbnN0YW50IHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgYSBjb21wbGV4IGNvbnN0YW50LgoJKGdlbl9yZWFscGFydCk6IFVzZSBpdC4KCShnZW5faW1hZ3BhcnQpOiBMaWtld2lzZS4KCjIwMDMtMDUtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW52b2tlLnRleGk6IEZpeCB0eXBvcy4KCSogZG9jL3J0bC50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMDUtMzAgIERoYW5hbmpheSBEZXNocGFuZGUgIDxkaGFuYW5qYXlkQGtwaXRjdW1taW5zLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9jcnRpLmFzbTogVXNlIC5oODMwMGhuIGFuZCAuaDgzMDBzbiBmb3Igbm9ybWFsCgltb2RlLgoJKiBjb25maWcvaDgzMDAvY3J0bi5hc206IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChhc21fZmlsZV9zdGFydCk6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvZWxmLmggKExJTktfU1BFQyk6IFVzZSBoODMwMGhuZWxmIGFuZAoJaDgzMDBzbmVsZiBlbXVsYXRpb25zIGZvciBub3JtYWwgbW9kZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKExJTktfU1BFQyk6IFVzZSBoODMwMGhuIGFuZCBoODMwMHNuCgllbXVsYXRpb25zIGZvciBub3JtYWwgbW9kZS4KCjIwMDMtMDUtMzAgIERoYW5hbmpheSBEZXNocGFuZGUgIDxkaGFuYW5qYXlkQGtwaXRjdW1taW5zLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF90aW55X2NvbnN0YW50X2FkZHJlc3NfcCk6IFJldHVybgoJdHJ1ZSBpZiBUQVJHRVRfTk9STUFMX01PREUuCgoyMDAzLTA1LTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNzZS5jIChjc2VfaW5zbik6IFNpbXBsaWZ5IFJFR19FUVVBTCBub3RlIG9uIGxpYmNhbGxzIHdoZW4KCW1ha2luZyBhIHN1YnN0aXR1dGlvbi4KCShkZWFkX2xpYmNhbGxfcCk6IElmIGRpcmVjdGx5IHJlcGxhY2luZyBhIGxpYmNhbGwgd2l0aCBhCgljb25zdGFudCB2YWx1ZSBwcm9kdWNlcyBhbiBpbnZhbGlkIGluc3RydWN0aW9uLCBhbHNvIHRyeSBmb3JjaW5nCgl0aGUgY29uc3RhbnQgaW50byB0aGUgY29uc3RhbnQgcG9vbC4KCSogZXhwci5jIChlbWl0X21vdmVfaW5zbik6IEFkZCBhIFJFR19FUVVBTCBub3RlIHdoZW4gaXQgaXMgbm90CglvYnZpb3VzIHRoYXQgdGhlIHNvdXJjZSBpcyBhIGNvbnN0YW50LgoJKGNvbXByZXNzX2Zsb2F0X2NvbnN0YW50KTogVXNlIHNldF91bmlxdWVfcmVnX25vdGUgdG8gcGxhY2UKCVJFR19FUVVBTCBub3RlcyBvbiBpbnN0cnVjdGlvbnMuCgoyMDAzLTA1LTMwICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZXh0ZXJuX2xpc3QpOiBBZGQgR1RZIG1hcmtlci4KCShleHRlcm5faGVhZCk6IFNlcGFyYXRlIG91dCBkZWZpbml0aW9uLiBBZGQgbWFya2VyLgoJKG1pcHNfb3V0cHV0X2V4dGVybmFsKTogVXNlIGdnY19hbGxvYyBmb3IgZXh0ZXJuX2xpc3QKCWFsbG9jYXRpb24uCgkobWlwc19vdXRwdXRfZXh0ZXJuYWxfbGliY2FsbCk6IERpdHRvLgoKMjAwMy0wNS0zMCAgRmxvcmlhbiBXZWltZXIgIDxmd0BkZW5lYi5lbnlvLmRlPgoKCSogZG9jL2luc3RhbGwudGV4aTogQWRhLWVuYWJsZWQgYm9vdHN0cmFwIHJlcXVpcmVzIEdOQVQgMy4xNCBvcgoJbGF0ZXIuCgoyMDAzLTA1LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB2YXguaCAoQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMKTogRml4IGZvcm1hdCBzcGVjaWZpZXIKCXdhcm5pbmdzLgoJKFBSSU5UX09QRVJBTkQpOiBMaWtld2lzZS4KCjIwMDMtMDUtMzAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChTVUJUQVJHRVRfQVNNX0RFQlVHR0lOR19TUEVDKTogTW92ZQoJLW1kZWJ1Zy8tbm8tbWRlYnVnIHN3aXRjaGVzIC4uLgoJKE1ERUJVR19BU01fU1BFQyk6IC4uLiBoZXJlLgoJVXNlIG9ubHkgd2l0aCBnYXMuCgkoRVhUUkFfU1BFQ1MpOiBJbml0aWFsaXplIG1kZWJ1Z19hc21fc3BlYy4KCjIwMDMtMDUtMjkgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGd0aHItZ25hdC5jOiBSZW1vdmUgI3VuZGVmIFVOVVNFRC4KCShfX2duYXRfZGVmYXVsdF9sb2NrLCBfX2duYXRfZGVmYXVsdF91bmxvY2spOiBQcm90b3R5cGUuCgkoX19nbmF0X3Rhc2tfbG9jaywgX19nbmF0X3Rhc2tfdW5sb2NrKTogTWFrZSBkZWNsYXJhdGlvbnMKCXByb3RvdHlwZXMuCgkoX19nbmF0X2luc3RhbGxfbG9ja3MpOiBDb252ZXJ0IGRlY2xhcmF0aW9uIHRvIElTTyBDOTAsIG1ha2UKCXBhcmFtZXRlciBkZWNsYXJhdGlvbnMgcHJvdG90eXBlcywgYW5kIHJlbW92ZSBibGFuayBsaW5lLgoJKiBndGhyLWduYXQuaCAoX19nbmF0X2luc3RhbGxfbG9ja3MpOiBNYWtlIHBhcmFtZXRlcgoJZGVjbGFyYXRpb25zIHByb3RvdHlwZXMuCgoyMDAzLTA1LTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICh1bnN0cmFwKTogUmVtb3ZlIHN0YWdlX2xhc3QgYWZ0ZXIgbWFrZSB1bnN0YWdlMS4KCjIwMDMtMDUtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogbWlwcy10ZmlsZS5jIChQQUdFX1NJWkUpOiBJbmNyZWFzZSBwYWdlIHNpemUgdG8gMzJLLgoKMjAwMy0wNS0yOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgS2F2ZWggR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCVBSIGJvb3RzdHJhcC8xMDE2OQoJKiBtaXBzLXRmaWxlLmMgKG1haW4pOiBVc2UgZ2V0b3B0X2xvbmcgaW5zdGVhZCBvZiBnZXRvcHQuCglBZGQgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24gLS12ZXJzaW9uIHRvIGRpc3BsYXkgdmVyc2lvbi4KCVRyZWF0IC0tdmVyYm9zZSBsaWtlIC12IHRvIHJlcG9ydCBhIHNpbmdsZSBsaW5lIHZlcnNpb24uCgkob3B0aW9ucyk6IE5ldyBnbG9iYWwgdmFyaWFibGUgZm9yIGdldG9wdF9sb25nLgoJKiBtaXBzLXRkdW1wLmMgKG1haW4pOiBVc2UgZ2V0b3B0X2xvbmcgaW5zdGVhZCBvZiBnZXRvcHQuCglOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMgLXYsIC0tdmVyc2lvbiBhbmQgLXZlcmJvc2UgdG8gZGlzcGxheQoJdGhlIHByb2dyYW0gdmVyc2lvbiBudW1iZXIgKHRvIG1hdGNoIG1pcHMtdGZpbGUncyBiZWhhdmlvcikuCgkob3B0aW9ucyk6IE5ldyBnbG9iYWwgdmFyaWFibGUgZm9yIGdldG9wdF9sb25nLgoKCSogZ2Nvdi5jIChvcHRpb25zKTogWmVyby10ZXJtaW5hdGUgZ2V0b3B0X2xvbmcgYXJyYXkuCgkqIGdjb3YtZHVtcC5jIChvcHRpb25zKTogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5pbiAobWlwcy10ZHVtcC5vKTogQWRkIGRlcGVuZGVuY3kgb24gdmVyc2lvbi5oLgoKMjAwMy0wNS0yOSAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KCglSZW1vdmUgT0JKQ19QUk9MT0dVRSBldmVyeXdoZXJlLgoJKiBvYmpjL29iamMtYWN0LmMgKGZpbmlzaF9vYmpjKTogUmVtb3ZlIHVzZSBvZiBPQkpDX1BST0xPR1VFLgoJKiBjb25maWcvYXZyL2F2ci5oOiBSZW1vdmUgbm8tb3AgcmVmIHRvIE9CSkNfUFJPTE9HVUUuCgkqIGNvbmZpZy9kMzB2L2QzMHYuaDogU2ltaWxhcmx5LgoJKiBjb25maWcvaXAyay9pcDJrLmg6IFNpbWlsYXJseS4KCSogZG9jL3RtLnRleGk6IFJlbW92ZSBkb2Mgb2YgT0JKQ19QUk9MT0dVRS4KCjIwMDMtMDUtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2RvX3N0bXRfMSk6IE5ldyBmdW5jdGlvbiBzcGxpdCBvdXQgZnJvbS4uLgoJKGdlbl9ydGxfZG9fc3RtdCk6IC4uLiBoZXJlLiAgQ2FsbCBnZW5ydGxfZG9fc3RtdF8xLgoJKGV4cGFuZF91bnJlYWNoYWJsZV9zdG10KTogRXhwYW5kIHVucmVhY2hhYmxlIHdoaWxlIHN0YXRlbWVudHMKCXVzaW5nIGdlbnJ0bF9kb19zdG10XzEuCgoyMDAzLTA1LTI5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX291dHB1dF9sb2FkX2xhYmVsKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9sb2FkX2xhYmVsKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfb3V0cHV0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IFVzZSBpdC4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoanVtcCk6IEFuZCBoZXJlLgoKMjAwMy0wNS0yOCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oIChzbWFsbG9mZnNldF9kb3VibGVfbWVtX3ApOiBEZWxldGUuCgkoeHRlbnNhX3NwbGl0X29wZXJhbmRfcGFpcik6IE5ldyBwcm90by4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAobW92ZV9vcGVyYW5kKTogSGFuZGxlIERGbW9kZSBhbmQgREltb2RlLgoJKHNtYWxsb2Zmc2V0X2RvdWJsZV9tZW1fcCk6IERlbGV0ZS4KCShnZW5fZmxvYXRfcmVsYXRpb25hbCwgcHJpbnR4LCBwcmludF9vcGVyYW5kLCB4dGVuc2FfdmFfYXJnKToKCUZpeCB3aGl0ZXNwYWNlLgoJKHh0ZW5zYV9zcGxpdF9vcGVyYW5kX3BhaXIpOiBOZXcuCgkoeHRlbnNhX2RieF9yZWdpc3Rlcl9udW1iZXIpOiBGaXggZm9ybWF0dGluZy4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoRVhUUkFfQ09OU1RSQUlOVCk6IFJlbW92ZSAnUycgY29uc3RyYWludC4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EubWQgKG1vdmRpLCBtb3ZkZik6IEZvcmNlIGNvbnN0YW50cyB0byBtZW1vcnkKCWluc3RlYWQgb2Ygc3BsaXR0aW5nIHRoZW0gaW50byBzaW5nbGUtd29yZCBtb3Zlcy4gIFJlbW92ZSB1bm5lY2Vzc2FyeQoJY2hlY2tzIGZvciByZWxvYWRfaW5fcHJvZ3Jlc3MgYW5kIHJlbG9hZF9jb21wbGV0ZWQuCgkobW92ZGlfaW50ZXJuYWwsIG1vdmRmX2ludGVybmFsKTogQ2hhbmdlIHRvIHBvc3QtcmVsb2FkIHNwbGl0IHBhdHRlcm5zLgoJQWRkIGNvbnN0cmFpbnRzIHRvIGFsbG93IGNvbnN0YW50IG9wZXJhbmRzLgoJKG1vdnNmX2ludGVybmFsKTogQWxsb3cgQ09OU1RfSU5UIG9wZXJhbmRzLgoKMjAwMy0wNS0yNyAgRGFubnkgU21pdGggICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotbWluZ3czMiopOiBBZGQgaG9zdCBtYWtlZmlsZQoJZnJhZ21lbnQgaTM4Ni94LW1pbmd3MzIuCgkqIGNvbmZpZy9pMzg2L3gtbWluZ3czMjogTmV3IGZpbGUuIE1ha2UgbG9jYWxfaW5jbHVkZWRpcgoJcmVsYXRpdmUgdG8gRVhFQ19QUkVGSVguCgoyMDAzLTA1LTI3ICBBYXJvbiBXLiBMYUZyYW1ib2lzZSAgPGF3bGFmcmFtYm9pc2VAYW9sLmNvbT4KCgkqIGNvbmZpZy9pMzg2L21pbmd3MzIuaCAoU1RBTkRBUkRfSU5DTFVERV9ESVIpOiBVcGRhdGUuCgkoTURfU1RBUlRGSUxFX1BSRUZJWCk6IERlZmluZS4KCjIwMDMtMDUtMjcgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjc2VsaWIuYyAoY3NlbGliX2ludmFsaWRhdGVfcmVnbm8pOiBBYm9ydCBpZiBoYXJkcmVnIGhhdmUgYQoJVk9JRG1vZGUuCgkqIGNzZWxpYi5jIChjc2VsaWJfcHJvY2Vzc19pbnNuKTogUGFzcyByZWdfcmF3X21vZGUgZm9yIGhhcmRyZWcgaW4KCWNhbGwgb2YgY3NlbGliX2ludmFsaWRhdGVfcmVnbm8uCgoyMDAzLTA1LTI4ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKExJQl9TUEVDKTogQWRkIG1pc3NpbmcgLWxjIGFuZCBjb3JyZWN0CgktbHRocmVhZCB0byAtbHB0aHJlYWQuCgoyMDAzLTA1LTI4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoJICAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoJICAgIEFybm8gS2xhYXNzZW4gIDxhcm5vQGhlaG8uc252Lmp1c3NpZXUuZnI+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiBBZGQgbWlzc2luZyBkZWNsYXJhdGlvbiBvZiBnZXRwYWdlc2l6ZSgpCgl0byB1bmlzdGQuaCBvbiBTb2xhcmlzIDIuNS4xLgoJRml4IHByb3RvdHlwZSBvZiByZWN2KCkgYW5kIHNlbmQoKSBpbiBzeXMvc29ja2V0Lmggb24KCVNvbGFyaXMgMi41LjEgYW5kIDIuNi4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvdW5pc3RkLmg6IEFkZCBzb2xhcmlzX3VuaXN0ZCBmaXggdGVzdC4KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3lzL3NvY2tldC5oOiBBZGQgc29sYXJpc19zb2NrZXQgdGVzdC4KCSogZml4aW5jL2NoZWNrLnRwbDogVXNlICdkaWZmIC1jJywgbm90ICdkaWZmIC11Jy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDMtMDUtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS5jIChleHByX2ZpcnN0LCBleHByX2xlbmd0aCk6IE5ldyBmbnMuCgkqIHRyZWUuaDogRGVjbGFyZSB0aGVtLgoKCSogdHJlZS5jIChpdGVyYXRpdmVfaGFzaF9leHByKTogSGFzaCBjb21tdXRhdGl2ZSBleHByZXNzaW9ucwoJY29uc2lzdGVudGx5LgoKMjAwMy0wNS0yNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuaCAoY29udGFpbnNfcGxhY2Vob2xkZXJfcCk6IE5vdyByZXR1cm5zIGJvb2wuCgkoQ09OVEFJTlNfUExBQ0VIT0xERVJfUCk6IE5ldyBtYWNyby4KCSh0eXBlX2NvbnRhaW5zX3BsYWNlaG9sZGVyX3ApOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuYyAoc2F2ZV9leHByKTogUmVtb3ZlIGNvZGUgYXZvaWRpbmcgZm9sZGluZyBDT01QT05FTlRfUkVGLgoJKGNvbnRhaW5zX3BsYWNlaG9sZGVyX3ApOiBOb3cgcmV0dXJucyBib29sLgoJUmV3b3JrIHRvIHVzZSBDT05UQUlOU19QTEFDRUhPTERFUl9QIG1hY3JvLgoJKHR5cGVfY29udGFpbnNfcGxhY2Vob2xkZXJfcCk6IE5ldyBmdW5jdGlvbi4KCSogZm9sZC1jb25zdC5jIChmb2xkLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBEb24ndCBmb2xkIGlmCgl0eXBlX2NvbnRhaW5zX3BsYWNlaG9sZGVyX3AuCgkoZm9sZF9yYW5nZV90ZXN0LCBmb2xkX21hdGhmbl9jb21wYXJlLCBmb2xkX2luZl9jb21wYXJlLCBmb2xkKToKCVVzZSBDT05UQUlOU19QTEFDRUhPTERFUl9QIG1hY3JvLgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChzZXRfbWVtX2F0dHJpYnV0ZXNfbWludXNfYml0cG9zKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jIChleHByX3NpemUpOiBMaWtld2lzZS4KCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3RvciwgZ2V0X2lubmVyX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYyAodmFyaWFibGVfc2l6ZSk6IExpa2V3aXNlLgoKMjAwMy0wNS0yNSAgR2FicmllbCBEb3MgUmVpcyA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGRpYWdub3N0aWMuaCAob3V0cHV0X3ZlcmJhdGltLCB2ZXJiYXRpbSk6ICBSZW1vdmUgIHByaW50ZgoJYXR0cmlidXRlLgoKMjAwMy0wNS0yNSAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL2NvbnRyaWIudGV4aSAoQ29udHJpYnV0b3JzKTogVXBkYXRlIEtlYW4gSm9obnN0b24uCgoyMDAzLTA1LTI0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoc2F2ZV9mcHJlZ3Nfe3NpLGRpfSk6IEFkZCBsZW5ndGggYXR0cmlidXRlLgoKMjAwMy0wNS0yNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwLzQ0MC5tZCwgY29uZmlnL3N0b3JteTE2L3N0b3JteTE2cHJvdG9zLmgsCgljb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYywgY29uZmlnL3N0b3JteTE2L3N0b3JteTE2Lm1kOgoJUmVwbGFjZSAiR05VIENDIiB3aXRoICJHQ0MiLgoKMjAwMy0wNS0yNCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtY3B5KTogVXNlIG1vZGUgb2YgZGVzdF9hZGRyIGZvcgoJaW50ZXJtZWRpYXRlIGNvbXB1dGF0aW9uLgoKMjAwMy0wNS0yMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjbHpzaSwgY2x6ZGkpOiBOZXcgcGF0dGVybnMuCgoyMDAzLTA1LTIzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdjYy5jIChkZWZhdWx0X2NvbXBpbGVycyk6IFVzZSAtbyB0byBzcGVjaWZ5IHByZXByb2Nlc3NvcidzIG91dHB1dAoJZmlsZS4gIE1ha2UgLW5vLWludGVncmF0ZWQtY3BwIHdvcmsgd2hlbiBidWlsZGluZyBQQ0ggZmlsZXMuCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBMaWtld2lzZS4KCjIwMDMtMDUtMjMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLmluOiBDb3JyZWN0IGRlc2NyaXB0aW9uLgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4sIGZpeGluYy9maXhmaXhlcy5jLCBmaXhpbmMvZml4aW5jbC5jLAoJZml4aW5jL2ZpeGxpYi5jLCBmaXhpbmMvZml4bGliLmgsIGZpeGluYy9maXh0ZXN0cy5jLAoJZml4aW5jL2dlbmZpeGVzOiBSZXBsYWNlICJHTlUgQ0MiIHdpdGggIkdDQyIuCgoyMDAzLTA1LTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmRlZjogRGVmaW5lIGF0YW4sIGF0YW5mLCBhdGFubCwgdGFuLCB0YW5mIGFuZCB0YW5sCglidWlsdGluIGZ1bmN0aW9ucyAoYW5kIHRoZWlyIF9fYnVpbHRpbl8qIHZhcmlhbnRzKS4KCSogYnVpbHRpbnMuYyAobWF0aGZuX2J1aWx0X2luKTogSGFuZGxlIHRhbnssZixsfSBhbmQgYXRhbnssZixsfS4KCShleHBhbmRfYnVpbHRpbik6IERvbid0IGV4cGFuZCB0YW57LGYsbH0gb3IgYXRhbnssZixsfSB3aGVuIG5vdAoJb3B0aW1pemluZy4KCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgbmV3IHRhbiBhbmQgYXRhbiBidWlsdGlucywgYW5kCgl0aGVpciBmbG9hdCBhbmQgbG9uZyBkb3VibGUgdmFyaWFudHMuCgoyMDAzLTA1LTIzICBKYXNvbiBUaG9ycGUgIDx0aG9ycGVqQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL3NwYXJjL25ldGJzZC1lbGYuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19zcGFyY3Y5IGluIHRoZSBUQVJHRVRfQVJDSDY0IGNhc2UuCgpGcmkgTWF5IDIzIDIyOjE3OjMyIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpeDg2X3Jlb3JnKTogQ2FsbHMgYXJlIGFsc28ganVtcHMuCgoyMDAzLTA1LTIzICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGNzZS5jIChjb3VudF9yZWdfdXNhZ2UpOiBXaGVuIHByb2Nlc3NpbmcgYW4gSU5TTnMgUkVHX0VRVUFMCglub3RlIGNvbnRhaW5pbmcgYW4gRVhQUl9MSVNULCBwcm9jZXNzIGFsbCB0aGUgYXJndW1lbnRzLgoKRnJpIE1heSAyMyAyMToxOTozMSBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCQkJICAgICAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGkzODYuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19hbWQ2NCBhbmQgX19hbWQ2NF9fOwoJZG8gbm90IHVzZSBhc3NlcnRpb24uCgoyMDAzLTA1LTIzICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIHRsaW5rLmMgKHNjYW5fbGlua2VyX291dHB1dCk6IEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4gbGlua2VyLCBhcyBpdAoJZW1pdHMgdW5yZXNvbHZlZCBzeW1ib2xzIG9uZSBwZXIgbGluZSwgY29uc3VtaW5nIHRoZSBlbnRpcmUgbGluZS4KCjIwMDMtMDUtMjMgIExhcmluIEhlbm5lc3N5IDxsYXJpbkBzY2llbmNlLm9yZWdvbnN0YXRlLmVkdT4KCSAgICBaYWNrIFdlaW5iZXJnIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHBsb3cuYyAoYWxsb2NhdGVfZHluYW1pY19zdGFja19zcGFjZSk6IFJlbW92ZSBjYWxsIHRvIGdlbl9wcm9iZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6CglSZW1vdmUgY29kZSB1bmRlciAjaWYgTkVFRF9QUk9CRS4KCSogY29uZmlnL202OGsvbTY4ay5oOiBEb24ndCBkZWZpbmUgTkVFRF9QUk9CRS4KCSogY29uZmlnL202OGsvbTY4ay5tZDogUmVtb3ZlICJwcm9iZSIgaW5zbi4KCSogZG9jL21kLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mICJwcm9iZSIgcGF0dGVybi4KCjIwMDMtMDUtMjMgIERvcml0IE5haXNobG9zICA8Z2NjaGFpZmFAaWwuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChzYXZlX2ZwcmVnc197c2ksZGl9KTogQWRkIGJyYW5jaCBhdHRyaWJ1dGUuCgoyMDAzLTA1LTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2luc3RhbGwudGV4aTogUmVtb3ZlIHNwYXJjNjQtKi0qLiBBZGQgc3BhcmM2NC0qLXNvbGFyaXMyKi4KCURvY3VtZW50IHNwYXJjdjktKi1zb2xhcmlzMiogYXMgYSBzeW5vbnltIGZvciBzcGFyYzY0LSotc29sYXJpczIqLgoKMjAwMy0wNS0yMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiByZWFsLmMgKHJlYWxfbWF4dmFsKTogTmV3IGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgbGFyZ2VzdCBmaW5pdGUKCXZhbHVlIHJlcHJlc2VudGFibGUgaW4gYSBnaXZlbiBtb2RlIChpLmUuIEZMVF9NQVggYW5kIERCTF9NQVgpLgoJKiByZWFsLmggKHJlYWxfbWF4dmFsKTogUHJvdG90eXBlIGhlcmUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9pbmZfY29tcGFyZSk6IFRyYW5zZm9ybSBjb21wYXJpc29ucyBhZ2FpbnN0CgkrLUluZmluaXR5IGludG8gY29tcGFyaXNvbnMgYWdhaW5zdCBEQkxfTUFYIChvciBlcXVpdmFsZW50KS4KCjIwMDMtMDUtMjIgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY29uZmlnLmdjYyAoKi0qLWRhcndpbiopOiBSZW1vdmUgdXNlX2NvbGxlY3QyPW5vLCBhcyBpdCBpcyB0aGUKCWRlZmF1bHQuCgoyMDAzLTA1LTIyICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogSWYgdGhlIGFyZyBibG9jayBpcyBnb2luZyB0byBncm93Cglkb3dud2FyZCwgd2UgbmVlZCBhcmdibG9jayB0byBwb2ludCB0byB0aGUgdG9wIG9mIHRoZSBibG9jaywKCW5vdCB0aGUgYm90dG9tLgoKMjAwMy0wNS0yMiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBUZXN0IERFQ0wgZm9yIEVSUk9SX01BUksuCgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIENPTlNUUlVDVE9SKTogUHV0IGludG8gbWVtb3J5IGlmCgljb25zdGFudCBhbmQgRVhQQU5EX0NPTlNUX0FERFJFU1MsIG5vdCBqdXN0IEVYUEFORF9JTklUSUFMSVpFUi4KCjIwMDMtMDUtMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG02OGhjMTEuYzogRG9uJ3QgdXNlIHRoZSBgMCcgZmxhZyBmb3IgYXNtX2ZwcmludGYgc3BlY2lmaWVycy4KCSogbTY4ay5jOiBMaWtld2lzZS4KCSogbTY4ay5oOiBMaWtld2lzZS4KCjIwMDMtMDUtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgb3RoZXIvMjg3MwoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhdm9pZF93Y2hhcl90X3R5cGUpOiBBZGQgYnlwYXNzCglleHByZXNzaW9ucyB0byBwcmV2ZW50IHRyaWdnZXJpbmcgb24gcmVjZW50IGN1cnNlcy5oLAoJbGludXgvbmxzLmgsIG9yIFgxMS9YbGliLmguCgkoc3RkaW9fdmFfbGlzdCk6IEFkZCBfR192YV9saXN0IHRvIGJ5cGFzcyBwYXR0ZXJuLgoJKHN0cmljdF9hbnNpX25vdCk6IEFkZCBieXBhc3MgcGF0dGVybiBmb3IgX19TQ09fVkVSU0lPTl9fLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMy0wNS0yMiBSZWtoYSBCaGludGFkZSA8cmVraGFkQGtwaXRjdW1taW5zLmNvbT4KCgkqIGdjYy9jb25maWcvc2gvc2guaCAoVEFSR0VUX1NXSVRDSEVTKTogRGlzcGxheSBhbGwgdGhlIHRhcmdldAoJc3dpdGNoZXMgd2hlbiAtLXRhcmdldC1oZWxwIG9wdGlvbiBpcyBzcGVjaWZpZWQuCgoyMDAzLTA1LTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIGJvb3RzdHJhcC8xMDgwNQoJKiBkb2MvaW5zdGFsbC50ZXhpIChzcGFyYy1zdW4tc29sYXJpczIuNyk6IERvY3VtZW50IGJvb3RzdHJhcAoJZmFpbHVyZSB3aXRoIFN1biBhc3NlbWJsZXIgNS4wIEFscGhhIDAzLzI3Lzk4LgoKMjAwMy0wNS0yMSAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGNvbmZpZy9zcGFyYy9mcmVlYnNkLmggKENQUF9DUFU2NF9ERUZBVUxUX1NQRUMpOiBBZGQgLURfX3NwYXJjdjkKCXRvIG1hdGNoIHN5c3RlbSBjb21waWxlciBjb252ZW50aW9uLgoKMjAwMy0wNS0yMSAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGd0aHItd2luMzIuaCAoX19HVEhSRUFEX0hJREVfV0lOMzJBUEkpOiBUZXN0IGZvciBub256ZXJvCgl2YWx1ZSwgbm90IGp1c3QgaWYgZGVmaW5lZC4KCVVwZGF0ZSBjb3B5cmlnaHQgeWVhci4KCjIwMDMtMDUtMjEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzY0MjgKCSogcGEtaHB1eDEwLmggKExJTktfU1BFQywgTElCX1NQRUMpOiBNb3ZlIC1MIG9wdGlvbnMgZm9yIHByb2ZpbGluZwoJZGlyZWN0b3JpZXMgZnJvbSBMSUJfU1BFQyB0byBMSU5LX1NQRUMuICBFbWl0IHdhcm5pbmcgaWYgYC1wJyBvciBgLXBnJwoJb3B0aW9uIGlzIHVzZWQgd2l0aG91dCBgLXN0YXRpYycuCgkqIHBhLWhwdXgxMS5oIChMSU5LX1NQRUMsIExJQl9TUEVDKTogTGlrZXdpc2UuCgkqIHBhNjQtaHB1eC5oIChMSU5LX1NQRUMsIExJQl9TUEVDKTogTGlrZXdpc2UuCgoyMDAzLTA1LTIxICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoTUFTS19TRVJJQUxJWkVfVk9MQVRJTEUsCglUQVJHRVRfU0VSSUFMSVpFX1ZPTEFUSUxFKTogRGVsZXRlLgoJKE1BU0tfQ09OU1QxNiwgTUFTS19BQlMsIE1BU0tfQUREWCk6IFJlbnVtYmVyIGZsYWcgYml0cy4KCShUQVJHRVRfREVGQVVMVCk6IFJlbW92ZSBNQVNLX1NFUklBTElaRV9WT0xBVElMRS4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW1vdmUgIi1tc2VyaWFsaXplLXZvbGF0aWxlIiBhbmQKCSItbW5vLXNlcmlhbGl6ZS12b2xhdGlsZSIuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHByaW50X29wZXJhbmQpOiBSZW1vdmUgY2hlY2tzIG9mCglUQVJHRVRfU0VSSUFMSVpFX1ZPTEFUSUxFLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5tZCAoKmxzaXUsICpzc2l1KTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW9uIFN1bW1hcnksIFh0ZW5zYSBPcHRpb25zKTogUmVtb3ZlCgkiLW1zZXJpYWxpemUtdm9sYXRpbGUiIGFuZCAiLW1uby1zZXJpYWxpemUtdm9sYXRpbGUiIG9wdGlvbnMuCgoyMDAzLTA1LTIxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1wYXJzZS5pbiAoZm5kZWYpOiBTZXQgREVDTF9TT1VSQ0VfTElORSBhbmQgRklMRSBlYXJsaWVyLgoJKG5lc3RlZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKG5vdHlwZV9uZXN0ZWRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCjIwMDMtMDUtMjEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15LWFiaTogVXBkYXRlIG92ZXJmbG93IHR5cGUgZm9yCglSX1hTVE9STVkxNl8xNiByZWxvYy4KCjIwMDMtMDUtMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChlbnVtIHJpZCk6IFJlbW92ZSBSSURfQk9VTkRFRCwgUklEX1VOQk9VTkRFRC4KCSogYy1wYXJzZS5pbiAocmVzd29yZHMpOiBSZW1vdmUgX19ib3VuZGVkX18gYW5kIF9fdW5ib3VuZGVkX18uCgkocmlkX3RvX3l5KTogUmVtb3ZlIFJJRF9CT1VOREVELCBSSURfVU5CT1VOREVEIHNsb3RzLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBSZW1vdmUgYW1iaWVudC1ib3VuZGVkbmVzcy4KCSogdHJlZS5oICh0cmVlX2NvbW1vbik6IFJlbW92ZSBib3VuZGVkX2ZsYWcuCgkoQk9VTkRFRF9JTkRJUkVDVF9ZUEVfUCwgQk9VTkRFRF9QT0lOVEVSX1RZUEVfUCwKCUJPVU5ERURfUkVGRVJFTkNFX1RZUEVfUCwgTUFZQkVfQk9VTkRFRF9JTkRJUkVDVF9UWVBFX1AsCglNQVlCRV9CT1VOREVEX1BPSU5URVJfVFlQRV9QLCBNQVlCRV9CT1VOREVEX1JFRkVSRU5DRV9UWVBFX1AsCglUUkVFX0JPVU5ERUQsIFRZUEVfTUFJTl9WQVJJQU5UU19QSFlTSUNBTExZX0VRVUFMX1AsCglUWVBFX01BSU5fUEhZU0lDQUxfVkFSSUFOVCwgVFlQRV9CT1VOREVELCBUWVBFX1FVQUxfQk9VTkRFRCk6CglSZW1vdmUuCgkoVFlQRV9RVUFMUyk6IFJlbW92ZSBCT1VOREVELgoJKFRSRUVfRVhQUl9RVUFMUywgVFJFRV9GVU5DX1FVQUxTKTogUmVtb3ZlLgoJKFRZUEVfQk9VTkRFRF9WQUxVRSwgVFlQRV9CT1VOREVEX0JBU0UsIFRZUEVfQk9VTkRFRF9FWFRFTlQsCglUWVBFX0JPVU5ERURfU1VCVFlQRSwgVFlQRV9VTkJPVU5ERURfVkFSSUFOVCwgVFlQRV9QT0lOVEVSX0RFUFRILAoJVFlQRV9BTUJJRU5UX0JPVU5ERURORVNTLCBNQVhfUE9JTlRFUl9ERVBULAoJVkFfTElTVF9QT0lOVEVSX0RFUFRIKTogUmVtb3ZlLgoJKHN0cnVjdCB0cmVlX3R5cGUpOiBSZW1vdmUgcG9pbnRlcl9kZXB0aC4KCjIwMDMtMDUtMjAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfaW50ZWdlcl9saXRlcmFsKTogVXNlCglIT1NUX1dJREVfSU5UX1BSSU5UX0RPVUJMRV9IRVguCgoyMDAzLTA1LTIwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoJICAgIEpvZXJuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGdjc2UuYyAoY3Byb3BfanVtcCk6ICBNYWtlIHVzZSBvZiBSRUdfRVFVQUwgbm90ZXMgb24gYm90aAoJc2V0Y2MgYW5kIGp1bXAsIGlmIHRoZXkgZXhpc3QuICBJZiBzdWJzdGl0dXRlZCBpbnN0cnVjdGlvbgoJZmFpbHMgdG8gdmFsaWRhdGUsIHN0b3JlIGN1cnJlbnQgZWZmb3J0IGluIGEgUkVHX0VRVUFMIG5vdGUuCgkoY3Byb3BfaW5zbik6IERvbid0IGF0dGVtcHQgZnVydGhlciBzdWJzdGl0dXRpb25zIGlmIHRoZQoJY3VycmVudCBpbnN0cnVjdGlvbiBoYXMgYmVlbiBkZWxldGVkLgoJKGxvY2FsX2Nwcm9wX3Bhc3MpOiBMaWtld2lzZS4KCgkqIGp1bXAuYyAocmVkaXJlY3RfanVtcCk6ICBBbHNvIHVwZGF0ZSBSRUdfRVFVQUwgbm90ZSwgaWYKCW9uZSBpcyBhdHRhY2hlZCB0byB0aGUganVtcCBpbnN0cnVjdGlvbi4KCShpbnZlcnRfanVtcCk6IERlbGV0ZSBSRUdfRVFVQUwgbm90ZSBvbiBqdW1wLCBpZiBvbmUgZXhpc3RzLgoKMjAwMy0wNS0yMSAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvOTczOAoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBFbmFibGUKCWV2ZW4gaWYgbm90IGZpcnN0LgoKMjAwMy0wNS0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2VuYXV0b21hdGEuYyAob3V0cHV0X2Rlc2NyaXB0aW9uLCBvdXRwdXRfYXV0b21hdG9uX3VuaXRzLAoJb3V0cHV0X3N0YXRlX2FyY3MpOiBBZGQgbWlzc2luZyBzcGVjaWZpZXJzLgoKMjAwMy0wNS0yMCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvbGliMWZ1bmNzLmFzbTogQXZvaWQgdXNlIG9mIC5MZmUqIGluIC5zaXplIGRpcmVjdGl2ZXMuCgkoZG9fYWJzLCBkb19hZGR4MiwgZG9fYWRkeDQsIGRvX2FkZHg4KTogTmV3IGFzc2VtYmxlciBtYWNyb3MuCgkoX19tdWxzaTMpOiBVc2UgZG9fYWRkeCogaW5zdGVhZCBvZiBBRERYKiBpbnN0cnVjdGlvbnMuICBGb3JtYXR0aW5nLgoJKG5zYXUpOiBSZW5hbWUgdG8gZG9fbnNhdS4gIFByb3ZpZGUgYWx0ZXJuYXRlIHZlcnNpb24gZm9yIHVzZSB3aGVuCgl0aGUgTlNBVSBpbnN0cnVjdGlvbiBpcyBhdmFpbGFibGUuCgkoX191ZGl2c2kzLCBfX2RpdnNpMywgX191bW9kc2kzLCBfX21vZHNpMyk6IFVzZSBkb19uc2F1IG1hY3JvLgoJKF9fZGl2c2kzLCBfX21vZHNpMyk6IFVzZSBkb19hYnMgbWFjcm8gaW5zdGVhZCBvZiBBQlMgaW5zdHJ1Y3Rpb24uCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLWNvbmZpZy5oOiBVcGRhdGUgY29tbWVudHMgdG8gbWF0Y2ggYmludXRpbHMuCgkoWENIQUxfSEFWRV9BQlMsIFhDSEFMX0hBVkVfQUREWCk6IERlZmluZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoTUFTS19BQlMsIE1BU0tfQUREWCk6IERlZmluZS4KCShUQVJHRVRfQUJTLCBUQVJHRVRfQUREWCk6IERlZmluZS4KCShUQVJHRVRfREVGQVVMVCk6IENvbmRpdGlvbmFsbHkgYWRkIE1BU0tfQUJTIGFuZCBNQVNLX0FERFguCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkICJhYnMiLCAibm8tYWJzIiwgImFkZHgiLCBhbmQgIm5vLWFkZHgiLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5tZCAoKmFkZHgyLCAqYWRkeDQsICphZGR4OCwgKnN1YngyLCAqc3VieDQsCgkqc3VieDgpOiBTZXQgcHJlZGljYXRlIGNvbmRpdGlvbiB0byBUQVJHRVRfQUREWC4KCShhYnNzaTIpOiBTZXQgcHJlZGljYXRlIGNvbmRpdGlvbiB0byBUQVJHRVRfQUJTLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5KTogRG9jdW1lbnQgbmV3ICItbWFicyIsICItbW5vLWFicyIsCgkiLW1hZGR4IiwgYW5kICItbW5vLWFkZHgiIG9wdGlvbnMuCgkoWHRlbnNhIE9wdGlvbnMpOiBMaWtld2lzZS4gIEFsc28gdGFnIHNvbWUgb3Bjb2RlIG5hbWVzIHdpdGggQGNvZGUuCgoyMDAzLTA1LTIwICBLZXZpbiBSeWRlIDx1c2VyNDJAemlwLmNvbS5hdT4KCSAgICBXb2xmZ2FuZyBCYW5nZXJ0aCA8YmFuZ2VydGhAZGVhbGlpLm9yZz4KCglQUi8xMDM1NQoJKiBkb2MvZXh0ZW5kLnRleGk6IFB1dCBhIHdhcm5pbmcgaW50byB0aGUgZG9jdW1lbnRhdGlvbgoJb2YgYXR0cmlidXRlIHJlZ3Bhcm0uCgoyMDAzLTA1LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoZXhwcl9sYXN0KTogTmV3IGZuLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgkqIG9iamMvb2JqYy1hY3QgKGV4cHJfbGFzdCk6IFJlbmFtZSB0byBvYmpjX2V4cHJfbGFzdC4KCjIwMDMtMDUtMjAgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guYyAoc2hfcmVnaXN0ZXJfbW92ZV9jb3N0KTogQWRkIGNsYXNlIGZvciBtb3ZpbmcgYmV0d2VlbgoJRlAgcmVnaXN0ZXJzIGFuZCBNQUMgcmVnaXN0ZXJzLgoKMjAwMy0wNS0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtZ25yYy5nYy5jYT4KCgkqIHBhL21pbGxpNjQuUyAoJCRtdWxJKTogRml4IHR5cG8uCgoyMDAzLTA1LTE5ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBhbGlhcy5jIChub25sb2NhbF9tZW50aW9uZWRfcCwgbm9ubG9jYWxfcmVmZXJlbmNlZF9wKQoJKG5vbmxvY2FsX3NldF9wKTogUmVtb3ZlIGluaXRpYWwgYmxhbmsgbGluZS4KCSogZHdhcmYyb3V0LmMgKHNpbXBsZV90eXBlX3NpemVfaW5fYml0cyk6IExpa2V3aXNlLgoJKiBldC1mb3Jlc3QuYyAoZXRfZm9yZXN0X2NyZWF0ZSk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoc3RhYmlsaXplKTogTGlrZXdpc2UuCgkqIGZpeC1oZWFkZXIuYyAod3JpdGVfbGJyYWMpOiBMaWtld2lzZS4KCSogZ3JhcGguYyAoc3RhcnRfZmN0LCBub2RlX2RhdGEpOiBMaWtld2lzZS4KCSoganVtcC5jIChvbmx5X3NldHNfY2MwX3AsIHNldHNfY2MwX3ApOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChnbG9iYWxfcmVnX21lbnRpb25lZF9wKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYml0X3Bvc2l0aW9uKTogTGlrZXdpc2UuCgoyMDAzLTA1LTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4NjQuaCAoTElCX1NQRUMpOiBBZGQgbWlzc2luZyAtbGMgYW5kIGNvcnJlY3QKCS1sdGhyZWFkIHRvIC1scHRocmVhZC4KCjIwMDMtMDUtMTkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9kZWNvZGVfb3B0aW9uKTogRG9uJ3QgYWNjZXB0IGRvbGxhcnMKCWFzIGlkZW50aWZpZXIgY2hhcmFjdGVycyBpbiBhc3NlbWJseS4KCSogZG9jL2NwcC50ZXhpOiBEb2N1bWVudCB0aGlzLgoKMjAwMy0wNS0xOSAgU2V0aCBBcm5vbGQgIDxzYXJub2xkQHdpcmV4LmNvbT4KCSAgICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IERvIG5vdCBhZGQKCXZyc2F2ZV9zaXplIHR3aWNlLgoKMjAwMy0wNS0xOSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZG9jL3RtLnRleGkgKGZ1bmN0aW9uX2FyZyk6IEZpeCB0eXBvLgoKMjAwMy0wNS0xOSAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBjLW9wdHMuYyAoQ09NTUFORF9MSU5FX09QVElPTlMpOiBBZGQgLVdpbnZhbGlkLW9mZnNldG9mIG9wdGlvbi4KCSogYy1jb21tb24uaCAod2Fybl9pbnZhbGlkX29mZnNldG9mKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAod2Fybl9pbnZhbGlkX29mZnNldG9mKTogRGVmaW5lLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1XaW52YWxpZC1vZmZzZXRvZi4KCSogdGVzdHN1aXRlL2crKy5kZy9vdGhlci9vZmZzZXRvZjMuQzogTmV3LgoJKiB0ZXN0c3VpdGUvZysrLmRnL290aGVyL29mZnNldG9mNC5DOiBOZXcuCgoyMDAzLTA1LTE5ICBLZXZpbiBCLiBIZW5kcmlja3MgIDxrZXZpbi5oZW5kcmlja3NAc3ltcGF0aWNvLmNhPgoJICAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9hbGlnbm1lbnRfc3RyaW5nLAoJcnM2MDAwX2FsaWdubWVudF9mbGFncyk6IE5ldyB2YXJpYWJsZXMuCgkocnM2MDAwX3BhcnNlX2FsaWdubWVudF9vcHRpb24pOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBDYWxsIGl0LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChUQVJHRVRfT1BUSU9OUyk6IEFkZCAtbWFsaWduLVhYWCBvcHRpb24uCgkoTUFTS19BTElHTl9QT1dFUiwgTUFTS19BTElHTl9OQVRVUkFMLCBUQVJHRVRfQUxJR05fTkFUVVJBTCk6IE5ldwoJbWFjcm9zLgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChBREpVU1RfRklFTERfQUxJR04pOiBBbHdheXMgdXNlIENPTVBVVEVECgluYXR1cmFsIGFsaWdubWVudCBpZiBUQVJHRVRfTkFUVVJBTF9BTElHTk1FTlQKCShST1VORF9UWVBFX0FMSUdOKTogQWx3YXlzIHVzZSBkZWZhdWx0IHJlY29yZCBhbGlnbm1lbnQgaWYKCVRBR0VUX05BVFVSQUxfQUxJR05NRU5ULgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChBREpVU1RfRklFTERfQUxJR04pOiBTYW1lCgkoUk9VTkRfVFlQRV9BTElHTik6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChBREpVU1RfRklFTERfQUxJR04pOiBTYW1lCgkoUk9VTkRfVFlQRV9BTElHTik6IFNhbWUuCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW9uIFN1bW1hcnksIFBvd2VyUEMgT3B0aW9ucyk6IERvY3VtZW50CgluZXcgb3B0aW9ucy4KCjIwMDMtMDUtMTkgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogV2hlbiBzZXR0aW5nIHRoZSBERUNMX0FTU0VNQkxFUl9OQU1FCglvZiBhIGZ1bmN0aW9uIHVzaW5nIEFTTVNQRUMsIHByZXBlbmQgYSBzdGFyLgoKMjAwMy0wNS0xOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfcik6IEF2b2lkIGdlbmVyYXRpbmcgJiogZHVyaW5nIGlubGluZQoJc3Vic3RpdHV0aW9uLgoKMjAwMy0wNS0xOSAgQW5kcmV3IE1hY2xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9leHBhbmRfcHJvbG9ndWUpOiBEbwoJbm90IG1hcmsgYXNzaWdubWVudHMgdG8gdGhlIGhhcmQgZnJhbWUgcG9pbnRlciBhcyBiZWluZyBzdGFjawoJZnJhbWUgcmVsYXRlZC4KCSh4c3Rvcm15MTZfZXhwYW5kX2VwaWxvZ3VlKTogTWFyayBhZGp1c3RtZW50cyB0byB0aGUgc3RhY2sKCXBvaW50ZXIgYXMgYmVpbmcgc3RhY2sgZnJhbWUgcmVsYXRlZC4KCjIwMDMtMDUtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19MT0FEX0RFTEFZLCBJU0FfSEFTX1hGRVJfREVMQVksCglJU0FfSEFTX0ZDTVBfREVMQVksIElTQV9IQVNfSElMT19JTlRFUkxPQ0tTKTogTmV3IG1hY3Jvcy4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgaGlsb19vcGVyYW5kLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGhpbG9fb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCgkobWlwc19hZGp1c3RfaW5zbl9sZW5ndGgpOiBBY2NvdW50IGZvciB0aGUgbnVtYmVyIG5vcHMgdGhhdCBtaWdodAoJYmUgbmVlZGVkIHRvIGF2b2lkIGhhcmR3YXJlIGhhemFyZHMuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGRzbG90KTogUmVtb3ZlIGF0dHJpYnV0ZS4KCShoYXphcmQpOiBOZXcgYXR0cmlidXRlLgoJKGNhbl9kZWxheSk6IFVzZSBpdC4gIENoZWNrIGZvciBjYWxscywgYnJhbmNoZXMgJiBqdW1wcy4KCShtdWxkaTMpOiBVc2UgdGhlIHN0YW5kYXJkIGRtdWx0IHBhdHRlcm4gZm9yIG1pcHMxNiBjb2RlLgoJKG11bGRpM19pbnRlcm5hbCwgbXVsZGkzX2ludGVybmFsMik6IEFkanVzdCBjb25kaXRpb25zIGFjY29yZGluZ2x5LgoKMjAwMy0wNS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAoZmluYWxfcHJlc2Nhbl9pbnNuLAoJbWlwc19jb3VudF9tZW1vcnlfcmVmcywgbWlwc19maWxsX2RlbGF5X3Nsb3QpOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoZGVsYXlfdHlwZSwgZHNsb3RzX2xvYWRfdG90YWwsCglkc2xvdHNfbG9hZF9maWxsZWQsIGRzbG90c19qdW1wX3RvdGFsLCBkc2xvdHNfanVtcF9maWxsZWQsCglkc2xvdHNfbnVtYmVyX25vcHMsIG51bV9yZWZzLCBtaXBzX2xvYWRfcmVnLCBtaXBzX2xvYWRfcmVnMiwKCW1pcHNfbG9hZF9yZWczLCBtaXBzX2xvYWRfcmVnNCk6IFJlbW92ZS4KCShNQVNLX1NUQVRTKTogUmVtb3ZlLgoJKE1BU0tfRVhQTElDSVRfUkVMT0NTKTogUmV1c2UgaXRzIHZhbHVlLgoJKFRBUkdFVF9TVEFUUyk6IFJlbW92ZS4KCShUQVJHRVRfU1dJVENIRVMpOiBUdXJuIC1tc3RhdHMgYW5kIC1tbm8tc3RhdHMgaW50byBuby1vcHMuCglXYXJuIHRoYXQgLW1zdGF0cyBpcyBub3cgaWdub3JlZC4KCShGSU5BTF9QUkVTQ0FOX0lOU04pOiBVbmRlZmluZS4KCShEQlJfT1VUUFVUX1NFUUVORCk6IFJlbW92ZSBoYW5kbGluZyBvZiBkc2xvdCBzdGF0aXN0aWNzLgoJKEFTTV9PVVRQVVRfUkVHX1BPUCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGRzbG90c19sb2FkX3RvdGFsLCBkc2xvdHNfbG9hZF9maWxsZWQsCglkc2xvdHNfanVtcF90b3RhbCwgZHNsb3RzX2p1bXBfZmlsbGVkLCBkc2xvdHNfbnVtYmVyX25vcHMsIG51bV9yZWZzLAoJbWlwc19sb2FkX3JlZywgbWlwc19sb2FkX3JlZzIsIG1pcHNfbG9hZF9yZWczLCBtaXBzX2xvYWRfcmVnNCwKCW1pcHNfZmlsbF9kZWxheV9zbG90LCBtaXBzX2NvdW50X21lbW9yeV9yZWZzLAoJZmluYWxfcHJlc2Nhbl9pbnNuKTogUmVtb3ZlLgoJKG91dHB1dF9ibG9ja19tb3ZlKTogUmVtb3ZlIGNhbGxzIHRvIG1pcHNfY291bnRfbWVtb3J5X3JlZnMuCgkocHJpbnRfb3BlcmFuZCk6IFJlbW92ZSBwcmludGluZyBvZiAjbm9wIGZvciBUQVJHRVRfU1RBVFMuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBSZW1vdmUgVEFSR0VUX1NUQVRTIGNvZGUuCglSZW9yZ2FuaXplIHNldHRpbmcgb2YgZm5ubWFlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBSZW1vdmUgaGFuZGxpbmcgb2YgZHNsb3Qgc3RhdGlzdGljcwoJdGhyb3VnaG91dCBmaWxlLiAgQ2hhbmdlIGFsbCBmY21wIHBhdHRlcm5zIGludG8gbm9ybWFsIGFzbQoJdGVtcGxhdGVzLCByZW1vdmluZyBjYWxscyB0byBtaXBzX2ZpbGxfZGVsYXlfc2xvdC4KCSogZG9jL2ludm9rZS50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiAtbXN0YXRzLgoKMjAwMy0wNS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NsYXNzX21heF9ucmVncyk6IFJldHVybiB0aGUgbnVtYmVyIG9mCgl3b3JkcyBpbiB0aGUgbW9kZS4KCjIwMDMtMDUtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FibGUgZXhwbGljaXQKCXJlbG9jcyBmb3Igb2xkIEFCSXMgdW5sZXNzIHVzaW5nIGdhcy4KCjIwMDMtMDUtMTggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiBnX3N3aXRjaF92YWx1ZS4KCjIwMDMtMDUtMTggIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGZsYWdzLmggKGdfc3dpdGNoX3ZhbHVlKTogQ2hhbmdlIHRvIGFuIHVuc2lnbmVkCglIT1NUX1dJREVfSU5ULgoJKiB0b3BsZXYuYyAoZ19zd2l0Y2hfdmFsdWUpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChzbWFsbF9zeW1ib2xpY19vcGVyYW5kKTogUmVtb3ZlCglnX3N3aXRjaF92YWx1ZSBjYXN0LgoJKGFscGhhX2luX3NtYWxsX2RhdGFfcCk6IENhc3Qgc2l6ZSB0byBhbiB1bnNpZ25lZAoJSE9TVF9XSURFX0lOVC4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9pbl9zbWFsbF9kYXRhX3ApOiBDYXN0IHNpemUgdG8gYW4KCXVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKGdfc3dpdGNoX3ZhbHVlLCBnX3N3aXRjaF9zZXQpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9BTElHTkVEX0RFQ0xfTE9DQUwpOiBEZWNsYXJlIGdfc3dpdGNoX3NldC4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9pbl9zbWFsbF9kYXRhX3ApOiBDYXN0IHNpemUgdG8gYW4KCXVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkobTMycl9hc21fZmlsZV9zdGFydCk6IFVzZSBIT1NUX1dJREVfSU5UX1BSSU5UX1VOU0lHTkVELgoJKiBjb25maWcvbTMyci9tMzJyLmggKGdfc3dpdGNoX3ZhbHVlLCBnX3N3aXRjaF9zZXQpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTik6IERlY2xhcmUgZ19zd2l0Y2hfdmFsdWUuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZmlsZV9zdGFydCk6IFVzZQoJSE9TVF9XSURFX0lOVF9QUklOVF9VTlNJR05FRC4KCShzbWFsbF9kYXRhX29wZXJhbmQpOiBDYXN0IHN1bW1hbmQgdG8gdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShyczYwMDBfZWxmX2luX3NtYWxsX2RhdGFfcCk6IENhc3Qgc2l6ZSB0byB1bnNpZ25lZAoJSE9TVF9XSURFX0lOVC4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChnX3N3aXRjaF92YWx1ZSwgZ19zd2l0Y2hfc2V0KToKCVJlbW92ZS4KCShTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IERlY2xhcmUgZ19zd2l0Y2hfdmFsdWUgYW5kCglnX3N3aXRjaF9zZXQuCgkoQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogRGVjbGFyZSBnX3N3aXRjaF92YWx1ZSBhbmQgcmVtb3ZlCglnX3N3aXRjaF92YWx1ZSBjYXN0LgoKMjAwMy0wNS0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBtaWRkbGUtZW5kLzEwNDcyCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbWNweSk6ICBDYWxsIGZvcmNlX29wZXJhbmQgb24KCWV4cHJlc3Npb25zIGFuZCB1c2Ugc2ltcGxpZnlfZ2VuX2JpbmFyeSB0byBjcmVhdGUgdGhlIGFkZGl0aW9uLgoKMjAwMy0wNS0xOCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IFVzZSBkZWZpbmVfY29uc3RhbnRzIGZvciB1bnNwZWMgbnVtYmVycy4KCjIwMDMtMDUtMTggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oOiBEZWZpbmUgc3BhcmMgZm9yIG5vdy4KCjIwMDMtMDUtMTggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogQ2xlYXIgeG1fZmlsZSwgbWRfZmlsZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggcGFzcy4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oOiBSZW1vdmUgYWJvdXQgMzAwMCBsaW5lcyBvZgoJdGFyZ2V0LWluZGVwZW5kZW50IGNvbW1lbnRzLiAgVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoJKiBkb2MvY29sbGVjdDIudGV4aTogR05VIENDIC0+IEdDQy4KCSogZG9jL2hlYWRlcmRpcnMudGV4aTogR05VIENDIC0+IEdDQy4KCjIwMDMtMDUtMTggIEdhYnJpZWwgRG9zIFJlaXMgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBoYXNodGFibGUuaCAoc3RydWN0IGh0X2lkZW50aWZpZXIpOiBBZGQgZGF0YSBtZW1iZXIgImhhc2hfdmFsdWUiLgoJKiBoYXNodGFibGUuYyAoaHRfbG9va3VwKTogVXNlIGl0IHdoZW4gc2VhcmNoaW5nLCByZW1lbWJlci4KCShodF9leHBhbmQpOiBEbyBub3QgcmVjb21wdXRlLgoJKiB0cmVlLmggKElERU5USUZJRVJfSEFTSF9WQUxVRSk6IE5ldyBtYWNyby4KCjIwMDMtMDUtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY292LWlvLmMgKGdjb3ZfcmVhZF9ieXRlcyk6IEZpeCBmcmVhZCB0aGlua28uCgoyMDAzLTA1LTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLWNwcGJ1aWx0aW4uYyAoVEFSR0VUX09TX0NQUF9CVUlMVElOUywgVEFSR0VUX09CSkZNVF9DUFBfQlVJTFRJTlMpOgoJRGVmYXVsdCBoZXJlLgoJKGNfY3BwX2J1aWx0aW5zKTogSW52b2tlIFRBUkdFVF9PQkpGTVRfQ1BQX0JVSUxUSU5TKCkuCgkqIGRlZmF1bHRzLmg6IERvbid0IGRlZmF1bHQgVEFSR0VUX09TX0NQUF9CVUlMVElOUyBoZXJlLgoJKiBjb25maWcvZWxmb3MuaCAoVEFSR0VUX09CSkZNVF9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19FTEZfXy4KCSogY29uZmlnL2ZyZWVic2Qtc3BlYy5oLCBjb25maWcvbmV0YnNkLWVsZi5oLCBjb25maWcvYWxwaGEvZ251LmgsCgljb25maWcvYXJtL2xpbnV4LWVsZi5oLCBjb25maWcvYXJtL3J0ZW1zLWVsZi5oLAoJY29uZmlnL2FybS91bmtub3duLWVsZi5oLCBjb25maWcvY3Jpcy9jcmlzLmgsIGNvbmZpZy9jcmlzL2xpbnV4LmgsCgljb25maWcvaDgzMDAvZWxmLmgsIGNvbmZpZy9pMzcwL2xpbnV4LmgsIGNvbmZpZy9pMzg2L2Jlb3MtZWxmLmgsCgljb25maWcvaTM4Ni9nbnUuaCwgY29uZmlnL2kzODYvbGludXguaCwgY29uZmlnL2kzODYvbGludXg2NC5oLAoJY29uZmlnL2kzODYvbW9zcy5oLCBjb25maWcvaTM4Ni9ydGVtc2VsZi5oLCBjb25maWcvaWE2NC9pYTY0LmgsCgljb25maWcvbTY4ay9ydGVtc2VsZi5oLCBjb25maWcvbWNvcmUvbWNvcmUtZWxmLmgsIGNvbmZpZy9taXBzL2xpbnV4LmgsCgljb25maWcvcGEvcGEtbGludXguaCwgY29uZmlnL3JzNjAwMC9saW51eC5oLCBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCwKCWNvbmZpZy9yczYwMDAvc3lzdjQuaCwgY29uZmlnL3JzNjAwMC92eHdvcmtzLmgsIGNvbmZpZy9zMzkwL2xpbnV4LmgsCgljb25maWcvc2gvY29mZi5oLCBjb25maWcvc2gvZWxmLmgsIGNvbmZpZy9zaC9ydGVtc2VsZi5oLAoJY29uZmlnL3NoL3NoLmgsIGNvbmZpZy9zcGFyYy9saW51eC5oLCBjb25maWcvc3BhcmMvbGludXg2NC5oLAoJY29uZmlnL3NwYXJjL29wZW5ic2Q2NC5oLCBjb25maWcvc3BhcmMvc3A2NC1lbGYuaCwKCWNvbmZpZy9zcGFyYy9zcDg2eC1lbGYuaCwgY29uZmlnL3h0ZW5zYS9lbGYuaCwgY29uZmlnL3h0ZW5zYS9saW51eC5oOgoJRG9uJ3QgZGVmaW5lIF9fRUxGX18uCgkqIGNvbmZpZy9hbHBoYS5oLCBjb25maWcvbTY4ay9saW51eC5oIChUQVJHRVRfT0JKRk1UX0NQUF9CVUlMVElOUyk6CglEZWZpbmUgX19FTEZfXy4KCSogZG9jL2NwcC50ZXhpOiBEb2N1bWVudCBfX0VMRl9fLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX09CSkZNVF9DUFBfQlVJTFRJTlMuCSoKCjIwMDMtMDUtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKHZhbGlkYXRlX2FyZ2xpc3QpOiBFbGltaW5hdGUgbGliaWJlcnR5IFZBXyBtYWNyb3MsCglhbHdheXMgdXNlIHN0ZGFyZy4KCSogYy1lcnJvcnMuYyAocGVkd2Fybl9jOTkpOiBMaWtld2lzZS4KCSogYy1mb3JtYXQuYyAoc3RhdHVzX3dhcm5pbmcpOiBMaWtld2lzZS4KCSogYy1zZW1hbnRpY3MuYyAoYnVpbGRfc3RtdCk6IExpa2V3aXNlLgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbCwgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWUpOiBMaWtld2lzZS4KCSogY29sbGVjdDIuYyAobm90aWNlLCBmYXRhbF9wZXJyb3IsIGZhdGFsLCBlcnJvcik6IExpa2V3aXNlLgoJKiBjcHBlcnJvci5jIChjcHBfZXJyb3IsIGNwcF9lcnJvcl93aXRoX2xpbmUpOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5jIChidWlsZF9tZXNzYWdlX3N0cmluZywgb3V0cHV0X3ByaW50ZiwKCW91dHB1dF92ZXJiYXRpbSwgdmVyYmF0aW0sIGluZm9ybSwgd2FybmluZywgcGVkd2FybiwgZXJyb3IsIHNvcnJ5LAoJZmF0YWxfZXJyb3IsIGludGVybmFsX2Vycm9yLCB3YXJuaW5nX3dpdGhfZGVjbCwgcGVkd2Fybl93aXRoX2RlY2wsCgllcnJvcl93aXRoX2RlY2wsIGZub3RpY2UpOiBMaWtld2lzZS4KCSogZHdhcmYyYXNtLmMgKGR3Ml9hc21fb3V0cHV0X2RhdGEsIGR3Ml9hc21fb3V0cHV0X2RlbHRhLAoJZHcyX2FzbV9vdXRwdXRfb2Zmc2V0LCBkdzJfYXNtX291dHB1dF9wY3JlbCwgZHcyX2FzbV9vdXRwdXRfYWRkciwKCWR3Ml9hc21fb3V0cHV0X2FkZHJfcnR4LCBkdzJfYXNtX291dHB1dF9uc3RyaW5nLAoJZHcyX2FzbV9vdXRwdXRfZGF0YV91bGViMTI4LCBkdzJfYXNtX291dHB1dF9kYXRhX3NsZWIxMjgsCglkdzJfYXNtX291dHB1dF9kZWx0YV91bGViMTI4LCBkdzJfYXNtX291dHB1dF9kZWx0YV9zbGViMTI4LAoJZHcyX2FzbV9vdXRwdXRfZW5jb2RlZF9hZGRyX3J0eCk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChnZW5fcnR4LCBnZW5fcnR2ZWMpOiBMaWtld2lzZS4KCSogZXJyb3JzLmMgKHdhcm5pbmcsIGVycm9yLCBmYXRhbCwgaW50ZXJuYWxfZXJyb3IpOiBMaWtld2lzZS4KCSogZmluYWwuYyAob3V0cHV0X29wZXJhbmRfbG9zc2FnZSwgYXNtX2ZwcmludGYpOiBMaWtld2lzZS4KCSogZml4LWhlYWRlci5jIChmYXRhbCk6IExpa2V3aXNlLgoJKiBnY2MuYyAoZmF0YWwsIGVycm9yLCBub3RpY2UpOiBMaWtld2lzZS4KCSogZ2Nvdi5jIChmbm90aWNlKTogTGlrZXdpc2UuCgkqIGdlbmF0dHJ0YWIuYyAoYXR0cl9ydHgsIGF0dHJfcHJpbnRmKTogTGlrZXdpc2UuCgkqIGdlbmd0eXBlLmMgKGVycm9yX2F0X2xpbmUsIHhhc3ByaW50Ziwgb3ByaW50Zik6IExpa2V3aXNlLgoJKiBnZW5zdXBwb3J0LmMgKG1lc3NhZ2Vfd2l0aF9saW5lKTogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYyAoZmF0YWwsIGVycm9yKTogTGlrZXdpc2UuCgkqIHByb3RvaXplLmMgKG5vdGljZSk6IExpa2V3aXNlLgoJKiByYS1kZWJ1Zy5jIChyYV9kZWJ1Z19tc2cpOiBMaWtld2lzZS4KCSogcmVhZC1ydGwuYyAoZmF0YWxfd2l0aF9maWxlX2FuZF9saW5lKTogTGlrZXdpc2UuCgkqIHJ0bC1lcnJvci5jIChlcnJvcl9mb3JfYXNtLCB3YXJuaW5nX2Zvcl9hc20pOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZCwgYnVpbGRfbnQsIGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCk6IExpa2V3aXNlLgoKMjAwMy0wNS0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogZGVmYXVsdHMuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMsIENQUF9QUkVERUZJTkVTKTogUmVtb3ZlLgoJKiBnY2MuYyAoY3BwX3ByZWRlZmluZXMpOiBSZW1vdmUuCgkoY3BwX3VuaXF1ZV9vcHRpb25zLCBkb19zcGVjXzEpOiBSZW1vdmUgaGFuZGxpbmcgb2YgQ1BQX1BSRURFRklORVMuCgkoc3RhdGljX3NwZWNzKTogUmVtb3ZlIHByZWRlZmluZXMuCgkqIHN5c3RlbS5oOiBQb2lzb24gQ1BQX1BSRURFRklORVMuCgkqIGNvbmZpZy9mcmVlYnNkLmgsIGNvbmZpZy9vcGVuYnNkLmgsIGNvbmZpZy9wdHg0LmgsIGNvbmZpZy9zdnIzLmgsCgljb25maWcvc3ZyNC5oLCBkb2MvdG0udGV4aTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gQ1BQX1BSRURFRklORVMuCgoyMDAzLTA1LTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb25maWcvbTY4ay9ocDMyMC5oLCBjb25maWcvbTY4ay9saW51eC5oLCBjb25maWcvbTY4ay9tNjhrLW5vbmUuaCwKCWNvbmZpZy9tNjhrL202OGsuaCwgY29uZmlnL202OGsvbTY4a2VtYi5oLCBjb25maWcvbTY4ay9tNjhrdjQuaCwKCWNvbmZpZy9tNjhrL29wZW5ic2QuaCwgY29uZmlnL202OGsvcnRlbXNlbGYuaDogUmVtb3ZlIENQUF9QUkVERUZJTkVTLAoJdXNlIFRBUkdFVF9PU19DUFBfQlVJTFRJTlMgYW5kIFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TIGluc3RlYWQuCgoyMDAzLTA1LTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJUFIgYy85MjA5CgkqIGMtY29tbW9uLmMsIGMtY29tbW9uLmggKGRvbGxhcnNfaW5faWRlbnQpOiBSZW1vdmUuCgkqIGMtb3B0cy5jIChET0xMQVJTX0lOX0lERU5USUZJRVJTKTogRGVmYXVsdCB0byB0cnVlLgoJKGNfY29tbW9uX2luaXRfb3B0aW9ucywgY19jb21tb25fZGVjb2RlX29wdGlvbik6IFNldCBkb2xsYXJzX2luX2lkZW50LgoJKiBjcHBoYXNoLmggKHdhcm5lZF9kb2xsYXIpOiBSZW5hbWUgd2Fybl9kb2xsYXJzLgoJKiBjcHBpbml0LmMgKHN0cnVjdCBsYW5nX2ZsYWdzLCBsYW5nX2RlZmF1bHRzLCBjcHBfc2V0X2xhbmcpCglQZXJtaXQgZG9sbGFycyByZWdhcmRsZXNzIG9mIC1zdGQ9LgoJKHBvc3Rfb3B0aW9ucyk6IFNldCB3YXJuX2RvbGxhcnMuCgkqIGNwcGxleC5jIChmb3Jtc19pZGVudGlmaWVyX3ApOiBVc2Ugd2Fybl9kb2xsYXJzLgoJKiBjb25maWcvZGFyd2luLmgsIGNvbmZpZy9hbHBoYS92bXMuaCwgY29uZmlnL202OGhjMTEvbTY4aGMxMS5oOgoJUmVtb3ZlIHJlZHVuZGFudCBkZWZpbml0aW9ucyBvZiBET0xMQVJTX0lOX0lERU5USUZJRVJTLgoJKiBkb2MvY3BwLnRleGksIGRvYy9jcHBvcHRzLnRleGksIGRvYy9pbnZva2UudGV4aSwgZG9jL3RtLnRleGk6CglVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDMtMDUtMTcgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogVXNlCglIT1NUX1dJREVfSU5UX1BSSU5UX0RFQyBmb3IgZnByaW50ZiBhbmQgJXdkIGZvciBhc21fZnByaW50ZiB3aGVuCglmb3JtYXR0aW5nIGEgSE9TVF9XSURFX0lOVC4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKMjAwMy0wNS0xNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFJlbW92ZSBpbmZvcm1hdGlvbiBhYm91dCBkZXN1cHBvcnRlZCB0YXJnZXRzLgoKMjAwMy0wNS0xNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9tNjhrL2NvZmYuaDogUmVtb3ZlIHN1cHBvcnQgZm9yIFN1biBGUEEgYW5kIFN1biBTS1kgYm9hcmQuCgkqIGNvbmZpZy9tNjhrL2xpbnV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLW5vbmUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL3Nncy5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYzogTGlrZXdpc2UuCgkqIGRvYy9tZC50ZXhpIChNYWNoaW5lIENvbnN0cmFpbnRzKTogUmVtb3ZlIFN1biBGUEEgc3BlY2lmaWMKCWNvbnN0cmFpbnRzLgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5KTogUmVtb3ZlIC1tZnBhLgoJKE02ODB4MCBPcHRpb25zKTogTGlrZXdpc2UuCgoyMDAzLTA1LTE3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogU2ltcGxpZnkgUkVBTF9UWVBFIGxvZ2ljLgoKMjAwMy0wNS0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY29uZmlnL3NvbDIuaDogQWRkIFRBUkdFVF9TVUJfT1NfQ1BQX0JVSUxUSU5TLgoJKiBjb25maWcvc3BhcmMvbGl0ZWVsZi5oLCBjb25maWcvc3BhcmMvb3BlbmJzZDY0LmgsCgljb25maWcvc3BhcmMvcnRlbXNlbGYuaCwgY29uZmlnL3NwYXJjL3NvbDItNjQuaCwKCWNvbmZpZy9zcGFyYy9zcDY0LWVsZi5oLCBjb25maWcvc3BhcmMvc3A4NngtZWxmLmg6CglVcGRhdGUgZm9yIHVzZSBvZiBUQVJHRVRfU1VCX09TX0NQUF9CVUlMVElOUy4KCjIwMDMtMDUtMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGk5NjAvaTk2MC5oLCBpOTYwL3J0ZW1zLmg6IFVzZSBUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TIGFuZAoJVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMgaW4gcHJlZmVyZW5jZSB0byBDUFBfUFJFREVGSU5FUy4KCjIwMDMtMDUtMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy5nY2MgKHNwYXJjLSotc3lzdjQqKTogQWRkIHNwYXJjL3N5c3Y0LW9ubHkuaC4KCSogc3BhcmMvYW91dC5oLCBzcGFyYy9lbGYuaCwgc3BhcmMvZnJlZWJzZC5oLCBzcGFyYy9saW51eC5oLAoJc3BhcmMvbGludXg2NC5oLCBzcGFyYy9saXRlLmgsIHNwYXJjL2xpdGVjb2ZmLmgsIHNwYXJjL2xpdGVlbGYuaCwKCXNwYXJjL25ldGJzZC1lbGYuaCwgc3BhcmMvb3BlbmJzZC5oLCBzcGFyYy9vcGVuYnNkNjQuaCwKCXNwYXJjL3BiZC5oLCBzcGFyYy9ydGVtc2VsZi5oLCBzcGFyYy9zb2wyLTY0LmgsIHNwYXJjL3NvbDItYmkuaCwKCXNwYXJjL3NvbDIuaCwgc3BhcmMvc3A2NC1lbGYuaCwgc3BhcmMvc3A4Ni1lbGYuaCwgc3BhcmMvc3BhcmMuaCwKCXNwYXJjL3N5c3Y0LmgsCgkqIHNwYXJjL3N5c3Y0LW9ubHkuaDogTmV3LgoKMjAwMy0wNS0xNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IENoZWNrIGZvciB6ZXJvIHNpemUgYXJncy4KCjIwMDMtMDUtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNmZ2xvb3BhbmFsLmMgKHRlc3RfZm9yX2l0ZXJhdGlvbik6IFVzZSBzdHJpbmcgY29uY2F0ZW50YXRpb24gb24KCUhPU1RfV0lERV9JTlRfUFJJTlRfKiBmb3JtYXQgc3BlY2lmaWVyIHRvIGNvbGxhcHNlIG11bHRpcGxlCglmdW5jdGlvbiBjYWxscyBpbnRvIG9uZS4KCSogZGJ4b3V0LmMgKGRieG91dF9zeW1ib2wpOiBMaWtld2lzZS4KCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9TSVpFX0RJUkVDVElWRSk6IExpa2V3aXNlLgoJKiBkd2FyZjJhc20uYyAoZHcyX2FzbV9vdXRwdXRfZGF0YV91bGViMTI4LAoJZHcyX2FzbV9vdXRwdXRfZGF0YV9zbGViMTI4KTogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmMgKGRlYnVnX2RlY2lzaW9uXzIpOiBMaWtld2lzZS4KCSogbG9vcC5jIChlbWl0X3ByZWZldGNoX2luc3RydWN0aW9ucyk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogTGlrZXdpc2UuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZV9icmllZiwgcHJpbnRfbm9kZSk6IExpa2V3aXNlLgoJKiByYS1kZWJ1Zy5jIChkdW1wX2lncmFwaCwgZHVtcF9ncmFwaF9jb3N0LAoJZHVtcF9zdGF0aWNfaW5zbl9jb3N0KTogTGlrZXdpc2UuCgkqIHJhLXJld3JpdGUuYyAoZHVtcF9jb3N0KTogTGlrZXdpc2UuCgkqIHNkYm91dC5jIChQVVRfU0RCX0lOVF9WQUwsIFBVVF9TREJfU0laRSk6IExpa2V3aXNlLgoJKiBzcmVhbC5jIChkdW1wX3NyZWFsKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jICh1bnJvbGxfbG9vcCwgcHJlY29uZGl0aW9uX2xvb3BfcCk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfdnRhYmxlX2VudHJ5KTogTGlrZXdpc2UuCgoJKiBhdnIuYyAoYXZyX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSwKCWF2cl9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUsIHByaW50X29wZXJhbmQpOiBGaXggZm9ybWF0IHNwZWNpZmllcgoJd2FybmluZ3MuCgkoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBNYXJrIHBhcmFtZXRlciB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgkqIGF2ci5oIChGVU5DVElPTl9WQUxVRV9SRUdOT19QKTogRml4IHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCjIwMDMtMDUtMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBVbmlmeSB0aGUgVEFSR0VUX1NUUklORwoJYW5kICEgVEFSR0VUX1NUUklORyBjYXNlcy4KCgkqIGRvYy9jcHBvcHRzLnRleGkgKC11bmRlZik6IEZpeCB0ZXhpbmZvIHdhcm5pbmcuCgoJKiBkb2MvY3Bwb3B0cy50ZXhpICgtSCk6IERvY3VtZW50IHRoYXQgLUggd29ya3MgZm9yIFBDSCBmaWxlcyB0b28uCgkqIGNwcGZpbGVzLmMgKHZhbGlkYXRlX3BjaCk6IFdoZW4gLUggaXMgdXNlZCwgcHJpbnQgc29tZSBpbmZvcm1hdGlvbgoJYWJvdXQgUENIIGZpbGVzIGZvdW5kLgoKMjAwMy0wNS0xNiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9taXBzL3QtZWxmOiBSZW1vdmUgb2Jzb2xldGUgcnVsZXMgYWRkaW5nIGRlcGVuZGVuY2llcyBvbiB0bS5oLgoJKiBjb25maWcvbWlwcy90LWlzYTMyNjQsIGNvbmZpZy9taXBzL3QtcjM5MDA6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy90LXNyNzFrOiBMaWtld2lzZS4KCjIwMDMtMDUtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFyYy5jIChhcmNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlLAoJYXJjX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IEZpeCBmb3JtYXQgc3BlY2lmaWVyIHdhcm5pbmdzLgoJKiBhcmMuaCAoTEFSR0VfSU5UKTogRml4IHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCgkqIHY4NTAuYyAocHJpbnRfb3BlcmFuZCk6IEZpeCBmb3JtYXQgc3BlY2lmaWVyIHdhcm5pbmdzLgoKCSogbnMzMmsuYyAoQURKU1AsIG5zMzJrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IEZpeCBmb3JtYXQKCXNwZWNpZmllciB3YXJuaW5ncy4KCgkqIG1jb3JlLmMgKG1jb3JlX3ByaW50X29wZXJhbmRfYWRkcmVzcywgbWNvcmVfcHJpbnRfb3BlcmFuZCk6IEZpeAoJZm9ybWF0IHNwZWNpZmllciB3YXJuaW5ncy4KCgkqIGlwMmsuYyAoZnVuY3Rpb25fcHJvbG9ndWUsIGZ1bmN0aW9uX2VwaWxvZ3VlLCBwcmludF9vcGVyYW5kKToKCUZpeCBmb3JtYXQgc3BlY2lmaWVyIHdhcm5pbmdzLgoJKiBpcDJrLm1kOiBMaWtld2lzZS4KCgkqIGk5NjAuYyAoaTk2MF9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUsIGk5NjBfcHJpbnRfb3BlcmFuZCwKCWk5NjBfcHJpbnRfb3BlcmFuZF9hZGRyKTogRml4IGZvcm1hdCBzcGVjaWZpZXIgd2FybmluZ3MuCgoJKiBpMzcwLmMgKGFzY2ViYywgZWJjYXNjKTogV3JhcCBpbiBtYWNyb3MgY29udHJvbGxpbmcgdXNhZ2UuCgkoaTM3MF9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBGaXggZm9ybWF0IHNwZWNpZmllciB3YXJuaW5ncy4KCSogaTM3MC5oIChQUklOVF9PUEVSQU5EKTogTGlrZXdpc2UuCgoJKiBmcjMwLmMgKGZyMzBfcHJpbnRfb3BlcmFuZCk6IEZpeCBmb3JtYXQgc3BlY2lmaWVyIHdhcm5pbmdzLgoKCSogZHNwMTZ4eC5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBGaXggZm9ybWF0IHNwZWNpZmllciB3YXJuaW5nLgoJKiBkc3AxNnh4LmggKElOQ0xVREVfREVGQVVMVFMpOiBBZGQgbWlzc2luZyBpbml0aWFsaXplcnMuCgoJKiBjNHguYyAoYzR4X3ByaW50X29wZXJhbmQsIGM0eF9wcmludF9vcGVyYW5kX2FkZHJlc3MpOiBGaXggZm9ybWF0CglzcGVjaWZpZXIgd2FybmluZ3MuCgoJKiBhbHBoYS5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MsIGFscGhhX3N0YXJ0X2Z1bmN0aW9uLAoJdW5pY29zbWtfb3V0cHV0X3NzaWIpOiBVc2Ugc3RyaW5nIGNvbmNhdGVudGF0aW9uIG9uCglIT1NUX1dJREVfSU5UX1BSSU5UXyogZm9ybWF0IHNwZWNpZmllciB0byBjb2xsYXBzZSBtdWx0aXBsZQoJZnVuY3Rpb24gY2FsbHMgaW50byBvbmUuCgkqIGFybS5jIChhcm1fcHJpbnRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjcmlzLmMgKGNyaXNfYXNtX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBmcnYuYyAoZnJ2X2FzbV9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQsIHByb2Nlc3Nfc2V0KTogTGlrZXdpc2UuCgkqIG02OGsuYyAobTY4a19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUsIG02OGtfb3V0cHV0X21pX3RodW5rKToKCUxpa2V3aXNlLgoJKiBtaXBzL2lyaXM1Z2FzLmggKFBVVF9TREJfU0laRSk6IExpa2V3aXNlLgoJKiBtaXBzLmggKFBVVF9TREJfSU5UX1ZBTCwgUFVUX1NEQl9TSVpFKTogTGlrZXdpc2UuCgkqIHBhLmMgKG91dHB1dF9kaXZfaW5zbiwgcGFfYXNtX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBwYS5oIChQUklOVF9PUEVSQU5EX0FERFJFU1MpOiBMaWtld2lzZS4KCSogcnM2MDAwLmMgKHJzNjAwMF92YV9zdGFydCwgcHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogTGlrZXdpc2UuCgkqIHMzOTAuYyAoczM5MF9hc3NlbWJsZV9pbnRlZ2VyKTogTGlrZXdpc2UuCgkqIHNwYXJjLmMgKHNwYXJjX2ZsYXRfZnVuY3Rpb25fcHJvbG9ndWUsCglzcGFyY19mbGF0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkqIHN0b3JteTE2LmMgKHhzdG9ybXkxNl9wcmludF9vcGVyYW5kX2FkZHJlc3MsIHhzdG9ybXkxNl9wcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIHZheC5jICh2YXhfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgoJKiBmcnYuYyAoZnJ2X3ByaW50X29wZXJhbmRfbWVtb3J5X3JlZmVyZW5jZSk6IEZpeCBmb3JtYXQgc3BlY2lmaWVyCgl3YXJuaW5nLgoJKGZydl9ydHhfY29zdHMpOiBNYXJrIHBhcmFtZXRlciB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiBtNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogRml4IGZvcm1hdCBzcGVjaWZpZXIKCXdhcm5pbmdzLgoKCSogc3Rvcm15MTYtcHJvdG9zLmggKHhzX2hpX2dlbmVyYWxfb3BlcmFuZCwKCXhzX2hpX25vbm1lbW9yeV9vcGVyYW5kKTogUHJvdG90eXBlLgoJKiBzdG9ybXkxNi5jICh4c3Rvcm15MTZfb3V0cHV0X3NoaWZ0KTogRml4IGZvcm1hdCBzcGVjaWZpZXIKCXdhcm5pbmdzLgoKCSogY3Jpcy5jOiBGaXggZm9ybWF0IHNwZWNpZmllciB3YXJuaW5ncy4KCjIwMDMtMDUtMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc206IEZpeCB0eXBvOiBMU00gaW5zdGVhZCBvZiBMU1lNLgoKMjAwMy0wNS0xNiAgV29sZmdhbmcgQmFuZ2VydGggPGJhbmdlcnRoQGRlYWxpaS5vcmc+CgoJKiBkb2MvYnVncmVwb3J0LnRleGk6IFJlbW92ZSBtb3N0IG9mIHRoZSBvZiB0aGUgcHJlZmFjZSBvZiB0aGUKCWJ1Z3Mgc2VjdGlvbi4KCjIwMDMtMDUtMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYyAodXdfdXBkYXRlX3JlZ19hZGRyZXNzKTogSGFuZGxlCgkuc2F2ZSBYWCwgcjAuCgoyMDAzLTA1LTE1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChBU01fT1VUUFVUX1NLSVApOiBGaXggdHlwby4KCjIwMDMtMDUtMTUgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY2ZnY2xlYW51cC5jIChtZXJnZV9ibG9ja3MpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMy0wNS0xNSBFcmljIENocmlzdG9waGVyIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uKTogTWFrZSBzdXJlCgl0aGF0IHplcm9fZXh0ZW5kIG9wZXJhdGlvbiBpcyBwcm9maXRhYmxlLgoKMjAwMy0wNS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9saW51eC5oLCBjb25maWcvYWxwaGEvbGludXgtZWxmLmg6IFJlbW92ZQoJY29kZSBwcm90ZWN0ZWQgYnkgVVNFX0dOVUxJQkNfMS4KCjIwMDMtMDUtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuZ2NjOiBQdXJnZSBhbGwgdGFyZ2V0cyBvYnNvbGV0ZWQgaW4gR0NDIDMuMy4gIEFsc28KCXJlbW92ZSBocHBhKi0qLW1wZWl4KiB3aGljaCBjb3VsZCBub3QgYmUgYnVpbHQsIGFuZCBwcnVuZQoJZmlsZXMgZnJvbSB0bWFrZV9maWxlPSBvciB0bV9maWxlPSBsaXN0cyB0aGF0IGRvbid0IGV4aXN0LgoKCSogY29uZmlnL2FscGhhL2FscGhhLWludGVyaXguaCwgY29uZmlnL2FscGhhL2FscGhhMzIuaAoJKiBjb25maWcvYWxwaGEvdC1pbnRlcml4LCBjb25maWcvYXJtL2Nvbml4LWVsZi5oCgkqIGNvbmZpZy9hcm0vdC1hcm0tYW91dCwgY29uZmlnL2FybS90LXN0cm9uZ2FybS1jb2ZmCgkqIGNvbmZpZy9hcm0vdW5rbm93bi1lbGYtb2FiaS5oLCBjb25maWcvaTM4Ni93aW4zMi5oCgkqIGNvbmZpZy9tNjhrLzNiMS5oLCBjb25maWcvbTY4ay8zYjFnLmgsIGNvbmZpZy9tNjhrL2FtaXguaAoJKiBjb25maWcvbTY4ay9hdGFyaS5oLCBjb25maWcvbTY4ay9jY3VyLUdBUy5oLCBjb25maWcvbTY4ay9jcmRzLmgKCSogY29uZmlnL202OGsvaHAyYnNkLmgsIGNvbmZpZy9tNjhrL2hwM2JzZC5oCgkqIGNvbmZpZy9tNjhrL2hwM2JzZDQ0LmgsIGNvbmZpZy9tNjhrL2xpbnV4LWFvdXQuaAoJKiBjb25maWcvbTY4ay9tNjhrLXBzb3MuaCwgY29uZmlnL202OGsvbW90MzMwMC5oCgkqIGNvbmZpZy9tNjhrL3BiYi5oLCBjb25maWcvbTY4ay9wbGV4dXMuaCwgY29uZmlnL202OGsvc3VuMi5oCgkqIGNvbmZpZy9tNjhrL3N1bjJvNC5oLCBjb25maWcvbTY4ay9zdW4zLmgsIGNvbmZpZy9tNjhrL3N1bjNtYWNoLmgKCSogY29uZmlnL202OGsvc3VuM24uaCwgY29uZmlnL202OGsvc3VuM24zLmgsIGNvbmZpZy9tNjhrL3N1bjNvMy5oCgkqIGNvbmZpZy9tNjhrL3QtbW90MzMwMCwgY29uZmlnL202OGsvdC1tb3QzMzAwLWdhbGQKCSogY29uZmlnL202OGsvdC1tb3QzMzAwLWdhcywgY29uZmlnL202OGsvdC1tb3QzMzAwLWdsZAoJKiBjb25maWcvbTY4ay90b3dlci1hcy5oLCBjb25maWcvbTY4ay90b3dlci5oCgkqIGNvbmZpZy9tODhrL2FvdXQtZGJ4LmgsIGNvbmZpZy9tODhrL204OGstYW91dC5oCgkqIGNvbmZpZy9tODhrL204OGstbW9kZXMuZGVmLCBjb25maWcvbTg4ay9tODhrLW1vdmUuc2gKCSogY29uZmlnL204OGsvbTg4ay1wcm90b3MuaCwgY29uZmlnL204OGsvbTg4ay5jCgkqIGNvbmZpZy9tODhrL204OGsuaCwgY29uZmlnL204OGsvbTg4ay5tZCwgY29uZmlnL204OGsvb3BlbmJzZC5oCgkqIGNvbmZpZy9tODhrL3N5c3Y0LmgsIGNvbmZpZy9tODhrL3QtbHVuYSwgY29uZmlnL204OGsvdC1sdW5hLWdhcwoJKiBjb25maWcvbTg4ay90LW04OGssIGNvbmZpZy9tODhrL3Qtc3lzdjQsIGNvbmZpZy9tY29yZS9nZmxvYXQuaAoJKiBjb25maWcvbWlwcy9ydGVtczY0LmgsIGNvbmZpZy9taXBzL3NuaS1nYXMuaAoJKiBjb25maWcvbWlwcy9zbmktc3ZyNC5oLCBjb25maWcvbWlwcy90LWVjb2ZmCgkqIGNvbmZpZy9tbjEwMjAwL2xpYjFmdW5jcy5hc20sIGNvbmZpZy9tbjEwMjAwL21uMTAyMDAtcHJvdG9zLmgKCSogY29uZmlnL21uMTAyMDAvbW4xMDIwMC5jLCBjb25maWcvbW4xMDIwMC9tbjEwMjAwLmgKCSogY29uZmlnL21uMTAyMDAvbW4xMDIwMC5tZCwgY29uZmlnL21uMTAyMDAvdC1tbjEwMjAwCgkqIGNvbmZpZy9wYS9wYS1oaXV4LmgsIGNvbmZpZy9wYS9wYS1ocHV4Ny5oLCBjb25maWcvcGEvcGEtaHB1eDkuaAoJKiBjb25maWcvcGEvcGEtb2xkYXMuaCwgY29uZmlnL3BhL3QtbXBlaXgsIGNvbmZpZy9wc29zLmgKCSogY29uZmlnL3JvbXAvcm9tcC1wcm90b3MuaCwgY29uZmlnL3JvbXAvcm9tcC5jCgkqIGNvbmZpZy9yb21wL3JvbXAuaCwgY29uZmlnL3JvbXAvcm9tcC5tZCwgY29uZmlnL3JzNjAwMC9haXgzMS5oCgkqIGNvbmZpZy9yczYwMDAvYWl4M25ld2FzLmgsIGNvbmZpZy9yczYwMDAvbWFjaC5oCgkqIGNvbmZpZy9zcGFyYy9ic2QuaCwgY29uZmlnL3NwYXJjL2hhbC5oCgkqIGNvbmZpZy9zcGFyYy9saW51eC1hb3V0LmgsIGNvbmZpZy9zcGFyYy9seW54LW5nLmgKCSogY29uZmlnL3NwYXJjL2x5bnguaCwgY29uZmlnL3NwYXJjL25ldGJzZC5oCgkqIGNvbmZpZy9zcGFyYy9zcDg2eC1hb3V0LmgsIGNvbmZpZy9zcGFyYy9zcGxldC5oCgkqIGNvbmZpZy9zcGFyYy9zdW40Z2FzLmgsIGNvbmZpZy9zcGFyYy9zdW40bzMuaAoJKiBjb25maWcvc3BhcmMvc3Vub3M0LmgsIGNvbmZpZy9zcGFyYy90LWNob3J1cy1lbGYKCSogY29uZmlnL3NwYXJjL3QtaGFsb3MsIGNvbmZpZy9zcGFyYy90LXNwYXJjYmFyZQoJKiBjb25maWcvc3BhcmMvdC1zcGxldCwgY29uZmlnL3NwYXJjL3Qtc3Vub3M0MQoJKiBjb25maWcvdjg1MC9ydGVtcy5oOiBEZWxldGUgZmlsZS4KCjIwMDMtMDUtMTUgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChmdW5jdGlvbl92YWx1ZSk6IFByb3RvaXplLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRlVOQ1RJT05fVkFMVUUpOiBDYWxsIGZ1bmN0aW9uLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2Z1bmN0aW9uX3ZhbHVlKTogTmV3LgoKMjAwMy0wNS0xNSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pc194c2NhbGUpOiBSZW5hbWUgdG8gYXJtX2FyY2hfeHNjYWxlLgoJQWxsIHVzZXMgdXBkYXRlZC4KCShhcm1fdHVuZV94c2NhbGUpOiBOZXcgdmFyaWFibGUuCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgaXQuCgkoYXJtX2FkanVzdF9jb3N0KTogVXNlIGl0IGluIHBsYWNlIG9mIGFybV9hcmNoX3hzY2FsZS4KCShhcm1fZ2VuX2xvYWRfbXVsdGlwbGUpOiBMaWtld2lzZS4KCShhcm1fZ2VuX3N0b3JlX211bHRpcGxlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChpc194c2NhbGUpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uaCAoYXJtX3R1bmVfeHNjYWxlKTogRGVjbGFyZS4KCjIwMDMtMDUtMTUgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzEwNzMwCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFkamFjZW50X21lbV9sb2NhdGlvbnMpOiBSZWplY3Qgb2Zmc2V0cwoJaW52b2x2aW5nIGludmFsaWQgY29uc3RhbnRzLgoKMjAwMy0wNS0xNSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKGhwcGFfZXhwYW5kX3Byb2xvZ3VlKTogUmVtb3ZlIGJsb2NrYWdlLgoKMjAwMy0wNS0xNSAgV29sZmdhbmcgQmFuZ2VydGggPGJhbmdlcnRoQGRlYWxpaS5vcmc+CgoJKiBkb2MvYnVncmVwb3J0LnRleGk6IFJlbW92ZSBtb3N0IG9mIHRoZSBidWcgcmVwb3J0aW5nCglpbnN0cnVjdGlvbnMgYW5kIG1lcmdlIHRoZW0gaW50byBidWdzLmh0bWwuCgoyMDAzLTA1LTE0ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEFTTV9PVVRQVVRfQUxJR05FRF9MT0NBTCk6IENhc3QKCWdfc3dpdGNoX3ZhbHVlIHRvIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgoyMDAzLTA1LTE0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYzogRml4IGhlYWRlciBjb21tZW50cy4KCShkaXN0cmlidXRlX25vdGVzKTogUmVtb3ZlIHVzYWdlIG9mIGVsaW1faTEsIGVsaW1faTIuIFByb3BhZ2F0ZQoJdG8gYWxsIGNhbGxzIGFuZCBwcm90b3R5cGUuCgoyMDAzLTA1LTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTA3NjQKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYXRhbjJkZjMsIGF0YW4yc2YzLCBhdGFuMnhmMywgYXRhbjJ0ZjMpOgoJQWRkIGFuIGV4cGxpY2l0IGNsb2JiZXIgdG8gc2hvdyB0aGF0IFVOU1BFQ19GUEFUQU4gY2xvYmJlcnMgc3QoMSkuCgkoKmZ5bDJ4X3NmeGYzLCAqZnlsMnhfZGZ4ZjMsICpmeWwyeF94ZjMsICpmeWwyeF90ZnhmMyk6ICBMaWtld2lzZSwKCWFkZCBhbiBleHBsaWNpdCBjbG9iYmVyIHRvIHNob3cgdGhhdCBVTlNQRUNfRllMMlggY2xvYmJlcnMgc3QoMSkuCgkobG9nc2YyLCBsb2dkZjIsIGxvZ3hmMiwgbG9ndGYyKTogVXBkYXRlIGV4cGFuZGVyIHBhdHRlcm5zIHRvIG1hdGNoCgl0aGUgY29ycmVzcG9uZGluZyAqZnlsMnhfP2Z4ZjMgaW5zdHJ1Y3Rpb25zLgoKMjAwMy0wNS0xNCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvbGliMmZ1bmNzLlMgKFRSQU1QT0xJTkVfU0laRSk6IENoYW5nZSBmcm9tIDQ5IHRvIDU5LgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1jb25maWcuaCAoWENIQUxfSEFWRV9DT05TVDE2LAoJWENIQUxfSEFWRV9MMzJSKTogTmV3LgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaCAobm9uX2NvbnN0X21vdmVfb3BlcmFuZCwKCXh0ZW5zYV9sb2FkX2NvbnN0YW50LCB4dGVuc2FfZnVuY3Rpb25fcHJvbG9ndWUsCgl4dGVuc2FfZnVuY3Rpb25fZXBpbG9ndWUpOiBEZWxldGUgcHJvdG90eXBlcy4KCSh4dGVuc2FfZXhwYW5kX3Byb2xvZ3VlKTogTmV3LgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChmcmFtZV9zaXplX2NvbnN0LAoJVEFSR0VUX0FTTV9GVU5DVElPTl9QUk9MT0dVRSwgVEFSR0VUX01BQ0hJTkVfREVQRU5ERU5UX1JFT1JHLAoJbm9uX2NvbnN0X21vdmVfb3BlcmFuZCwgeHRlbnNhX2xvYWRfY29uc3RhbnQsIHh0ZW5zYV9yZW9yZywKCXh0ZW5zYV9mdW5jdGlvbl9wcm9sb2d1ZSk6IERlbGV0ZS4KCShhZGRfb3BlcmFuZCwgeHRlbnNhX21lbV9vZmZzZXQpOiBGb3JtYXR0aW5nLgoJKG1vdmVfb3BlcmFuZCk6IElmIHRoZSBjb25zdDE2IG9wdGlvbiBpcyBhdmFpbGFibGUsIGFsbG93IGFueSBTRm1vZGUKCWFuZCBTSW1vZGUgY29uc3RhbnRzLgoJKHh0ZW5zYV9lbWl0X21vdmVfc2VxdWVuY2UpOiBJbmxpbmUgdGhlIGZvcm1lciBjb250ZW50cyBvZgoJeHRlbnNhX2xvYWRfY29uc3RhbnQgd2l0aCBtb2RpZmljYXRpb25zIHRvIGhhbmRsZSB0aGUgY29uc3QxNiBvcHRpb24uCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCB4dGVuc2FfY2hhcl90b19jbGFzc1snVyddIGFuZCBzZXQgaXQgdG8KCXRoZSBnZW5lcmFsIHJlZ2lzdGVyIGNsYXNzIG9ubHkgaWYgdGhlIGNvbnN0MTYgb3B0aW9uIGlzIGVuYWJsZWQuCglGaXggZm9ybWF0dGluZy4gIERpc2FsbG93IFBJQyB3aGVuIHVzaW5nIHRoZSBjb25zdDE2IG9wdGlvbi4KCShwcmludF9vcGVyYW5kKTogUmVvcmdhbml6ZSB0byBzd2l0Y2ggb24gImxldHRlciIgaW5zdGVhZCBvZiB0aGUKCVJUTCBjb2RlLiAgQWRkIG91dHB1dF9vcGVyYW5kX2xvc3NhZ2UgY2FsbHMgZm9yIGludmFsaWQgY2FzZXMuCglBZGQgc3VwcG9ydCBmb3IgJ3QnIGFuZCAnYicgbGV0dGVycy4KCSh4dGVuc2FfZXhwYW5kX3Byb2xvZ3VlKTogTmV3IGZ1bmN0aW9uIHRvIHJlcGxhY2UKCXh0ZW5zYV9mdW5jdGlvbl9wcm9sb2d1ZSBhbmQgeHRlbnNhX3Jlb3JnLgoJKHh0ZW5zYV9mdW5jdGlvbl9lcGlsb2d1ZSk6IERlY2xhcmUgdGhpcyBhcyBzdGF0aWMuICBEZWxldGUgY29kZQoJdG8gcHJpbnQgdGhlIHJldHcubiBvciByZXR3IGluc3RydWN0aW9uLgoJKHh0ZW5zYV9yZXR1cm5fYWRkcik6IFVzZSBBMF9SRUcgaW5zdGVhZCBvZiAwLgoJKHh0ZW5zYV9ydHhfY29zdHMpOiBBZGQgY29zdHMgZm9yIHVzaW5nIHRoZSBjb25zdDE2IG9wdGlvbi4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoTUFTS19DT05TVDE2LCBUQVJHRVRfQ09OU1QxNik6IE5ldy4KCShUQVJHRVRfREVGQVVMVCk6IEFkZCBDT05TVDE2IGlmIEwzMlIgaW5zdHJ1Y3Rpb25zIG5vdCBhdmFpbGFibGUuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkICJjb25zdDE2IiBhbmQgIm5vLWNvbnN0MTYiLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IEFkZCBjb21tZW50IGFib3V0IG5ldyAnVycgbGV0dGVyLgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBDaGFuZ2UgJ1QnIGNvbnN0cmFpbnQgdG8gb25seSBhcHBseSB3aGVuIG5vdAoJdXNpbmcgdGhlIGNvbnN0MTYgb3B0aW9uLgoJKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBSZXdyaXRlIHRvIGF2b2lkIGhhcmR3aXJlZCB1c2Ugb2YgbDMyciBpbnNuLgoJKFRSQU1QT0xJTkVfU0laRSk6IENoYW5nZSBmcm9tIDQ5IHRvIDU5LgoJKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IEFkanVzdCBvZmZzZXRzIHRvIG1hdGNoIG5ldyB0cmFtcG9saW5lLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IERvIG5vdCBhbGxvdyBjb25zdGFudCBwb29sIGFkZHJlc3NlcwoJd2hlbiB1c2luZyB0aGUgY29uc3QxNiBvcHRpb24uCgkoUFJFRElDQVRFX0NPREVTKTogRGVsZXRlIG5vbl9jb25zdF9tb3ZlX29wZXJhbmQuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLm1kIChkZWZpbmVfY29uc3RhbnRzKTogQWRkIEExX1JFRywgQThfUkVHLCBhbmQKCVVOU1BFQ1ZfRU5UUlkuCgkobW92ZGksIG1vdmRmKTogSWYgdGhlIHNvdXJjZSBpcyBhIGNvbnN0YW50LCBhbHdheXMgZXhwYW5kIHRvIGEKCXNlcXVlbmNlIG9mIG1vdnNpIGluc25zLgoJKG1vdmRpX2ludGVybmFsLCBtb3ZkZl9pbnRlcm5hbCk6IFJlbW92ZSBhbHRlcm5hdGl2ZSB1c2luZyBsMzJyIGluc25zLgoJKG1vdnNpX2ludGVybmFsLCBtb3ZzZl9pbnRlcm5hbCk6IEFkZCBhbHRlcm5hdGl2ZSB1c2luZyBjb25zdDE2IGluc25zLgoJKG1vdnNmKTogQWRkIGNvbnN0MTYgc3VwcG9ydC4KCShlbnRyeSwgcHJvbG9ndWUsIGVwaWxvZ3VlKTogTmV3LgoJKHNldF9mcmFtZV9wdHIpOiBBZGQgbWlzc2luZyBtb2RlIGZvciB1bnNwZWNfdm9sYXRpbGUgb3BlcmF0aW9uLgoJTGlrZXdpc2UgZm9yIHN1YnNlcXVlbnQgc3BsaXQgcGF0dGVybi4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSwgWHRlbnNhIE9wdGlvbnMpOiBEb2N1bWVudCBuZXcKCSItbWNvbnN0MTYiIGFuZCAiLW1uby1jb25zdDE2IiBvcHRpb25zLgoKMjAwMy0wNS0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfbG9hZF9hZGRyZXNzKTogRm9yY2UgZGVzdGluYXRpb24KCXRvIGJlIERJbW9kZSByZWdpc3Rlci4gIE1lcmdlIGxvYWRfc3ltcHRyLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChsb2FkX3N5bXB0cik6IFJlbW92ZS4KCjIwMDMtMDUtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoVFJFRV9DT05TVEFOVF9QT09MX0FERFJFU1NfUCk6IFJlbmFtZSBmcm9tCglERUZFUlJFRF9DT05TVEFOVF9QLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBVcGRhdGUgdXNlLgoJKiB2YXJhc20uYyAoYnVpbGRfY29uc3RhbnRfZGVzYyk6IFNldCBTWU1CT0xfUkVGX0RFQ0wKCXRvIHRoZSBjb3B5IGdlbmVyYXRlZC4KCShtYXliZV9vdXRwdXRfY29uc3RhbnRfZGVmX2NvbnRlbnRzKTogRXhhbWluZSBUUkVFX0FTTV9XUklUVEVOCglvZiB0aGUgY29uc3RhbnQgdG8gc2VlIGlmIHdlIHNob3VsZCBlbWl0LgoJKG1hcmtfY29uc3RhbnQpOiBTaW1pbGFybHkuCgkob3V0cHV0X2NvbnN0YW50X2RlZl9jb250ZW50cyk6IFNldCBUUkVFX0FTTV9XUklUVEVOLgoKMjAwMy0wNS0xNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnNpX2ludGVybmFsMik6IFVzZSBjb21wYXJlIGZvciBzZWxmCgltb3ZlIHJlY29yZCBjb25kaXRpb24uCgkobW92ZGlfaW50ZXJuYWwyKTogU2FtZS4KCjIwMDMtMDUtMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY292LWlvLmggKGdjb3Zfd3JpdGVfYnl0ZXMsIGdjb3ZfcmVhZF9ieXRlcyk6IFJlbW92ZSBoZXJlLgoJKEdDT1ZfVEFHXyopIEZvcmNlIHR5cGUgdG8gZ2Nvdl91bnNpZ25lZF90LgoJKEdDT1ZfQ0hFQ0ssIEdDT1ZfQ0hFQ0tfUkVBRElORywgR0NPVl9DSEVDS19XUklUSU5HKTogTmV3LgoJKHN0cnVjdCBnY292X3Zhcik6IFJlbW92ZSBtb2RpZmllZC4gQWRkIHN0YXJ0LCBsZW5ndGgsIG9mZnNldCwKCW92ZXJyZWFkLiBIYXZlIGJ1ZmZlciBhcnJheSBmb3IgbGliZ2Nvdi4KCShnY292X3N5bmMsIGdjb3Zfc2Vlayk6IERlZmluaXRpb25zIG1vdmVkIHRvIGdjb3YtaW8uYy4KCShnY292X3Bvc2l0aW9uLCBnY292X3Jld3JpdGUsIGdjb3ZfaXNfZW9mKTogQWRqdXN0LgoJKiBnY292LWlvLmMgKGdjb3Zfb3Blbik6IFNldCBtb2RlLCBkbyBub3QgcmVhZCBhbnl0aGluZy4KCShnY292X2Nsb3NlKTogV3JpdGUgZmluYWwgYmxvY2suCgkgKGdjb3Zfd3JpdGVfYmxvY2ssIGdjb3ZfYWxsb2NhdGUpOiBOZXcuCgkoZ2Nvdl93cml0ZV9ieXRlcyk6IE1ha2Ugc3RhdGljLiBXcml0ZSBvciBhbGxvY2F0ZSBidWZmZXIuCgkoZ2Nvdl93cml0ZV91bnNpZ25lZCwgZ2Nvdl93cml0ZV9jb3VudGVyKTogQnVmZmVyIGNhbiBuZXZlciBiZQoJbnVsbC4KCShnY292X3dyaXRlX3N0cmluZyk6IEFkanVzdC4KCShnY292X3dyaXRlX3RhZykKCShnY292X3dyaXRlX2xlbmd0aCk6IEFkanVzdC4gRmx1c2ggdGhlIGJsb2NrLgoJKGdjb3Zfd3JpdGVfdGFnX2xlbmd0aCk6IEJ1ZmZlciBjYW4gbmV2ZXIgYmUgbnVsbC4KCShnY292X3JlYWRfYnl0ZXMpOiBNYWtlIHN0YXRpYy4gUmVhZCBpbiBibG9jay4KCShnY292X3N5bmMpOiBNb3ZlZCBoZXJlLiBBZGp1c3QuCgkoZ2Nvdl9zZWVrKTogTW92ZWQgaGVyZS4gQWRqdXN0LgoJKiBjb3ZlcmFnZS5jIChyZWFkX2NvdW50c19maWxlKTogQWRqdXN0LgoJKiBnY292LWR1bXAuYyAocHJpbnRfcHJlZml4KTogQWRkIHBvc2l0aW9uIHBhcmFtZXRlci4KCShmbGFnX2R1bXBfcG9zaXRpb25zKTogTmV3IGZsYWcuCgkob3B0aW9ucywgbWFpbiwgcHJpbnRfdXNhZ2UpOiBBZGQgaXQuCgkoZHVtcF9maWxlLCB0YWdfYmxvY2tzLCB0YWdfYXJjcywgdGFnX2xpbmVzLCB0YWdfY291bnRlcnMsCgl0YWdfc3VtbWFyeSk6IEFkanVzdC4KCSogZ2Nvdi5jIChyZWFkX2dyYXBoX2ZpbGUsIHJlYWRfY291bnRfZmlsZSk6IEFkanVzdC4KCSogbGliZ2Nvdi5jIChnY292X2V4aXQpOiBBZGp1c3QuCgoJKiBNYWtlZmlsZS5pbiAoTElCR0NDX0RFUFMpOiBVc2UgJChzcmNkaXIpIG9uIGdjb3YgZmlsZXMKCShsaWJnY292LmEpOiBEZXBlbmQgb24gbGliZ2NjLmEuCgkoZ2Nvdi5vLCBnY292LWR1bXAubyk6IEFkZCBnY292LWlvLmMuCgkqIG1rbGliZ2NjLmluIChsaWJnY292X2NfZGVwKTogVXNlICQoc3JjZGlyKS4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogRmFjdG9yIGNvbW1vbiB0ZXN0LgoKMjAwMy0wNS0xNCAgQmVuIEVsbGlzdG9uICA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZG9jL21kLnRleGkgKEF1dG9tYXRvbiBwaXBlbGluZSBkZXNjcmlwdGlvbik6IEdyYW1tYXIgZml4ZXMuCgoyMDAzLTA1LTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBJbmNsdWRlIGl0LgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcgZmllbGQuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogVXNlIHRhcmdldG0ubWFjaGluZV9kZXBlbmRlbnRfcmVvcmcuCgkqIHN5c3RlbS5oOiBQb2lzb24gTUFDSElORV9ERVBFTkRFTlRfUkVPUkcuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmggKGFscGhhX3Jlb3JnKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBSZW1vdmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkoYWxwaGFfaGFuZGxlX3RyYXBfc2hhZG93cyk6IFJlbW92ZSAiZmlyc3QgaW5zbiIgcGFyYW1ldGVyLgoJKGFscGhhX2FsaWduX2luc25zKTogTGlrZXdpc2UuCgkoYWxwaGFfcmVvcmcpOiBMaWtld2lzZS4gIE1ha2Ugc3RhdGljLiAgVXBkYXRlIGNhbGxzIHRvIGFib3ZlCglmdW5jdGlvbnMuCgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX3Jlb3JnKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjb25maWcvYXJtL2FybS5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZS4KCSogY29uZmlnL2FybS9hcm0uYyAoVEFSR0VUX01BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogRGVmaW5lLgoJKGFybV9yZW9yZyk6IFJlbW92ZSBwYXJhbWV0ZXIuICBNYWtlIHN0YXRpYy4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IFJlbW92ZS4KCSogY29uZmlnL2F2ci9hdnIuaCAoTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBSZW1vdmUuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCShhdnJfcmVvcmcpOiBSZW5hbWVkIGZyb20gbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcuICBNYWtlIHN0YXRpYy4KCVJlbW92ZSBwYXJhbWV0ZXIuCgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X3Byb2Nlc3NfYWZ0ZXJfcmVsb2FkKTogUmVtb3ZlLgoJKiBjb25maWcvYzR4L2M0eC5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZS4KCSogY29uZmlnL2M0eC9jNHguYyAoVEFSR0VUX01BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogRGVmaW5lLgoJKGM0eF9yZW9yZyk6IFJlbmFtZWQgZnJvbSBjNHhfcHJvY2Vzc19hZnRlcl9yZWxvYWQuICBNYWtlIHN0YXRpYy4KCVJlbW92ZSBwYXJhbWV0ZXIuCgoJKiBjb25maWcvZDMwdi9kMzB2LXByb3Rvcy5oIChkMzB2X21hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogUmVtb3ZlLgoJKiBjb25maWcvZDMwdi9kMzB2LmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogUmVtb3ZlLgoJKiBjb25maWcvZDMwdi9kMzB2LmMgKGQzMHZfbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBSZW1vdmUuCgoJKiBjb25maWcvZnJ2L2Zydi1wcm90b3MuaCAoZnJ2X21hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogUmVtb3ZlLgoJKiBjb25maWcvZnJ2L2Zydi5jOiBSZW1vdmUgb3JwaGFuZWQgY29tbWVudC4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKHg4Nl9tYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkoaXg4Nl9yZW9yZyk6IFJlbmFtZWQgZnJvbSB4ODZfbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcuICBNYWtlIHN0YXRpYy4KCVJlbW92ZSBwYXJhbWV0ZXIuCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X3Jlb3JnKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBSZW1vdmUgImZpcnN0IGluc24iIHBhcmFtZXRlci4KCShlbWl0X2FsbF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogTGlrZXdpc2UuCgkoaWE2NF9yZW9yZyk6IExpa2V3aXNlLiAgTWFrZSBzdGF0aWMuICBVcGRhdGUgY2FsbHMgdG8gYWJvdmUgZnVuY3Rpb25zLgoJKGlhNjRfb3V0cHV0X21pX3RodW5rKTogVXBkYXRlIGNhbGwgdG8gZW1pdF9hbGxfaW5zbl9ncm91cF9iYXJyaWVycy4KCgkqIGNvbmZpZy9pcDJrL2lwMmstcHJvdG9zLmggKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogUmVtb3ZlLgoJKiBjb25maWcvaXAyay9pcDJrLmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogUmVtb3ZlLgoJKiBjb25maWcvaXAyay9pcDJrLmMgKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCShpcDJrX3Jlb3JnKTogUmVuYW1lZCBmcm9tIG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnLiAgTWFrZSBzdGF0aWMuCglSZW1vdmUgcGFyYW1ldGVyLgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaCAobTY4aGMxMV9yZW9yZyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkobTY4aGMxMV9yZW9yZyk6IE1ha2Ugc3RhdGljLiAgUmVtb3ZlIHBhcmFtZXRlci4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaCAobWNvcmVfZGVwZW5kZW50X3Jlb3JnKTogUmVtb3ZlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaCAoTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBSZW1vdmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkoY29uZGl0aW9uYWxpemVfb3B0aW1pemF0aW9uKTogUmVtb3ZlIHBhcmFtZXRlci4KCShtY29yZV9yZW9yZyk6IFJlbmFtZWQgZnJvbSBtY29yZV9kZXBlbmRlbnRfcmVvcmcuICBSZW1vdmUgcGFyYW1ldGVyLgoJTWFrZSBzdGF0aWMuICBVcGRhdGUgY2FsbCB0byBjb25kaXRpb25hbGl6ZV9vcHRpbWl6YXRpb24uCgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IFJlbW92ZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkobWlwc19yZW9yZyk6IFJlbmFtZWQgZnJvbSBtYWNoaW5lX2RlcGVuZGVudF9yZW9yZy4gIFJlbW92ZSBwYXJhbWV0ZXIuCglNYWtlIHN0YXRpYy4KCgkqIGNvbmZpZy9tbWl4L21taXgtcHJvdG9zLmggKG1taXhfbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBSZW1vdmUuCgkqIGNvbmZpZy9tbWl4L21taXguaCAoTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBSZW1vdmUuCgkqIGNvbmZpZy9tbWl4L21taXguYyAoVEFSR0VUX01BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogRGVmaW5lLgoJKG1taXhfcmVvcmcpOiBSZW5hbWVkIGZyb20gbW1peF9tYWNoaW5lX2RlcGVuZGVudF9yZW9yZy4gIE1ha2Ugc3RhdGljLgoJUmVtb3ZlIHBhcmFtZXRlci4KCgkqIGNvbmZpZy9wYS9wYS1wcm90b3MuaCAocGFfcmVvcmcpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGNvbmZpZy9wYS9wYS5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZS4KCSogY29uZmlnL3BhL3BhLmMgKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCShwYV9jb21iaW5lX2luc3RydWN0aW9ucyk6IFJlbW92ZSAiZmlyc3QgaW5zbiIgcGFyYW1ldGVyLgoJKHJlbW92ZV91c2VsZXNzX2FkZHRyX2luc25zKTogTGlrZXdpc2UuCgkocGFfcmVvcmcpOiBMaWtld2lzZS4gIE1ha2Ugc3RhdGljLiAgVXBkYXRlIGNhbGxzIHRvIGFib3ZlIGZ1bmN0aW9ucy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogUmVtb3ZlCgljb21tZW50ZWQtb3V0IGRlZmluaXRpb24uCgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX21hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogUmVtb3ZlLgoJKiBjb25maWcvczM5MC9zMzkwLmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogUmVtb3ZlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERlZmluZS4KCShzMzkwX3Jlb3JnKTogUmVuYW1lZCBmcm9tIHMzOTBfbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcuICBNYWtlIHN0YXRpYy4KCVJlbW92ZSBwYXJhbWV0ZXIuCgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmggKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogUmVtb3ZlLgoJKiBjb25maWcvc2gvc2guaCAoTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBSZW1vdmUuCgkqIGNvbmZpZy9zaC9zaC5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkoc2hfcmVvcmcpOiBSZW5hbWVkIGZyb20gbWFjaGluZV9kZXBlbmRlbnRfcmVvcmcuICBNYWtlIHN0YXRpYy4KCVJlbW92ZSBwYXJhbWV0ZXIuCgkoc2hfb3V0cHV0X21pX3RodW5rKTogQ2FsbCBzaF9yZW9yZyBkaXJlY3RseS4KCSogY29uZmlnL3NoL3NoLm1kOiBVcGRhdGUgY29tbWVudC4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZQoJY29tbWVudGVkLW91dCBkZWZpbml0aW9uLgoKCSogY29uZmlnL3Y4NTAvdjg1MC1wcm90b3MuaCAodjg1MF9yZW9yZyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogY29uZmlnL3Y4NTAvdjg1MC5oIChNQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IFJlbW92ZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkodjg1MF9yZW9yZyk6IE1ha2Ugc3RhdGljLiAgUmVtb3ZlIHBhcmFtZXRlci4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oICh4dGVuc2FfcmVvcmcpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogUmVtb3ZlLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChUQVJHRVRfTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEZWZpbmUuCgkoeHRlbnNhX3Jlb3JnKTogTWFrZSBzdGF0aWMuICBSZW1vdmUgcGFyYW1ldGVyLgoKCSogZG9jL3RtLnRleGkgKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogUmVtb3ZlLgoJKFRBUkdFVF9NQUNISU5FX0RFUEVOREVOVF9SRU9SRyk6IERvY3VtZW50LgoKMjAwMy0wNS0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBSZS1pbnZva2UgbWFrZV9kZWNsX3J0bCBpZgoJdGhlIG9sZCBkZWNsIGhhZCBpbnN0YW50aWF0ZWQgREVDTF9SVEwuCgoyMDAzLTA1LTEzICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3B0aW9uIFN1bW1hcnkpOiBLaWxsIG9mZiBkb2N1bWVudGF0aW9uIGZvciAtJC4KCjIwMDMtMDUtMTMgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChPVVRQVVRfQVNNX0FMSUdORURfTE9DQUwpOiBFeHBlY3QKCUhPU1RfV0lERV9JTlQgYXJndW1lbnQuCgoyMDAzLTA1LTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAoU1RSSVBfTUFJTl9UWVBFX05PUFMpOiBOZXcgbWFjcm8uCgoJKiB0cmVlLmMgKGl0ZXJhdGl2ZV9oYXNoX2V4cHIpOiBOZXcgZm4uCgoJKiBjLXNlbWFudGljcy5jIChlbWl0X2xvY2FsX3Zhcik6IERvbid0IG1lc3Mgd2l0aCB0ZW1wIHNsb3RzIGlmCgl0aGVyZSdzIG5vIGluaXRpYWxpemVyLgoKMjAwMy0wNS0xMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogQXBwbHkgdGhlIGVmZmVjdHMgb2YgZnJhbWUtcmVsYXRlZAoJZGVsYXkgc2xvdCBpbnNucyBiZWZvcmUgZW1pdHRpbmcgYSBkZWxheWVkIGJyYW5jaC4KCjIwMDMtMDUtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQgKGp1bXApOiBVc2UgZW1pdF9qdW1wX2luc24uCgoyMDAzLTA1LTEzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmggKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZKTogU2Vjb25kCglwYXJhbWV0ZXIgb2YgQVNNX09VVFBVVF9TS0lQIG11c3QgaGF2ZSB0eXBlIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgoyMDAzLTA1LTEyICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAobW92ZV9ieV9waWVjZXMpOiBIb25vciB0aGUgYWxpZ25tZW50IG9mIFRPIGFuZCBGUk9NLgoJKGVtaXRfcHVzaF9pbnNuKTogRG9uJ3QgdXNlIHB1c2ggd2hlbiB0aGUgc291cmNlIGFsaWdubWVudCBpcyBsZXNzCgl0aGFuIHRoZSBzdGFjaydzIHB1c2ggcm91bmRpbmcuCgoyMDAzLTA1LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChvdXRwdXRfZm9ybWF0KTogQWRkIHN1cHBvcnQgZm9yICVtLgoJKG91dHB1dF9wcmludGYsIG91dHB1dF92ZXJiYXRpbSwgZGlhZ25vc3RpY19zZXRfaW5mbywKCXZlcmJhdGltKTogU2V0IGVycl9ubyBmaWVsZCBvZiB0aGUgdGV4dF9pbmZvIHN0cnVjdHVyZSBiZWluZwoJaW5pdGlhbGl6ZWQuCgkoZmF0YWxfaW9fZXJyb3IpOiBEZWxldGUgZnVuY3Rpb24uCgkqIGRpYWdub3N0aWMuaCAodGV4dF9pbmZvKTogQWRkIGVycl9ubyBmaWVsZC4KCSogdG9wbGV2LmggKGZhdGFsX2lvX2Vycm9yKTogRGVsZXRlIHByb3RvdHlwZS4KCgkqIGMtb3B0cy5jLCBjLXBjaC5jLCBkd2FyZm91dC5jLCBnZ2MtY29tbW9uLmMsIGdnYy1wYWdlLmMsIGdyYXBoLmMKCSogdG9wbGV2LmMsIGNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL3JzNjAwMC9ob3N0LWRhcndpbi5jCgkqIG9iamMvb2JqYy1hY3QuYzogUmVwbGFjZSBhbGwgY2FsbHMgdG8gZmF0YWxfaW9fZXJyb3Igd2l0aAoJY2FsbHMgdG8gZmF0YWxfZXJyb3I7IGFkZCAiOiAlbSIgdG8gdGhlIGVuZCBvZiBhbGwgdGhlIGFmZmVjdGVkCgllcnJvciBtZXNzYWdlcy4KCjIwMDMtMDUtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAobm90aWNlX3J0bF9pbmxpbmluZ19vZl9kZWZlcnJlZF9jb25zdGFudCk6IE5ldyBmdW5jdGlvbi4KCSogcnRsLmg6IFByb3RvdHlwZSBpdC4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlIDxTWU1CT0xfUkVGPik6IENhbGwgaXQKCXdoZW4gYXBwcm9wcmlhdGUuCgoyMDAzLTA1LTEzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmlvcmRpM19vaSIpOiBEbyBub3QgbWFyayBjb21tdXRhdGl2ZS4KCSgiKmlvcnNpM19vaSIpOiBMaWtld2lzZS4KCjIwMDMtMDUtMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChjb21wYXJlX3NjYyk6IFVzZSBzaG9ydGVyIHNlcXVlbmNlIGZvciBFUSBjYXNlLgoJKGlvcl9zY2Nfc2NjX2NtcCwgYW5kX3NjY19zY2NfY21wKTogTmV3IGluc24tYW5kLXNwbGl0IHBhdHRlcm5zLgoJKGFuZF9zY2Nfc2NjKTogRW5zdXJlIHNwbGl0IG9ubHkgYXBwbGllcyB3aGVuIHRoZXJlIGlzIGEgZG9taW5hbmNlCglvZiB0aGUgY29tcGFyaXNvbnMuCgkoYW5kX3NjY19zY2Nfbm9kb20pOiBOZXcgaW5zbi1hbmQtc3BsaXQgcGF0dGVybi4KCjIwMDMtMDUtMTMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHVud2luZC1kdzIuYyAodXdfaW5pdF9jb250ZXh0XzEpOiBEb24ndCBwYXNzICZvdXRlcl9jZmEgZGlyZWN0bHkKCXRvIF9VbndpbmRfU2V0R1JQdHIoKS4KCjIwMDMtMDUtMTMgIE1pY2hhZWwgRWFnZXIgPGVhZ2VyQG12aXN0YS5jb20+CgoJKiBNYWtlZmlsZS5pbjogSW5pdGlhbGl6ZSBwcm9ncmFtX3RyYW5zZm9ybV9jcm9zc19uYW1lIGZyb20KCUBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQCBpbnN0ZWFkIG9mIHRhcmdldF9hbGlhcy4KCjIwMDMtMDUtMTIgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoJICAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKEhBVkVfQVNfVExTKTogQWRkIHBvd2VycGMgYW5kIHBvd2VycGM2NCB0ZXN0cy4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdGxzX3NpemUpOiBOZXcuCgkocnM2MDAwX3Rsc19zaXplX3N0cmluZyk6IE5ldy4KCShyczYwMDBfcGFyc2VfdGxzX3NpemVfb3B0aW9uKTogTmV3LgoJKHJzNjAwMF9sZWdpdGltaXplX3Rsc19hZGRyZXNzKTogTmV3LgoJKHJzNjAwMF90bHNfZ2V0X2FkZHIpOiBOZXcuCgkocnM2MDAwX2dvdF9zeW0pOiBOZXcuCgkocnM2MDAwX3Rsc19zeW1ib2xfcmVmKTogTmV3LgoJKHJzNjAwMF90bHNfc3ltYm9sX3JlZl8xKTogTmV3LgoJKHJzNjAwMF9nZXRfc29tZV9sb2NhbF9keW5hbWljX25hbWUpOiBOZXcuCgkocnM2MDAwX2dldF9zb21lX2xvY2FsX2R5bmFtaWNfbmFtZV8xKTogTmV3LgoJKFRBUkdFVF9IQVZFX1RMUyk6IE5ldy4KCShUQVJHRVRfQ0FOTk9UX0ZPUkNFX0NPTlNUX01FTSk6IE5ldy4KCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEhhbmRsZSAtbXRscy1zaXplIG9wdGlvbi4KCShjb25zdGFudF9wb29sX2V4cHJfMSk6IEhhbmRsZSBUTFMgc3ltYm9scy4KCShyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogSGFuZGxlIFRMUyBzeW1ib2xzLgoJKHJzNjAwMF90bHNfcmVmZXJlbmNlZF9wKTogTmV3LgoJKHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MpOiBIYW5kbGUgVExTIHN5bWJvbHMuCgkocnM2MDAwX2VtaXRfbW92ZSk6IEhhbmRsZSBUTFMgc3ltYm9scy4KCShwcmludF9vcGVyYW5kKTogSGFuZGxlIFRMUyBzeW1ib2xzLgoJKHVzZXNfVE9DKTogSGFuZGxlIFRMUyBzeW1ib2xzLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogVXNlIHN5bWJvbCBmb3IgdW5zcGVjIGNvbnN0YW50LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChIQVZFX0FTX1RMUyk6IE5ldy4KCShzb21lX2xkX25hbWUpOiBOZXcuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogSGFuZGxlIFRMUyBzeW1ib2xzLgoJKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IEhhbmRsZSBUTFMgc3ltYm9scy4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgcnM2MDAwX3Rsc19zeW1ib2xfcmVmLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobG9hZF90b2NfdjRfUElDXzEsIGxvYWRfdG9jX3Y0X1BJQ18xYik6CglTdXBwb3J0IFRMUy4KCSh0bHNfZ2RfMzIsIHRsc19nZF82NCwgdGxzX2xkXzMyLCB0bHNfbGRfNjQsIHRsc19kdHByZWxfMzIsCgl0bHNfZHRwcmVsXzY0LCB0bHNfZHRwcmVsX2hhXzMyLCB0bHNfZHRwcmVsX2hhXzY0LCB0bHNfZHRwcmVsX2xvXzMyLAoJdGxzX2R0cHJlbF9sb182NCwgdGxzX2dvdF9kdHByZWxfMzIsIHRsc19nb3RfZHRwcmVsXzY0LCB0bHNfdHByZWxfMzIsCgl0bHNfdHByZWxfNjQsIHRsc190cHJlbF9oYV8zMiwgdGxzX3RwcmVsX2hhXzY0LCB0bHNfdHByZWxfbG9fMzIsCgl0bHNfdHByZWxfbG9fNjQsIHRsc19nb3RfdHByZWxfMzIsIHRsc19nb3RfdHByZWxfNjQsIHRsc190bHNfMzIsCgl0bHNfdGxzXzY0KTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFNVQlRBUkdFVF9PUFRJT05TKTogQWRkIHRsc19zaXplLgoKMjAwMy0wNS0xMiAgTmVpbCBCb290aCAgPG5laWxAY2F0LmRhaWtva3V5YS5jby51az4KCgkqIE1ha2VmaWxlLmluIChzdGFnZTJfYnVpbGQsIHN0YWdlM19idWlsZCwgc3RhZ2U0X2J1aWxkKToKCVNldCBCVUlMRF9DQyB0byB0aGUgc2FtZSBhcyBDQy4KCjIwMDMtMDUtMTIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGFsbG9jLXBvb2wuYyAobGFzdF9pZCk6IFB1dCBpbiBFTkFCTEVfQ0hFQ0tJTkcgZ3VhcmRzLgoKMjAwMy0wNS0xMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IE1hcmsgJ2V4cCcKCWFzIHVudXNlZC4KCShidW5kbGluZyk6IEluaXRpYWxpemUgJ3BvcycuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IEluaXRpYWxpemUgJ3Jtb2RlJy4KCjIwMDMtMDUtMTIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAveGNvZmYuaCAoQVNNX09VVFBVVF9TS0lQKTogQWNjZXB0IEhPU1RfV0lERV9JTlQuCgkoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTik6IFNhbWUuCgkoQVNNX09VVFBVVF9MT0NBTCk6IFNhbWUuCgpNb24gTWF5IDEyIDIxOjUzOjI5IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudCk6ICBGaXggdW5kZXJmbG93LgoKMjAwMy0wNS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBvdGhlci8xMDc0NQoJKiBjb25maWd1cmUuaW46IENvcnJlY3QgZGV0ZWN0aW9uIG9mIEdOVSBsZCB2ZXJzaW9uIG51bWJlci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDUtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKGRpYWdub3N0aWNfZm9yX2RlY2wpOiBUYWtlIGEKCWRpYWdub3N0aWNfY29udGV4dCBhcmd1bWVudC4gIFJlc3RydWN0dXJlIHRvIGJlIGNvbnNpc3RlbnQKCXdpdGggZGlhZ25vc3RpY19yZXBvcnRfZGlhZ25vc3RpYy4KCShkaWFnbm9zdGljX2NvdW50X2RpYWdub3N0aWMpOiBOb3cgc3RhdGljLiAgVGFrZSBhCglkaWFnbm9zdGljX2luZm8gYXJndW1lbnQsIG5vdCBqdXN0IGEgZGlhZ25vc3RpY190LiAgU29tZSBjb2RlCgltb3ZlZCBoZXJlIGZyb20gaW50ZXJuYWxfZXJyb3IuICBNb3ZlIGEgY2FzZSBsYWJlbCBmb3IKCWNsYXJpdHkuCgkoZGlhZ25vc3RpY19hY3Rpb25fYWZ0ZXJfb3V0cHV0KTogTmV3IGZ1bmN0aW9uLiAgQ29kZSBtb3ZlZAoJaGVyZSBmcm9tIGludGVybmFsX2Vycm9yIGFuZCBmYXRhbF9lcnJvci4KCShidWdfcmVwb3J0X3JlcXVlc3QpOiBOZXcgI2RlZmluZSBzbyB0aGF0IHRoaXMgdGV4dCBhcHBlYXJzIGluCglvbmx5IG9uZSBwbGFjZS4KCShkaWFnbm9zdGljX3JlcG9ydF9kaWFnbm9zdGljKTogVXBkYXRlIHRvIG1hdGNoIGNoYW5nZXMgdG8KCWRpYWdub3N0aWNfY291bnRfZGlhZ25vc3RpYy4gIENhbGwgZGlhZ25vc3RpY19hY3Rpb25fYWZ0ZXJfb3V0cHV0LgoJKGRpYWdub3N0aWNfc2V0X2luZm8pOiBDYWxsIGdldHRleHQgaGVyZS4KCgkocGVkd2Fybik6IFVwZGF0ZSBjb21tZW50LiAgRG9uJ3QgY2FsbCBnZXR0ZXh0IGhlcmUuCgkoc29ycnkpOiBVc2UgcmVwb3J0X2RpYWdub3N0aWMuICBEb24ndCBjYWxsIGdldHRleHQgaGVyZS4KCShmYXRhbF9lcnJvcik6IFJlbW92ZSBmaW5hbCBmbm90aWNlIGFuZCBleGl0LCBidXQgY2FsbAoJcmVhbF9hYm9ydCB0byBwcmV2ZW50IHdhcm5pbmdzIGFib3V0IG5vcmV0dXJuIGZ1bmN0aW9uIHJldHVybmluZy4KCShpbnRlcm5hbF9lcnJvcik6IExpa2V3aXNlLiAgRG9uJ3QgZG8gSUNFIHN1cHByZXNzaW9uIGhlcmUgbm9yCgljYWxsIGNvbnRleHQtPmludGVybmFsX2Vycm9yLgoJKHdhcm5pbmdfd2l0aF9kZWNsKTogU3VwcHJlc3MgZm9yIGRlY2xzIGluIHN5c3RlbSBoZWFkZXJzLgoJQWRqdXN0IGNhbGwgdG8gZGlhZ25vc3RpY19mb3JfZGVjbC4KCShwZWR3YXJuX3dpdGhfZGVjbCk6IExpa2V3aXNlLgoJKGVycm9yX3dpdGhfZGVjbCk6IEFkanVzdCBjYWxsIHRvIGRpYWdub3N0aWNfZm9yX2RlY2wuCgkoZXJyb3JfcmVjdXJzaW9uKTogVXNlIGJ1Z19yZXBvcnRfcmVxdWVzdC4KCgkqIGRpYWdub3N0aWMuaDogUmVtb3ZlIHByb3RvdHlwZSBvZiBkaWFnbm9zdGljX2NvdW50X2RpYWdub3N0aWMuCgkqIG9iamMvb2JqYy1hY3QuYyAoZXJyb3Jfd2l0aF9pdmFyLCB3YXJuX3dpdGhfbWV0aG9kKTogRG9uJ3QgY2FsbAoJZGlhZ25vc3RpY19jb3VudF9kaWFnbm9zdGljLgoKMjAwMy0wNS0xMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhNjQtaHB1eC5oIChBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKTogQ29ycmVjdCBsYXN0IHBhdGNoLgoKTW9uIE1heSAxMiAxNTo1Nzo1NCBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJzNjAwMC9kYXJ3aW4uaCAoQVNNX09VVFBVVF9DT01NT04pOiBBY2NlcHQgSE9TVF9XSURFX0lOVAoJKiBtaXBzL2VsZi5oIChBU01fT1VUUFVUX0FMSUdORURfQlNTKTogRml4IHdhcm5pbmcuCgkqIG1pcHMvbWlwcy5oIChBU01fT1VUUFVUX1NLSVApOiAgRml4IHR5cG8gaW4gdGhlIHByZXZpb3VzIHBhdGNoLgoKMjAwMy0wNS0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkb2MvcnRsLnRleGk6IERvY3VtZW50IHplcm9fZXh0cmFjdCBhcyBhIHZhbGlkIGRlc3RpbmF0aW9uCglvZiBhIHNldCBpbnNuLgoKMjAwMy0wNS0xMiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0vbGliMWZ1bmNzLmFzbSAoTFNZTSk6IERlZmluZSAtLSBvbiBFTEYgcHJlZml4IGEgbG9jYWwgc3ltYm9sIHdpdGgKCScuJy4gIENoYW5nZSBhbGwgbG9jYWwgc3ltYm9sIGRlZmluaXRpb25zIGFuZCByZWZlcmVuY2VzIHRvIHVzZSBMU1lNLgoKTW9uIE1heSAxMiAxMTozMjo1MyBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGV4cHIuaCAoYXNzZW1ibGVfc3RhdGljX3NwYWNlKTogVXBkYXRlIHByb3RvdHlwZS4KCSogb3V0cHV0LmggKGFzc2VtYmxlX3plcm9zLCBvdXRwdXRfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogZWxmb3MuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0NPTU1PTik6IE1ha2UgaXQgNjRiaXQgY2xlYW4KCSogYWxwaGEuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0NPTU1PTiwgQVNLX09VVFBVVF9MT0NBTCk6IE1ha2UKCWl0IDY0Yml0IGNsZWFuLgoJKiBlbGYuaCAoQVNNX09UVVBVVF9TS0lQKTogTGlrZXdpc2UuCgkqIHVuaWNvc21rLmggKEFTTV9PVVRQVVRfU0tJUCwgQVNNX09VVFBVVF9DT01NKTogTGlrZXdpc2UuCgkqIGFybS5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCwgQVNNX09VVFBVVF9TS0lQKToKCUV4cGVjdCBIT1NUX1dJREVfSU5UIG9wZXJhbmQuCgkqIGFvdXQuaCAoQVNNX09VVFBVVF9DT01NT04sIEFTTV9PVVRQVVRfTE9DQUwsIEFTTV9PVVRQVVRfU0tJUCk6CglFeHBlY3QgSE9TVF9XSURFX0lOVCBvcGVyYW5kLgoJKiB1bmtub3duLWVsZi5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCwgQVNNX09VVFBVVF9TS0lQKToKCUV4cGVjdCBIT1NUX1dJREVfSU5UIG9wZXJhbmQuCgkqIGF2ci5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9TS0lQKTogRXhwZWN0CglIT1NUX1dJREVfSU5UIG9wZXJhbmQuCgkqIGM0eC5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCwgQVNNX09VVFBVVF9TS0lQLAoJQVNNX09VVFBVVF9CU1MpOiBFeHBlY3QgSE9TVF9XSURFX0lOVCBvcGVyYW5kLgoJKiBhb3V0LmggKEFTTV9PVFVQVVRfU0tJUCk6IExpa2V3aXNlLgoJKiBjcmlzLmggKEFTTV9PVFVQVVRfU0tJUCwgQVNNX09VVFBVVF9DT01NT04sIEFTTV9PVVRQVVRfTE9DQUwpOiBMaWtld2lzZS4KCSogZGFyd2luLmggKEFTTV9PVFVQVVRfU0tJUCwgQVNNX09VVFBVVF9DT01NT04pOiBMaWtld2lzZS4KCSogZHNwMTZ4eC5oIChBU01fT1RVUFVUX1NLSVApOiBMaWtld2lzZS4KCSogZnJ2LmggKEFTTV9PVFVQVVRfU0tJUCk6IExpa2V3aXNlLgoJKiBoODMwMC5oIChBU01fT1RVUFVUX1NLSVAsIEFTTV9PVVRQVVRfTE9DQUwpOiBMaWtld2lzZS4KCSogMzcwLmggKEFTTV9PVFVQVVRfU0tJUCwgQVNNX09VVFBVVF9DT01NT04sIEFTTV9PVVRQVVRfTE9DQUwpOgoJTWFrZSBpdCA2NGJpdAoJY2xlYW4uCgkqIGF0dC5oIChBU01fT1VUUFVUX1NLSVApOiBFeHBlY3QgSE9TVF9XSURFX0lOVCBvcGVyYW5kLgoJKiBic2QuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCk6CglNYWtlIGl0IDY0Yml0IGNsZWFuLgoJKiBkYXJ3aW4uaCAoQVNNX09VVFBVVF9TS0lQKTogTWFrZSBpdCA2NGJpdCBjbGVhbi4uCgkqIHNjbzUuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCk6IEV4cGVjdAoJSE9TVF9XSURFX0lOVCBvcGVyYW5kCgkqIHN2cjNnYXMuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCk6CglFeHBlY3QgSE9TVF9XSURFX0lOVCBvcGVyYW5kCgkqIHN5c3YzLmggKEFTTV9PVVRQVVRfU0tJUCk6IEV4cGVjdCBIT1NUX1dJREVfSU5UIG9wZXJhbmQKCSogaTk2MC5oIChBU01fT1VUUFVUX1NLSVAsIEFTTV9PVVRQVVRfQ09NTU9OLAoJQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogRXhwZWN0IEhPU1RfV0lERV9JTlQgb3BlcmFuZAoJKiBpcDJrLmggKEFTTV9PVVRQVVRfQ09NTU9OLCBBU01fT1VUUFVUX0xPQ0FMLCBBU01fT1VUUFVUX1NLSVApOgoJTGlrZXdpc2UuCgkqIG0zMnIuaCAoQVNNX09VVFBVVF9DT01NT04pOiBMaWtld2lzZS4KCSogM2IxLmggKEFTTV9PVVRQVVRfQ09NTU9OLCBBU01fT1VUUFVUX0xPQ0FMLCBBU01fT1VUUFVUX1NLSVApOgoJTGlrZXdpc2UuCgkqIGFtaXguaCAoQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogTGlrZXdpc2UuCgkqIGNyZHMuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0FMSUdORURfTE9DQUwpOiBMaWtld2lzZS4KCSogaHAzMjAuaCAoQVNNX09VVFBVVF9DT01NT04sIEFTTV9PVVRQVVRfTE9DQUwsCglBU01fT1VUUFVUX1NLSVApOiBMaWtld2lzZS4KCSogbTY4ay5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCwgQVNNX09VVFBVVF9TS0lQKToKCUxpa2V3aXNlLgoJKiBtNjhrZWxmLmggKEFTTV9PVVRQVVRfQ09NTU9OLCBBU01fT1VUUFVUX0xPQ0FMLAoJQVNNX09VVFBVVF9TS0lQKTogTGlrZXdpc2UuCgkqIG02OGt2NC5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCwKCUFTTV9PVVRQVVRfU0tJUCk6IExpa2V3aXNlLgoJKiBtb3QzMzAwLmggKEFTTV9PVVRQVVRfTE9DQUwsIEFTTV9PVVRQVVRfU0tJUCk6IExpa2V3aXNlLgoJKiBuZXRic2QtZWxmLmggKEFTTV9PVVRQVVRfTE9DQUwsIEFTTV9PVVRQVVRfQ09NTU9OLAoJQVNNX09VVFBVVF9TS0lQKTogTGlrZXdpc2UuCgkqIHNncy5oIChBU01fT1VUUFVUX1NLSVApOiBMaWtld2lzZS4KCSogdG93ZXItYXMuaCAoQVNNX09VVFBVVF9MT0NBTCwgQVNNX09VVFBVVF9DT01NT04sCglBU01fT1VUUFVUX1NLSVApOiBMaWtld2lzZS4KCSogbTg4ay5oIChBU01fT1VUUFVUX0xPQ0FMLCBBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9TS0lQKToKCUxpa2V3aXNlLgoJKiBtY29yZS5oIChBU01fT1VUUFVUX0xPQ0FMLCBBU01fT1VUUFVUX0JTUywgQVNNX09VVFBVVF9TS0lQKTogTGlrZXdpc2UuCgkqIGlyaXMuaCAoQVNNX09VVFBVVF9MT0NBTCk6IExpa2V3aXNlLgoJKiBtaXBzLmggKEFTTV9PVVRQVVRfTE9DQUwsIEFTTV9PVVRQVVRfU0tJUCk6IExpa2V3aXNlLgoJKiBuczMyay5oIChBU01fT1VUUFVUX0NPTU1PTiwgQVNNX09VVFBVVF9MT0NBTCwKCUFTTV9PVVRQVVRfU0tJUCk6IE1ha2UgaXQgNjRiaXQgY2xlYW4uCgkqIHBhLXByby1lbmQuaCAoQVNNX09VVFBVVF9MT0NBTCwgQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKToKCU1ha2UgaXQgNjRiaXQgY2xlYW4uCgkqIHBhLmggKEFTTV9PVVRQVVRfQ09NTU9OLCBBU01fT1VUUFVUX0xPQ0FMLCBBU01fT1VUUFVUX0FMSUdORURfTE9DQUwsCglBU01fT1VUUFVUX1NLSVApOiBNYWtlIGl0IDY0Yml0IGNsZWFuLgoJKiBocHV4LmggKEFTTV9PVVRQVVRfTE9DQUwsIEFTTV9PVVRQVVRfQUxJR05FRF9MT0NBTCk6IE1ha2UgaXQKCTY0Yml0IGNsZWFuLgoJKiByb21wLmggKEFTTV9PVVRQVVRfU0tJUCwgQVNNX09VVFBVVF9MT0NBTCwgQVNNX09VVFBVVF9DT01NT04pOiBFeHBlY3QKCUhPU1RfV0lERV9JTlQgYXJndW1lbnQKCSogczM5MC5oIChBU01fT1VUUFVUX1NLSVApOiBFeHBlY3QgSE9TVF9XSURFX0lOVCBhcmd1bWVudC4KCSogc2guaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0xPQ0FMLCBBU01fT1VUUFVUX0NPTU1PTik6IEV4cGVjdAoJSE9TVF9XSURFX0lOVCBhcmd1bWVudAoJKiBzb2wyLmggKEFTTV9PVVRQVVRfU0tJUCk6IEhPU1RfV0lERV9JTlQgYXJndW1lbnQKCSogc3BhcmMuaCAoQVNNX09VVFBVVF9TS0lQLCBBU01fT1VUUFVUX0NPTU1PTik6IEhPU1RfV0lERV9JTlQgYXJndW1lbnQKCSogc3ZyMy5oIChBU01fT1VUUFVUX1NLSVApOiBIT1NUX1dJREVfSU5UIGFyZ3VtZW50CgkqIHZheC5oIChBU01fT1VUUFVUX1NLSVAsIEFTTV9PVVRQVVRfQ09NTU9OLCBBU01fT1VUUFVUX0xPQ0FMKToKCUhPU1RfV0lERV9JTlQgYXJndW1lbnQKCSogdmF4di5oIChBU01fT1VUUFVUX0xPQ0FMKTogSE9TVF9XSURFX0lOVCBhcmd1bWVudAoJKiB4dGVuc2EuaCAoQVNNX09VVFBVVF9MT0NBTCk6IEhPU1RfV0lERV9JTlQgYXJndW1lbnQKCSogdmFyYXNtLmMgKGFzbV9vdXRwdXRfYnNzLCBhc21fb3V0cHV0X2FsaWduZWRfYnNzLAoJYXNtX2VtaXRfdW5pbml0aWFsaXplZCwgYXNzZW1ibGVfemVyb3MsIGFzc2VtYmxlX3N0YXRpY19zcGFjZSk6CglIT1NUX1dJREVfSU5UIGFyZ3VtZW50CgoyMDAzLTA1LTEwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9jcmVhdGVfZWRnZXMpOiBEcm9wIHdhbGtfdHJlZSBpbgoJZmF2b3Igb2Ygd2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlcy4gIEFkZCBjb21tZW50cy4KCjIwMDMtMDUtMTIgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGFsbG9jLXBvb2wuaCAoQUxMT0NfUE9PTF9JRF9UWVBFKTogTmV3IHR5cGUuCgkoc3RydWN0IGFsbG9jX3Bvb2xfZGVmKTogTmV3IGVsZW1lbnQgJ2lkJy4KCSogYWxsb2MtcG9vbC5jIChmYW5jeV9hYm9ydCk6IEV4dGVybiBmdW5jdGlvbiBwcm90b3R5cGUuCgkoYWJvcnQpOiBNYWNybyB3aGljaCB1c2VzIGZhbmN5X2Fib3J0LgoJKHN0cnVjdCBhbGxvY2F0aW9uX29iamVjdF9kZWYpOiBOZXcgc3RydWN0dXJlLgoJKEFMTE9DQVRJT05fT0JKRUNUX1BUUl9GUk9NX1VTRVJfUFRSKTogTmV3IG1hY3JvLgoJKFVTRVJfUFRSX0ZST01fQUxMT0NBVElPTl9PQkpFQ1RfUFRSKTogTmV3IG1hY3JvLgoJKGxhc3RfaWQpOiBOZXcgdmFyaWFibGUuCgkoY3JlYXRlX2FsbG9jX3Bvb2wpOiBBZGQgdGhlIG9mZnNldCBvZiB1LmRhdGEgdG8gc2l6ZSBvZiBlbGVtZW50LAoJaW5jcmVhc2UgYW5kIHVzZSBsYXN0X2lkLgoJKGZyZWVfYWxsb2NfcG9vbCk6IERvIHRoZSBjaGVja2luZyBvbmx5IHdoZW4gRU5BQkxFX0NIRUNLSU5HLgoJKHBvb2xfYWxsb2MpOiBMaWtld2lzZS4gU2V0IElEIGZvciBlbGVtZW50cy4KCShwb29sX2ZyZWUpOiBDaGVjayB3aGV0aGVyIHRoZSBQVFIgd2FzIGFsbG9jYXRlZCBmcm9tIFBPT0wuCgoyMDAzLTA1LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMTA2NzUKCSogYy1kZWNsLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGRldGVjdF9maWVsZF9kdXBsaWNhdGVzKTogTmV3LgoJKGZpbmlzaF9zdHJ1Y3QpOiBVc2UgaXQuCgkqIE1ha2VmaWxlLmluIChjLWRlY2wubyk6IFVwZGF0ZS4KCSogYy1wYXJzZS5pbiAoc3RydWN0c3BfYXR0cik6IE5yZXZlcnNlIGNvbXBvbmVudF9kZWNsX2xpc3QgcmVzdWx0cy4KCShjb21wb25lbnRfZGVjbF9saXN0LCBjb21wb25lbnRfZGVjbF9saXN0MiwKCWNvbXBvbmVudHMsIGNvbXBvbmVudHNfbm90eXBlKTogQnVpbGQgbGlzdCBpbiByZXZlcnNlIG9yZGVyLgoJKGVudW1saXN0KTogQ2xhcmlmeSBkb2NzLiAgVXNlIFRSRUVfQ0hBSU4gbm90IGNoYWlub24uCgoJKiB0cmVlLmMgKGNoYWlub24pOiBTcGVjaWFsIGNhc2Ugb3AyIG51bGwgYXMgd2VsbC4KCVJlb3JnIGZvciBjbGFyaXR5LgoKMjAwMy0wNS0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChsb2dzZjIsIGxvZ2RmMiwgbG9neGYyLCBsb2dkZjIpOiBOZXcgcGF0dGVybnMKCXRvIGltcGxlbWVudCBsb2csIGxvZ2YgYW5kIGxvZ2wgYnVpbHQtaW5zIGFzIGlubGluZSB4ODcgaW50cmluc2ljcy4KCShVTlNQRUNfRllMMlgpOiBOZXcgdW5zcGVjIHRvIHJlcHJlc2VudCB4ODcncyAiZnlsMngiIGluc3RydWN0aW9uLgoJKCpmeWwyeF9zZnhmMywgKmZ5bDJ4X2RmeGYzLCAqZnlsMnhfeGYzLCAqZnlsMnhfdGZ4ZjMpOiBOZXcgaW5zbgoJcGF0dGVybnMgZm9yIHg4NydzICJmeWwyeCIgaW5zdHJ1Y3Rpb24sIHVzZWQgYnkgbG9nP2YyIHBhdHRlcm5zLgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIFVOU1BFQ19GWUwyWCBsaWtlCglVTlNQRUNfRlBBVEFOLCBpLmUuIHJlcGxhY2VzIHR3byBzdGFjayBvcGVyYW5kcyB3aXRoIHNpbmdsZSByZXN1bHQuCgoyMDAzLTA1LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAob3V0X29iamVjdF9maWxlKTogRG9uJ3Qgc2V0IC1Xbm8tZXJyb3IgZm9yICR7Y3B1fS5vLgoKCSogc3BhcmMuYyAocHJpbnRfb3BlcmFuZCk6IEZpeCB1bmluaXRpYWxpemVkIHdhcm5pbmcuCgoyMDAzLTA1LTEyICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmdsb29wYW5hbC5jIChudW1fbG9vcF9pbnNucywgYXZlcmFnZV9udW1fbG9vcF9pbnNucyk6IENvdW50IG9ubHkKCXJlYWwgaW5zbnMuCgkqIGxvb3AtdW5yb2xsLmMgKHVucm9sbF9sb29wX3J1bnRpbWVfaXRlcmF0aW9ucyk6IFJlbW92ZSBzdXBlcmZsdW91cwoJY29uZGl0aW9uLgoKMjAwMy0wNS0xMSAgTmVpbCBCb290aCAgPG5laWxAY2F0LmRhaWtva3V5YS5jby51az4KCgkqIGRvYy9jcHAudGV4aTogRml4IHR5cG9zLgoKMjAwMy0wNS0xMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2Z1bmN0aW9uX2FyZ19mbG9hdCk6IE5ldyBmdW5jdGlvbi4KCShzMzkwX2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IFVzZSBpdC4KCShzMzkwX2Z1bmN0aW9uX2FyZ19hZHZhbmNlKTogTGlrZXdpc2UuCgkoczM5MF9mdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCShzMzkwX3ZhX2FyZyk6IExpa2V3aXNlCgoyMDAzLTA1LTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY292ZXJhZ2UuaCAoY292ZXJhZ2VfY291bnRlcl9hbGxvYyk6IE5ldyBmdW5jdGlvbi4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogUmVtb3ZlIGFyY19wcm9maWxlIGZsYWcuCgkqIGNvdmVyYWdlLmMgKGZuX2lkZW50KTogUmVtb3ZlLgoJKGZuX2JfY3Rycywgbm9fY292ZXJhZ2UpOiBOZXcuCgkoZ2V0X2NvdmVyYWdlX2NvdW50cyk6IFVzZSBjdXJyZW50X2Z1bmN0aW9uX2Z1bmNkZWZfbm8uCgkoY292ZXJhZ2VfY291bnRlcl9hbGxvYyk6IE5ldy4KCShjb3ZlcmFnZV9jb3VudGVyX3JlZik6IEFkanVzdC4KCShjb3ZlcmFnZV9iZWdpbl9vdXRwdXQpOiBDaGVjayBub19jb3ZlcmFnZS4gVXNlCgljdXJyZW50X2Z1bmN0aW9uX2Z1bmNkZWZfbm8uCgkoY292ZXJhZ2VfZW5kX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoY3JlYXRlX2NvdmVyYWdlKTogU2V0IG5vX2NvdmVyYWdlLiBTZXQgREVDTF9VTklOTElORUFCTEUgcmF0aGVyCgl0aGFuIGNsZWFyaW5nIGZsYWdfaW5saW5lX2Z1bmN0aW9ucy4gRG8gbm90IGNsZWFyIGFyY19wcm9maWxlCglmbGFnLgoJKiBmdW5jdGlvbi5jIChwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KTogRG8gbm90IHNldCBhcmNfcHJvZmlsZQoJZmxhZy4KCSogcHJvZmlsZS5jIChpbnN0cnVtZW50X2VkZ2VzKTogUmV0dXJuIG51bWJlciBvZiBpbnN0cnVtZW50ZWQKCWVkZ2VzLiBVc2UgYSBmb3IgbG9vcC4KCShicmFuY2hfcHJvYik6IENhbGwgY292ZXJhZ2VfY291bnRlcl9hbGxvYy4gTWFrZSBCQl9UT19HQ09WX0lOREVYCglsb2NhbCB0byBoZXJlIGFuZCBzaW1wbGlmeS4gVXNlIHByb2ZpbGVfYXJjX2ZsYWcgbm90IGFyY19wcm9maWxlCglmbGFnLgoJKGZpbmRfc3Bhbm5pbmdfdHJlZSk6IFJlZm9ybWF0LgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFVzZSBwcm9maWxlX2FyY19mbGFncyBhbmQKCWZsYWdfdGVzdF9jb3ZlcmFnZSByYXRoZXIgdGhhbiBhcmNfcHJvZmlsZSBmbGFnLgoKMjAwMy0wNS0xMSAgR2FicmllbCBEb3MgUmVpcyA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2N0b3ItZHRvci1wcml2YWN5KTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoyMDAzLTA1LTExICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdmFyYXNtLmMgKGNvcHlfY29uc3RhbnQsIGNhc2UgVklFV19DT05WRVJUX0VYUFIpOiBOZXcgY2FzZS4KCjIwMDMtMDUtMTEgIEJydW5vIEhhaWJsZSAgPGJydW5vQGNsaXNwLm9yZz4KCgkqIGNwcGZpbGVzLmMgKGZpbmRfb3JfY3JlYXRlX2VudHJ5KTogUHJlc2VydmUgZXJybm8uCgoyMDAzLTA1LTExICBOZWlsIEJvb3RoICA8bmVpbEBjYXQuZGFpa29rdXlhLmNvLnVrPgoKCSogYy1jcHBidWlsdGluLmMgKGNfY3BwX2J1aWx0aW5zKTogTW92ZSBfX1NURENfSE9TVEVEX18gaW50bwoJY3BwbGliIGFzIGl0J3MgYSBTdGFuZGFyZCBQcmVkZWZpbmVkIE1hY3JvLgoJKiBjLW9wdHMuYyAoZmluaXNoX29wdGlvbnMpOiBQYXNzIGZsYWdfaG9zdGVkIHRvIGNwcF9pbml0X2J1aWx0aW5zLgoJKiBjcHBpbml0LmMgKF9jcHBfaW5pdF9idWlsdGlucyk6IFRha2UgSE9TVEVELiAgRGVmaW5lCglfX1NURENfSE9TVEVEX18gYXBwcm9wcmlhdGVseS4KCSogY3BwbGliLmggKF9jcHBfaW5pdF9idWlsdGlucyk6IFVwZGF0ZS4KCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZS4KCSogZG9jL2NwcC50ZXhpLCBkb2MvY3Bwb3B0cy50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDMtMDUtMTEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCVBSIEMrKy82ODkKCVBSIEMrKy85MjU3CgkqIGMtb3B0cy5jIChjX2NvbW1vbl9kZWNvZGVfb3B0aW9uKTogRG9uJ3Qgc2V0Cgl3YXJuX2N0b3JfZHRvcl9wcml2YWN5IHdlbiAtV2FsbC4KCSogYy1jb21tb24uYyAod2Fybl9jdG9yX2R0b3JfcHJpdmFjeSk6IERvbid0IHR1cm4gb24gYnkgZGVmYXVsdC4KCjIwMDMtMDUtMTAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY3NlX21vdmUyYWRkKTogUmV2ZXJ0IHBhcnQgb2YgbXkgMjAwMy0wNS0wOSdzCglwYXRjaC4KCjIwMDMtMDUtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmM6IFJlb3JkZXIgZnVuY3Rpb25zIGZvciBjbGFyaXR5LCBwdXR0aW5nIGFsbCB0aGUKCWZ1bmN0aW9ucyBpbiB0aGUgImVycm9yIiBmYW1pbHkgbmV4dCB0byBlYWNoIG90aGVyLCBhbmQKCWxpa2V3aXNlIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSAiZXJyb3Jfd2l0aF9kZWNsIiBmYW1pbHkuCglTb21lIG90aGVyIHJvdXRpbmVzIHdlcmUgbW92ZWQgdG9vLiAgQWRkIGNvbW1lbnRzLgoJKHZidWlsZF9tZXNzYWdlX3N0cmluZyk6IEZvbGQgaW50byBzb2xlIGNhbGxlci4KCgoyMDAzLTA1LTExICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBleGNlcHQuYyAoRUhfUkVUVVJOX1NUQUNLQURKX1JUWCk6IERvIG5vdCBkZWZpbmUuCgkoRUhfUkVUVVJOX0hBTkRMRVJfUlRYKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fZWhfcmV0dXJuKTogRG8gbm90IGNvcHkgc3RhY2sgYWRqdXN0bWVudAoJaWYgRUhfUkVUVVJOX1NUQUNLQURKX1JUWCBpcyBub3QgZGVmaW5lZC4KCShleHBhbmRfZWhfcmV0dXJuKTogTGlrZXdpc2UuICBBbHNvLCBkbyBub3QgcGFzcyBzdGFjawoJYWRqdXN0bWVudCBhcyBhcmd1bWVudCB0byB0aGUgZWhfcmV0dXJuIHBhdHRlcm4uCgkqIGV4Y2VwdC5oIChNVVNUX1VTRV9TSkxKX0VYQ0VQVElPTlMpOiBEbyBub3QgZGVmaW5lIGp1c3QKCWJlY2F1c2UgRUhfUkVUVVJOX1NUQUNLQURKX1JUWCBpcyBub3QgZGVmaW5lZC4KCSogdW53aW5kLWR3LmMgKHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBJZiBFSF9SRVRVUk5fU1RBQ0tBREpfUlRYCglpcyBub3QgZGVmaW5lZCwgdHJlYXQgc3RhY2sgcG9pbnRlciBsaWtlIGEgcmVndWxhciByZWdpc3Rlci4KCSh1d19pbml0X2NvbnRleHRfMSk6IFNldCB1cCBmYWtlIGluaXRpYWwgc3RhY2sgcG9pbnRlciByZWdpc3Rlci4KCSh1d19pbnN0YWxsX2NvbnRleHRfMSk6IERvIG5vdCBjb21wdXRlIHN0YWNrIGFkanVzdG1lbnQgaWYKCUVIX1JFVFVSTl9TVEFDS0FESl9SVFggaXMgbm90IGRlZmluZWQuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgiZWhfcmV0dXJuIik6IFJlbW92ZSBmaXJzdCBhcmd1bWVudC4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoImVoX3JldHVybiIpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKCJlaF9yZXR1cm4iKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5tZCAoImVoX3JldHVybiIpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRUhfUkVUVVJOX1NUQUNLQURKX1JUWCk6IFJlbW92ZS4KCjIwMDMtMDUtMTAgIEFsZXhhbmRlciBBZ2FuaWNoZXYgIDxhYWdhbmljaGV2QHlhbmRleC5ydT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoTU9ERVNfVElFQUJMRV9QKTogRml4IHR5cG8uCgoyMDAzLTA1LTEwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVmYXVsdHMuaCAoR0NPVl9UWVBFX1NJWkUpOiBSZW1vdmUuCgkqIGdjb3YtaW8uaCAoZ2Nvdl90eXBlKTogU2V0IHRvIHNwZWNpZmljIG1vZGUgaW50IG9uIHRhcmdldC4KCShnY292X3Vuc2lnbmVkX3QsIGdjb3ZfcG9zaXRpb25fdCk6IE5ldy4KCShHQ09WX1RZUEVfTk9ERSk6IE5ldy4KCShHQ09WX1RBR19TVU1NQVJZX0xFTkdUSCk6IEFkanVzdC4KCShHQ09WX0NPVU5URVJTX1NVTU1BQkxFKTogTmV3LgoJKGdjb3ZfY3RyX3N1bW1hcnksIGdjb3Zfc3VtYXJ5LCBnY292X2ZuX2luZm8sIGdjb3ZfbWVyZ2VfZm4sCglnY292X2N0cl9pbmZvLCBnY292X2luZm8pOiBBZGp1c3QgdHlwZXMuCgkoZ2Nvdl92YXIpOiBBZGp1c3QgdHlwZXMuCgkoZ2Nvdl93cml0ZV91bnNpZ25lZCwgZ2Nvdl93cml0ZV90YWcsCglnY292X3dyaXRlX2xlbmd0aCwgZ2Nvdl93cml0ZV90YWdfbGVuZ3RoLCBnY292X3dyaXRlX3N1bW1hcnksCglnY292X3JlYWRfdW5zaWduZWQsIGdjb3ZfcmVhZF9zdW1tYXJ5KTogQWRqdXN0IGdjb3YgdHlwZXMuCgkoZ2Nvdl9wb3NpdGlvbiwgZ2Nvdl9zeW5jLCBnY292X3NlZWspOiBBZGp1c3QgZ2NvdiB0eXBlcy4KCSogZ2Nvdi1pby5jIChnY292X3dyaXRlX3Vuc2lnbmVkLCBnY292X3dyaXRlX3RhZywKCWdjb3Zfd3JpdGVfbGVuZ3RoLCBnY292X3dyaXRlX3RhZ19sZW5ndGgsIGdjb3Zfd3JpdGVfc3VtbWFyeSwKCWdjb3ZfcmVhZF91bnNpZ25lZCwgZ2Nvdl9yZWFkX3N1bW1hcnkpOiBBZGp1c3QgZ2NvdiB0eXBlcy4KCSogbGliZ2Nvdi5jIChnY292X2NyYzMyLCBnY292X3ZlcnNpb25fbWlzbWF0Y2gsIGdjb3ZfZXhpdCwKCV9fZ2Nvdl9pbml0LCBfX2djb3ZfbWVyZ2VfYWRkKTogQWRqdXN0IGdjb3YgdHlwZXMuCgkqIGNvdmVyYWdlLmMgKGN0cl9tZXJnZV9mdW5jdGlvbnMpOiBDb25zdGlmeS4KCShjdHJfbmFtZXMpOiBOZXcuCgkocmVhZF9jb3VudHNfZmlsZSk6IEFkanVzdCBnY292IHR5cGVzLiBPbmx5IHN1bW1hcml6ZSAmIG1lcmdlCglzdW1tYWJsZSBjb3VudGVycy4KCShjb3ZlcmFnZV9jb3VudGVyX3JlZik6IFVzZSBHQ09WX1RZUEVfTk9ERS4KCShidWlsZF9mbl9pbmZvX3R5cGUsIGJ1aWxkX2ZuX2luZm9fdmFsdWUsIGJ1aWxkX2N0cl9pbmZvX3R5cGUsCglidWlsZF9jdHJfaW5mb192YWx1ZSwgYnVpbGRfZ2Nvdl9pbmZvKTogQWRqdXN0IHR5cGVzLgoJKiBwcm9maWxlLmMgKGJyYW5jaF9wcm9iKTogQWRqdXN0IGdjb3YgdHlwZXMuCgkqIGdjb3ZfZHVtcCAoZHVtcF9maWxlKTogQWRqdXN0IGdjb3YgdHlwZXMuCgoyMDAzLTA1LTEwICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoRE9NX0NDX1hfQU5EX1ksIERPTV9DQ19OWF9PUl9ZLCBET01fQ0NfWF9PUl9ZKTogTmV3Cgljb25zdGFudHMuCgkoaW9yX3NjY19zY2MsIGFuZF9zY2Nfc2NjKTogTmV3IGluc25fYW5kX3NwbGl0IHBhdHRlcm5zLgoJKiBhcm0uYyAoYXJtX3NlbGVjdF9kb21pbmFuY2VfY2NfbW9kZSk6IFJlbmFtZWQgZnJvbQoJc2VsZWN0X2RvbWluYW5jZV9jY19tb2RlLCBuby1sb25nZXIgc3RhdGljLiAgVXNlIERPTV9DQy4uLiBjb25zdGFudHMuCglDYWxsZXJzIHVwZGF0ZWQuCgkqIGFybS1wcm90b3MuaCAoYXJtX3NlbGVjdF9kb21pbmFuY2VfY2NfbW9kZSk6IEFkZCBwcm90b3R5cGUuCgoyMDAzLTA1LTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zdGFydF9mdW5jdGlvbik6IERlY2xhcmUgZnJhbWVfc2l6ZQoJYXMgdW5zaWduZWQgdG8gYXZvaWQgc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoyMDAzLTA1LTA5ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYyAoeHRlbnNhX2VtaXRfbG9vcF9lbmQpOiBPbmx5IHVzZSAibm9wLm4iCglpbnN0cnVjdGlvbiBpZiB0aGUgWHRlbnNhIGRlbnNpdHkgb3B0aW9uIGlzIGVuYWJsZWQuCgoyMDAzLTA1LTA5ICBNYXR0IEtyYWFpIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCiAgICAgICAqIG1rbGliZ2NjLmluOiBSZW1vdmUgZXh0cmEgcXVvdGVzLgoKMjAwMy0wNS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHNwZV9pbml0X2J1aWx0aW5zKTogRml4IHR5cG8gaW4gY3JlYXRpb24KCW9mIGludF9mdHlwZV92b2lkLgoKMjAwMy0wNS0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBEb24ndCB0dXJuIGFuIGltcGxpY2l0Cgl0cnVuY2F0aW9uIGludG8gYSBzZWxmLXNldCBpbiB0aGUgbmFycm93IG1vZGUuCgoyMDAzLTA1LTA5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoY2x6c2kyKTogVGhlIENMWiBpbnN0cnVjdGlvbiBpcyBwcmVkaWNhYmxlLgoKMjAwMy0wNS0wOSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmM6IEZvcm1hdHRpbmcuCgoyMDAzLTA1LTA5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogVXNlIENPTlNUUlVDVE9SX0VMVFMsCglpbnN0ZWFkIG9mIFRSRUVfT1BFUkFORCB0byBhY2Nlc3MgdGhlIG9wZXJhbmQgb2YgYQoJQ09OU1RSVUNUT1Igbm9kZS4KCjIwMDMtMDUtMDkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1kdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBDT05TVFJVQ1RPUiBub2RlcyBjb250YWluIG9ubHkKCW9uZSBvcGVyYW5kLgoKMjAwMy0wNS0wOSAgR2FicmllbCBEb3MgUmVpcyA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHRvcGxldi5oICh3YXJuaW5nX3dpdGhfZmlsZV9hbmRfbGluZSk6IERvbid0IGRlY2xhcmUuCgkoZXJyb3Jfd2l0aF9maWxlX2FuZF9saW5lKTogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuYyAoZXJyb3Jfd2l0aF9maWxlX2FuZF9saW5lKTogUmVtb3ZlLgoJKHdhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lKTogTGlrZXdpc2UuCgoyMDAzLTA1LTA5ICBHYWJyaWVsIERvcyBSZWlzIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1wYXJzZS5pbiAoaWZfc3RtdF9sb2N1cyk6IE5ldyBvYmplY3QuCgkoaWZfcHJlZml4IHJ1bGUpOiBVc2UgaXQuICBEb24ndCB1c2Ugd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUuCgkoc2VsZWN0X29yX2l0ZXJfc3RtdCBydWxlKTogTGlrZXdpc2UuCgkoaWZfc3RtdF9maWxlKTogUmVtb3ZlLgoJKGlmX3N0bXRfbGluZSk6IExpa2V3aXNlLgoJKiBqdW1wLmM6IGluY2x1ZGUgImRpYWdub3N0aWMuaCIKCShuZXZlcl9yZWFjaGVkX3dhcm5pbmcpOiBEb24ndCB1c2Ugd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUuCgkqIE1ha2VmaWxlLmluIChqdW1wLm8pOiBBZGQgZGVwZW5kY2Ugb24gZGlhZ25vc3RpYy5oCgoyMDAzLTA1LTA5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZXhwci5jIChtb3ZlX2Jsb2NrX2Zyb21fcmVnKTogUmVtb3ZlICJzaXplIiBwYXJtLiAgTG9jYWxpemUgdmFycy4KCU1vdmUgY29kZSBoYW5kbGluZyBwaWVjZXMgbm90IGxhcmdlciB0aGFuIGEgd29yZCB0by4uCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IC4uaGVyZSwgYnV0IHVzZSBjaGFuZ2VfYWRkcmVzcyBpbnN0ZWFkCglvZiBhZGp1c3RfYWRkcmVzcyBhbmQgb3BlcmFuZF9zdWJ3b3JkLCBhbmQgZXhwYW5kX2Jpbm9wIGluc3RlYWQgb2YKCWV4cGFuZF9zaGlmdC4gIEFkanVzdCBjYWxscyB0byBtb3ZlX2Jsb2NrX2Zyb21fcmVnLgoJKiBleHByLmggKG1vdmVfYmxvY2tfZnJvbV9yZWcpOiBVcGRhdGUgZGVjbGFyYXRpb24uCgkoY29weV9ibGttb2RlX2Zyb21fcmVnKTogRm9ybWF0dGluZy4KCSogTWFrZWZpbGUuaW4gKGZ1bmN0aW9uLm8pOiBBZGQgJChPUFRBQlNfSCkgdG8gZGVwcy4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBBZGp1c3QKCW1vdmVfYmxvY2tfZnJvbV9yZWcgY2FsbHMuCgkqIGNvbmZpZy9hcmMvYXJjLmMgKGFyY19zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pOTYwL2k5NjAuYyAoaTk2MF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAobTMycl9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tODhrL204OGsuYyAobTg4a19idWlsdGluX3NhdmVyZWdzayk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEuYyAoaHBwYV9idWlsdGluX3NhdmVyZWdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yb21wL3JvbXAuaCAoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9idWlsdGluX3NhdmVyZWdzKTogTGlrZXdpc2UuCgoyMDAzLTA1LTA4ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jICh4c3Rvcm15MTZfZXhwYW5kX2J1aWx0aW5fdmFfYXJnKTogRml4Cgl0byBoYW5kbGUgYXJndW1lbnRzIGZvciB3aGljaCBNVVNUX1BBU1NfSU5fU1RBQ0sgaXMgdHJ1ZSAoZS5nLiwKCXZhcmlhYmxlLXNpemVkIHR5cGVzKS4KCSh4c3Rvcm15MTZfZnVuY3Rpb25fYXJnKTogTmV3LiAgUGFzcyB0aGVtIHRoYXQgd2F5IHRvby4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LXByb3Rvcy5oICh4c3Rvcm15MTZfZnVuY3Rpb25fYXJnKTogTmV3LgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCAoRlVOQ1RJT05fQVJHKTogQ2FsbCBpdC4KCjIwMDMtMDUtMDggIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIG1rbGliZ2NjLmluOiBVc2UgbWtpbnN0YWxsZGlycyB3aGVuIGluc3RhbGxpbmcgbXVsdGlsaWIKCWRpcmVjdG9yaWVzLgoKMjAwMy0wNS0wOCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5jIChnZW5fYmxvY2tfcmVkaXJlY3QsIHNwbGl0X2JyYW5jaGVzKTogVXNlIENPREVfRk9SX2p1bXBfY29tcGFjdAoJaW5zdGVhZCBvZiBDT0RFX0ZPUl9qdW1wCgoyMDAzLTA1LTA4ICBHYWJyaWVsIERvcyBSZWlzIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogb2JqYy9vYmpjLWFjdC5jIChlcnJvcl93aXRoX2l2YXIpOiBEb24ndCB1c2UKCWVycm9yX3dpdGhfZmlsZV9hbmRfbGluZS4KCSh3YXJuX3dpdGhfbWV0aG9kKTogRG9uJ3QgdXNlIHdhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lLgoKMjAwMy0wNS0wOCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBzdG10LmMgKGVtaXRfbG9jdXMpOiBOZXcgbWFjcm8uCgkoZW1pdF9maWxlbmFtZSk6IFJlbW92ZS4KCShlbWl0X2xpbmVubyk6IExpa2V3aXNlLgoJKHN0cnVjdCBzdG10X3N0YXR1cyk6IFJlcGxhY2UgbWVtYmVycyB4X2VtaXRfZmlsZW5hbWUgYW5kCgl4X2VtaXRfbGluZW5vIHdpdGggeF9lbWl0X2xvY3VzLgoJKHNldF9maWxlX2FuZF9saW5lX2Zvcl9zdG10KTogQWRqdXN0LgoJKGV4cGFuZF9leHByX3N0bXRfdmFsdWUpOiBEb24ndCB1c2Ugd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUuCgkod2Fybl9pZl91bnVzZWRfdmFsdWUpOiBMaWtld2lzZS4KCShjaGVja19zZWVubGFiZWwpOiBMaWtld2lzZS4KCjIwMDMtMDUtMDggIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1kZWNsLmMgKGRlZmluZV9sYWJlbCk6IFRpZHkuICBEb24ndCB1c2UgYW55IG9mCgllcnJvcl93aXRoX2ZpbGVfYW5kX2xpbmUgb3Igd2FybmluZ193aXRoX2ZpbGVfYW5kX2ZpbGUuCgkocGVuZGluZ194cmVmX2Vycm9yKTogTGlrZXdpc2UuCgkoc3RvcmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcHJvdG90eXBlX2xvY3VzKTogTmV3IG9iamVjdC4gIFBhY2thZ2UgZnJvbQoJY3VycmVudF9mdW5jdGlvbl9wcm90b3R5cGVfZmlsZSBhbmQgY3VycmVudF9mdW5jdGlvbl9wcm90b3R5cGVfbGluZS4KCShzdGFydF9mdW5jdGlvbik6IFVzZSBpdC4KCShjdXJyZW50X2Z1bmN0aW9uX3Byb3RvdHlwZV9maWxlKTogUmVtb3ZlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcHJvdG90eXBlX2xpbmUpOiBSZW1vdmU7CgoyMDAzLTA1LTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChyZWFkb25seV9kYXRhX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW5fbWVtbW92ZSk6IE9wdGltaXplIGFueSByb2RhdGEgc291cmNlLCBub3QganVzdAoJc3RyaW5ncy4KCjIwMDMtMDUtMDcgIERhdmlkIE1vc2JlcmdlciA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiB1bndpbmQtbGlidW53aW5kLmMgKF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uKTogTmV3LgoKMjAwMy0wNS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9zcGxpdF9sb25nX21vdmUpOiBGaXggYmFzZSByZWdpc3RlcgoJbW9kZSBmb3IgWEZtb2RlIHNwbGl0cyBmb3IgVEFSR0VUXzY0QklULgoKMjAwMy0wNS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNjaGVkLWViYi5jIChzY2hlZHVsZV9lYmIpOiBTdXBwbHkgdGhlIGNvcnJlY3Qgc3RhcnRpbmcKCWJsb2NrIG51bWJlciB0byBzYXZlX2xpbmVfbm90ZXMuCgoyMDAzLTA1LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdG9wbGV2LmMgKGVudW0gZHVtcF9maWxlX2luZGV4KTogU3dhcCBERklfY2UzLCBERklfYmJyby4KCShkdW1wX2ZpbGUpOiBMaWtld2lzZS4KCjIwMDMtMDUtMDcgIERhdmlkIE1vc2JlcmdlciA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fZG9fanZfcmVnaXN0ZXJfY2xhc3Nlcyk6IERvbid0Cglmb3JnZXQgdG8gcHJlc2VydmUgZ3AuCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gKF9fZG9fZ2xvYmFsX2N0b3JzX2F1KTogRGl0dG8uCgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fZG9fanZfcmVnaXN0ZXJfY2xhc3Nlcyk6IEFkZCBtaXNzaW5nCgkucHJvbG9ndWUgZGlyZWN0aXZlLgoJVXNlIC5za2lwIGluc3RlYWQgb2YgZGF0YTggZm9yIC5ic3Mgc2VjdGlvbiB0byBtYWtlIEludGVsCglBc3NlbWJsZXIgKGlhcykgaGFwcHkuICBNaW5vciB3aGl0ZXNwYWNlIGZpeHVwcy4gIE1ha2UgIm5vcCAwIgoJZXhwbGljaXQgaW4gdGhlIC5taWIgYnVuZGxlcyBhbmQgcmVtb3ZlIHRoZSB1bm5lY2Vzc2FyeSBzdG9wCgliaXRzLiAgUmVwbGFjZSBsb2NhbCBsYWJlbHMgd2l0aCBub3JtYWwgbGFiZWxzLCB0byBtYWtlIGlhcwoJaGFwcHkuICBEb24ndCByZWdpc3RlciBfX2RvX2dsb2JhbF9jdG9yc19hdXggaGVyZSwgZG8gaXQgaW4KCWNydGVuZC5hc20gaW5zdGVhZC4KCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gW0hBVkVfSU5JVF9GSU5JX0FSUkFZXTogUmVnaXN0ZXIKCV9fZG9fZ2xvYmFsX2N0b3JzX2F1eCBpbiAuaW5pdF9hcnJheSBzZWN0aW9uIGluc3RlYWQgb2YKCWRlY2xhcmluZyBpdCBhcyBhIGhpZGRlbiBnbG9iYWwuICBSZXBsYWNlIGxvY2FsIGxhYmVscyB3aXRoCglvcmRpbmFyeSBsYWJlbHMgdG8gbWFrZSBpYXMgaGFwcHkuCgoyMDAzLTA1LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMrKy8xMDU3MAoJKiBleGNlcHQuYzogUmV2ZXJ0IDA0LTAxIGFuZCAwNC0wMiBmb3JjZWQtdW53aW5kIGNoYW5nZXMuCgkqIGZsYWdzLmgsIHRvcGxldi5jLCBkb2MvaW52b2tlLnRleGk6IExpa2V3aXNlLgoKCSogdW53aW5kLWR3Mi5jIChfVW53aW5kX0dldENGQSk6IEZpeCBwdHItPmludCBjb252ZXJzaW9uIHdhcm5pbmcuCgkqIHVud2luZC5pbmMgKF9VbndpbmRfRGVsZXRlRXhjZXB0aW9uKTogQ2hlY2sgZm9yIG51bGwKCWV4Y2VwdGlvbl9jbGVhbnVwLgoKCSogdW53aW5kLXNqbGouYyAoX1Vud2luZF9TakxqX1Jlc3VtZV9vcl9SZXRocm93KTogTmV3LgoJKiB1bndpbmQuaW5jIChfVW53aW5kX1Jlc3VtZV9vcl9SZXRocm93KTogTmV3LgoJKiB1bndpbmQuaDogRGVjbGFyZSB0aGVtLgoJKiBsaWJnY2Mtc3RkLnZlciAoR0NDXzMuMyk6IEV4cG9ydCB0aGVtLgoKMjAwMy0wNS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHVud2luZC1kdzIuYyAoX1Vud2luZF9HZXRDRkEpOiBDYXN0IHBvaW50ZXIgdG8gX1Vud2luZF9QdHIsCglub3QgX1Vud2luZF9Xb3JkLgoKMjAwMy0wNS0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0bXQuYyAoZm9yY2VfbGFiZWxfcnR4KTogTmV3IGZ1bmN0aW9uLCBiYXNlZCBvbiBsb2dpYwoJZm9ybWVybHkgZm91bmQgaW4gZXhwYW5kX2V4cHIuCgkqIGV4cHIuaDogUHJvdG90eXBlIGl0LgoJKiBleHByLmMgKGV4cGFuZF9leHByIDxMQUJFTF9ERUNMPik6IFVzZSBmb3JjZV9sYWJlbF9ydHggaWYKCWFwcHJvcHJpYXRlLgoJKiB2YXJhc20uYyAoZGVjb2RlX2FkZHJfY29uc3QgPExBQkVMX0RFQ0w+KTogVXNlIGZvcmNlX2xhYmVsX3J0eC4KCgkqIHByaW50LXRyZWUuYyAoZGVidWdfdHJlZSk6IEZyZWUgdGhlIHRhYmxlIGFmdGVyIHdlJ3JlIGRvbmUKCXdpdGggaXQuICBVc2UgcHV0Yy4KCjIwMDMtMDUtMDcgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLmg6IFJldmVyc2UgYXJndW1lbnRzIGZvciBfX2V2X3N1YmZ3LgoJVW5yZXZlcnNlIGFyZ3VtZW50cyBmb3IgX19ldl9zdWJ3LgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKGV2c3ViZncpOiBSZXZlcnNlIGFyZ3VtZW50cyBvZiBhc3NlbWJseS4KCjIwMDMtMDUtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15LWFiaTogVXBkYXRlIHRvIGluY2x1ZGUKCVJfWFNUT1JNWTE2X0ZQVFIxNiwgUl9YU1RPUk1ZMTZfTE8xNiwgUl9YU1RPUk1ZMTZfSEkxNiBhbmQKCVJfWFNUT1JNWTE2XzEyIHJlbG9jcy4KCjIwMDMtMDUtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBDb3JyZWN0IHJldmVyc2VkIHJlZ19wYXJtX3N0YWNrX3NwYWNlCgl0ZXN0LiAgQWRkIHBhcnRpYWwgaW4tcmVncyBzaXplIHRvIHN0YWNrX2FyZ3Nfc2l6ZS4KCjIwMDMtMDUtMDcgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogTWFyayAtV21pc3NpbmctZGVjbGFyYXRpb25zCglhcyBhIEMgb25seSBvcHRpb24uCgoyMDAzLTA1LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2Nvdi1pby5oIChHQ09WX0xPQ0tFRCk6IE5ldyAjZGVmaW5lLgoJKEdDT1ZfTElOS0FHRSk6IE1ha2Ugc3VyZSBpdCBpcyAjZGVmaW5lZC4KCShnY292X3dyaXRlX3N0cmluZywgZ2Nvdl93cml0ZV90YWcsIGdjb3Zfd3JpdGVfbGVuZ3RoLAoJZ2Nvdl9yZWFkX3N0cmluZywgZ2Nvdl90aW1lKTogUG9pc29uIGluIGxpYmdjb3YuCgkoZ2Nvdl9zZWVrX2VuZCk6IFJlbW92ZS4KCShnY292X3dyaXRlX3RhZ19sZW5ndGgsIGdjb3Zfc3luYywgZ2Nvdl9yZXdyaXRlKTogTmV3LgoJKEdDT1ZfVEFHX0ZVTkNUSU9OX0xFTkdUSCwgR0NPVl9UQUdfQkxPQ0tTX0xFTkdUSCwKCUdDT1ZfVEFHX0FSQ1NfTEVOR1RILCBHQ09WX1RBR19DT1VOVEVSX0xFTkdUSCwKCUdDT1ZfVEFHX1NVTU1BUllfTEVOR1RIKTogTmV3ICNkZWZpbmVzLgoJKGdjb3Zfd3JpdGVfdGFnLCBnY292X3dyaXRlX2xlbmd0aCk6IE5vdCBpbiBsaWJnY292LgoJKiBnY292LWlvLmMgKGdjb3Zfb3Blbik6IFVzZSBHQ09WX0xPQ0tFRC4KCShnY292X3dyaXRlX3RhZywgZ2Nvdl93cml0ZV9sZW5ndGgpOiBOb3QgaW4gbGliZ2Nvdi4KCShnY292X3dyaXRlX3RhZ19sZW5ndGgpOiBOZXcuCgkoZ2Nvdl93cml0ZV9zdW1tYXJ5KTogVXNlIGdjb3Zfd3JpdGVfdGFnX2xlbmd0aC4KCSogbGliZ2Nvdi5jOiBBbHdheXMgI2luY2x1ZGUgZ2Nvdi1pby5oLgoJKElOX0xJQkdDT1YpOiAtMSBmb3IgaW5oaWJpdF9saWJjLCArMSBvdGhlcndpc2UuCgkoR0NPVl9MSU5LQUdFKTogRGVmaW5lIHRvIG5vdGhpbmcgZm9yIExfZ2Nvdi4KCShnY292X2V4aXQpOiBSZXBsYWNlIGdjb3Zfd3JpdGVfdGFnLCBnY292X3dyaXRlX2xlbmd0aCB3aXRoCglnY292X3dyaXRlX3RhZ19sZW5ndGguIFVzZSBnY292X3Jld3JpdGUgJiBnY292X3NlZWsuCgkqIGdjb3YuYyAocmVhZF9ncmFwaF9maWxlKTogUmVwbGFjZSBnY292X3NlZWsgYnkgZ2Nvdl9zeW5jLgoJKHJlYWRfY291bnRfZmlsZSk6IExpa2V3aXNlLgoJKiBnY292LWR1bXAuYyAoZHVtcF9maWxlKTogTGlrZXdpc2UuCgkqIGNvdmVyYWcuYyAocmVhZF9jb3VudHNfZmlsZSk6IExpa2V3aXNlLgoKMjAwMy0wNS0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBvdGhlci8xMDY1OAoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoKMjAwMy0wNS0wNiAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAobWlwcy0qLSopOiAgQWRkIG5vdGUgYWJvdXQgbGlic3RkYysrLgoKMjAwMy0wNS0wNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2Z1bmN0aW9uX3Byb2ZpbGVyKTogTmV3LgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCAoRlVOQ1RJT05fUFJPRklMRVIpOiBDYWxsIGl0LgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYtcHJvdG9zLmggKHhzdG9ybXkxNl9mdW5jdGlvbl9wcm9maWxlcik6IE5ldy4KCjIwMDMtMDUtMDYgICAgPG5laWxAY2F0LmRhaWtva3V5YS5jby51az4KCgkqIGMtb3B0cy5jIChDT01NQU5EX0xJTkVfT1BUSU9OUyk6IFJlamVjdCAtV21pc3NpbmctcHJvdG90eXBlcwoJYW5kIC1Xc3RyaWN0LXByb3RvdHlwZXMgaWYgQysrLgoKMjAwMy0wNS0wNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9saW51eHNwZS5oOiBOZXcgZmlsZS4KCgkqIGNvbmZpZy5nY2M6IEFkZCBwb3dlcnBjLSotbGludXgtZ251c3BlKiB0YXJnZXQuCgoyMDAzLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdW53aW5kLWR3Mi5jICh1d191cGRhdGVfY29udGV4dF8xKTogT25seSBzZXQgY2ZhIGFzIHNwIGlmCglwcmV2aW91cyBmcmFtZSBkaWRuJ3Qgc2F2ZSBzcC4gIENsZWFyIHNwIGZvciBuZXh0IGZyYW1lLgoJKHV3X2luc3RhbGxfY29udGV4dF8xKTogSG9ub3Igc2F2ZWQgc3AgZnJvbSBmcmFtZS4KCjIwMDMtMDUtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfc3Vid29yZCwgbWlwc19vdXRwdXRfbW92ZSk6IERlY2xhcmUuCgkobWlwc19tb3ZlXzF3b3JkLCBtaXBzX21vdmVfMndvcmRzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKG1pcHNfc3BsaXRfNjRiaXRfbW92ZV9wLCBtaXBzX3NwbGl0XzY0Yml0X21vdmUpOiBEZWNsYXJlLgoJKG1pcHNfcmVzdG9yZV9ncCk6IFJlbW92ZSBpbnNuIGFyZ3VtZW50LgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZQX1JFR19SVFhfUCk6IE5ldyBtYWNyby4KCSogY29uZmlnL21pcHMvbWlwcy5jICh2b2xhdGlsZV9idWZmZXIpOiBSZW1vdmUuCgkobWlwc19zdWJ3b3JkLCBtaXBzX3NwbGl0XzY0Yml0X21vdmVfcCwgbWlwc19zcGxpdF82NGJpdF9tb3ZlKTogTmV3LgoJKG1pcHNfbW92ZV8xd29yZCwgbWlwc19tb3ZlXzJ3b3Jkcyk6IFJlbW92ZSwgcmVwbGFjaW5nIHdpdGguLi4KCShtaXBzX291dHB1dF9tb3ZlKTogLi4udGhpcyBuZXcgZnVuY3Rpb24uCgkobWlwc19yZXN0b3JlX2dwKTogUmVtb3ZlIGluc24gYXJndW1lbnQuICBBZGp1c3QgZm9yIGFib3ZlIGNoYW5nZXMuCgkocHJpbnRfb3BlcmFuZCk6IE1ha2UgJyVoJyBwcmludCAlaGkob3ApIGZvciBISUdIIG9wZXJhbmRzLiAgUmVtb3ZlCgloYW5kbGluZyBvZiBmbG9hdGluZy1wb2ludCBjb25zdGFudHMuICBIYW5kbGUgemVybyBDT05TVF9ET1VCTEUKCWFyZ3VtZW50cy4KCShtaXBzX2Fubm90YXRlX2ZyYW1lX2luc24pOiBSZXBsYWNlIHdpdGguLi4KCShtaXBzX3NldF9mcmFtZV9leHByKTogLi4udGhpcywgd2hpY2gganVzdCB0YWtlcyBvbmUgYXJndW1lbnQuCgkobWlwc19mcmFtZV9zZXQpOiBDaGFuZ2UgdGhlIHJlZ2lzdGVyIGFyZ3VtZW50IHRvIGFuIHJ0eC4KCShtaXBzX2VtaXRfZnJhbWVfcmVsYXRlZF9zdG9yZSk6IFVzZSBtaXBzX3NwbGl0XzY0Yml0X21vdmVfcCB0bwoJY2hlY2sgd2hldGhlciBtb3ZlcyBzaG91bGQgYmUgc3BsaXQuICBVc2UgbWlwc19zcGxpdF82NGJpdF9tb3ZlCgl0byBzcGxpdCB0aGVtLiAgVXNlIG1pcHNfc3Vid29yZCB0byBnZW5lcmF0ZSB0aGUgaGlnaCBhbmQgbG93CglwYXJ0cyBvZiBhIHBhaXJlZCBGUFIuICBBZGp1c3QgY2FsbHMgdG8gZnJhbWVfc2V0IGFuZAoJbWlwc19zZXRfZnJhbWVfZXhwci4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IFNpbXBsaWZ5IGR1ZSB0byBhYm92ZSBjaGFuZ2VzLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOglBZGQgc3BsaXR0ZXJzIGZvciA2NC1iaXQgbW92ZXMgb24gMzItYml0Cgl0YXJnZXRzLCByZXBsYWNpbmcgeGlzdGluZyByZWdpc3Rlci1vbmx5IHZlcnNpb25zLgoJKFVOU1BFQ19TVE9SRV9ERl9ISUdIKTogTmV3IHVuc3BlYy4KCShVTlNQRUNfTE9BRF9ERl9MT1csIFVOU1BFQ19MT0FEX0RGX0hJR0gpOiBOZXcgdW5zcGVjcy4KCShtdWxzaTNfcjQwMDAsIG11bGRpM19pbnRlcm5hbDIpOiBBdm9pZCB1c2Ugb2YgbWlwc19tb3ZlXzF3b3JkLgoJKCpwYXJhZG94aWNhbF9leHRlbmRoaWRpMik6IFJlbW92ZS4KCShtb3ZkaV9pbnRlcm5hbCwgbW92ZGlfaW50ZXJuYWwyKTogVXNlIG1pcHNfb3V0cHV0X21vdmUuCgkoKm1vdmRpX2ludGVybmFsMl9taXBzMTYsIG1vdnNpX2ludGVybmFsLCBtb3ZjYyk6IExpa2V3aXNlLgoJKG1vdnNmX2ludGVybmFsMSwgbW92c2ZfaW50ZXJuYWwyKTogTGlrZXdpc2UuCgkobW92ZGZfaW50ZXJuYWwxYSk6IExpa2V3aXNlLiAgRml4IGxlbmd0aCBhbmQgdHlwZSBvZiBmIDwtIEcgY2FzZS4KCShtb3ZkZl9pbnRlcm5hbDFiKTogVXNlIG1pcHNfb3V0cHV0X21vdmUuICBGaXggdHlwZSBvZiBmIDwtIEcgY2FzZS4KCShtb3ZkZl9pbnRlcm5hbDIpOiBVc2UgbWlwc19vdXRwdXRfbW92ZS4gIEZpeCBsZW5ndGhzIG9mIEZQUiBtb3Zlcy4KCUFkZCBtIDwtIEcgYWx0ZXJuYXRpdmUuCgkobG9hZF9kZl9sb3csIGxvYWRfZGZfaGlnaCwgc3RvcmVfZGZfbG93KTogTmV3IHBhdHRlcm5zLgoJKG1vdmhpX2ludGVybmFsKTogVXNlIEAgdGVtcGxhdGUgaW5zdGVhZCBvZiBjYWxsaW5nIGEgZnVuY3Rpb24uCglSZW1vdmUgdW5uZWNlc3NhcnkgJ3onIGFsdGVybmF0aXZlcy4KCShtb3ZxaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGV4Y2VwdGlvbl9yZWNlaXZlcik6IFVwZGF0ZSBjYWxsIHRvIG1pcHNfcmVzdG9yZV9ncC4KCjIwMDMtMDUtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfc2ltcGxpZnlfZHdhcmZfYWRkcik6IFJlbW92ZS4KCShtaXBzX2RlbGVnaXRpbWl6ZV9hZGRyZXNzKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChBU01fU0lNUExJRllfRFdBUkZfQUREUik6IFVuZGVmaW5lLgoJKEZJTkRfQkFTRV9URVJNKTogRGVmaW5lLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKFRBUkdFVF9ERUxFR0lUSU1JWkVfQUREUkVTUyk6IERlZml+ZS4KCShtaXBzX2RlbGVnaXRpbWl6ZV9hZGRyZXNzKTogUmVuYW1lZCBmcm9tIG1pcHNfc2ltcGxpZnlfZHdhcmZfYWRkci4KCUhhbmRsZSBzbWFsbC1kYXRhIGFkZHJlc3Nlcy4KCjIwMDMtMDUtMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogcmVhbC5jIChyZWFsX3Bvd2kpOiBOZXcgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSB2YWx1ZSBvZgoJYSByZWFsIHJhaXNlZCB0byBhbiBpbnRlZ2VyIHBvd2VyLCBpLmUuIHBvdyh4LG4pIGZvciBpbnQgbi4KCShyZWFsX3NxcnQpOiBDb252ZXJ0IHRvIHVzaW5nIHRoZSBmYXN0ZXIgZG9fYWRkLCBkb19tdWx0aXBseQoJYW5kIGRvX2RpdmlkZSBBUEkgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIHJlc3Qgb2YgcmVhbC5jLgoJKiByZWFsLmggKHJlYWxfcG93aSk6IFByb3RvdHlwZSBoZXJlLgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW4pOiAgQXZvaWQgbG9jYWwgdmFyaWFibGUgbW9kZSB3aGVuCglldmFsdWF0aW5nIHNxcnQgYXQgY29tcGlsZSB0aW1lLiAgQXR0ZW1wdCB0byBldmFsdWF0ZSBwb3cgYXQKCWNvbXBpbGUtdGltZSwgYnkgY2hlY2tpbmcgZm9yIGFuIGludGVncmFsIGV4cG9uZW50LgoKMjAwMy0wNS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoVmFyaWFibGUgQXR0cmlidXRlcyk6IFJlLXNvcnQgdGFibGUgYW5kIHRpZHkuCgoyMDAzLTA1LTA1ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChDUFBfT1NfRlJFRUJTRF9TUEVDKTogQWRkIF9fRUxGX18gdG8gbWlycm9yCglvdGhlciBGcmVlQlNEIHBvcnRzLgoJKExJTktfT1NfRlJFRUJTRF9TUEVDKTogTWlycm9yIGNvbnZlbnRpb25zIG9uIG90aGVyIEZyZWVCU0QgcG9ydHMuCgkoX0xJVFRMRV9FTkRJQU4pOiBVc2UgX19MSVRUTEVfRU5ESUFOX18gaW5zdGVhZC4KCjIwMDMtMDUtMDUgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogTWFrZWZpbGUuaW46IChzaXRlLmV4cCk6IEFkZCBBTFRfQ0NfVU5ERVJfVEVTVCwgYWRkIHF1b3RlcyBhcm91bmQKCWV4cGFuZGVkIHZhcmlhYmxlcy4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKEMgdGVzdHMpOiBEZXNjcmliZSBnY2MuZGcvY29tcGF0IHRlc3RzLgoKMjAwMy0wNS0wNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5oIChTVFJJTkdfUE9PTF9BRERSRVNTX1ApOiBSZW5hbWUgdG8gREVGRVJSRURfQ09OU1RBTlRfUC4KCSogdmFyYXNtLmMgKHN0cnVjdCB2YXJhc21fc3RhdHVzKTogQWRkIGRlZmVycmVkX2NvbnN0YW50cyBmaWVsZC4KCShuX2RlZmVycmVkX3N0cmluZ3MpOiBEZWxldGUgdmFyaWFibGUuCgkobl9kZWZlcnJlZF9jb25zdGFudHMpOiBOZXcgI2RlZmluZS4KCShzdHJ1Y3QgY29uc3RhbnRfZGVzY3JpcHRvcl90cmVlKTogS2lsbCBuZXh0IGFuZCBsYWJlbCBmaWVsZHMuCgkoY29uc3RfaGFzaF90YWJsZSwgTUFYX0hBU0hfVEFCTEUpOiBEZWxldGUuCgkoY29uc3RfZGVzY19odGFiKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShjb25zdF9oYXNoKTogUmVuYW1lIGNvbnN0X2Rlc2NfaGFzaCwgYW5kIG1ha2UgaXQgZml0IHRoZQoJaGFzaHRhYi5oIGludGVyZmFjZS4KCShjb25zdF9kZXNjX2VxKTogTmV3LgoJKGNvbnN0X2hhc2hfMSwgY29tcGFyZV9jb25zdGFudCk6IENvbnN0LWlmeSBhcmd1bWVudHMuCgkoYnVpbGRfY29uc3RhbnRfZGVzYyk6IFNldCBERUZFUlJFRF9DT05TVEFOVF9QIG9uIGFsbCBuZXcKCVNZTUJPTF9SRUZzLiAgQ2xhcmlmeSBjb21tZW50cy4gIERvbid0IHNldCBkZXNjLT5sYWJlbC4KCShvdXRwdXRfY29uc3RhbnRfZGVmKTogRG8gdGhlIGxvb2t1cC9pbnNlcnQgdXNpbmcgdGhlCgloYXNodGFiLmggaW50ZXJmYWNlLiAgRG9uJ3QgbXVjayB3aXRoIG5fZGVmZXJyZWRfY29uc3RhbnRzIG9yCglERUZFUlJFRF9DT05TVEFOVF9QIGhlcmUuCglBbHdheXMgY2FsbCBtYXliZV9vdXRwdXRfY29uc3RhbnRfZGVmX2NvbnRlbnRzLgoJKG1heWJlX291dHB1dF9jb25zdGFudF9kZWZfY29udGVudHMpOiBUYWtlIGEgcG9pbnRlciB0byB0aGUKCWRlc2NyaXB0b3IsIG5vdCB0aGUgRVhQIGFuZCBSVEwgc2VwYXJhdGVseS4gIFJldHVybgoJaW1tZWRpYXRlbHkgaWYgdGhpcyBjb25zdGFudCBpcyBub3QgZGVmZXJyZWQuICBEZWZlciBvdXRwdXQgb2YKCWV2ZXJ5dGhpbmcsIGV4Y2VwdCB3cml0YWJsZSBzdHJpbmcgY29uc3RhbnRzLiAgVXBkYXRlCgluX2RlZmVycmVkX2NvbnN0YW50cyBoZXJlLgoJKG91dHB1dF9jb25zdGFudF9kZWZfY29udGVudHMpOiBOb3cgdGFrZXMganVzdCBvbmUgYXJndW1lbnQsCglhbiBydHguICBDbGVhciBERUZFUlJFRF9DT05TVEFOVF9QIGhlcmUuCgkobWFya19jb25zdGFudF9wb29sKTogVXBkYXRlIGZvciByZW5hbWUgb2Ygbl9kZWZlcnJlZF9zdHJpbmdzLgoJKG1hcmtfY29uc3RhbnQpOiBEb24ndCBjbGVhciBERUZFUlJFRF9DT05TVEFOVF9QIGhlcmUuCgoJKGluaXRfdmFyYXNtX3N0YXR1cyk6IENsZWFyIHAtPmRlZmVycmVkX2NvbnN0YW50cy4KCShpbml0X3ZhcmFzbV9vbmNlKTogQ2FsbCBodGFiX2NyZWF0ZV9nZ2MgZm9yIGNvbnN0X2Rlc2NfaHRhYi4KCjIwMDMtMDUtMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cGNweSk6IE9ubHkgZXhwYW5kIHdoZW4gdGhlIGxlbmd0aAoJb2YgdGhlIHNvdXJjZSBzdHJpbmcgY2FuIGJlIGV2YWx1YXRlZCBhdCBjb21waWxlLXRpbWUuCgoyMDAzLTA1LTA1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiB0ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9jb21waWxlL3NpbWQtNi5jOiBOZXcuCgoJKiBjLXR5cGVjay5jIChkaWdlc3RfaW5pdCk6IEhhbmRsZSBhcnJheXMgb2YgdmVjdG9yIGNvbnN0YW50cy4KCjIwMDMtMDUtMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtcGNweSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbl9zdHBjcHkpOiBPcHRpbWl6ZSBzdHBjcHkgd2hvc2UgcmV0dXJuIHZhbHVlIGlzCglpZ25vcmVkIGludG8gc3RyY3B5IG5vIG1hdHRlciB3aGF0IGFyZ3VtZW50cyBpdCBoYXMuCgkoZXhwYW5kX2J1aWx0aW4pIDxjYXNlIEJVSUxUX0lOX01FTVBDUFk+OiBDYWxsCglleHBhbmRfYnVpbHRpbl9tZW1wY3B5LgoKMjAwMy0wNS0wNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogdGVzdHN1aXRlL2djYy5kZy8yMDAzMDUwNS5jOiBOZXcuCgoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogT3BhcXVlIHBvaW50ZXJzIGNhbgoJaW50ZXJjb252ZXJ0LgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogTmV3IGdsb2JhbCBvcGFxdWVfcF9WMlNJX3R5cGVfbm9kZS4KCShyczYwMDBfaW5pdF9idWlsdGlucyk6IEluaXRpYWxpemUgb3BhcXVlX3BfVjJTSV90eXBlX25vZGUuCgkoc3BlX2luaXRfYnVpbHRpbnMpOiBSZW5hbWUgYWxsIHB2MnNpX3R5cGVfbm9kZSB0bwoJb3BhcXVlX3BfVjJTSV90eXBlX25vZGUuCglSZW1vdmUgZGVjbGFyYXRpb24gb2YgcHYyc2lfdHlwZV9ub2RlLgoJKGlzX2V2NjRfb3BhcXVlX3R5cGUpOiBBY2NlcHQgb3BhcXVlIHBvaW50ZXJzLgoKMjAwMy0wNS0wNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jICh2YWxpZGF0ZV9jb25kaXRpb25fbW9kZSk6IFVzZQoJZmxhZ19maW5pdGVfbWF0aF9vbmx5LgoJKHJzNjAwMF9yZXZlcnNlX2NvbmRpdGlvbik6IE5ldmVyIHJldHVybiBVTktOT1dOOyB1c2UKCWZsYWdfZmluaXRlX21hdGhfb25seS4KCShyczYwMDBfZ2VuZXJhdGVfY29tcGFyZSk6IFVzZSBmbGFnX2Zpbml0ZV9tYXRoX29ubHkuCgkocnM2MDAwX2VtaXRfY21vdmUpOiBIYW5kbGUgVU5MRS4gIFN1cHBvcnQgVU5FUSB1bmRlciAtZmZhc3QtbWF0aC4KCVVzZSBIT05PUl8qIHJhdGhlciB0aGFuIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucy4gIENvcnJlY3QKCVVOR0UgYW5kIEdUIGNhc2VzLiAgSGFuZGxlIFVORVEgYW5kIExUR1Qgd2hlbiAhIEhPTk9SX05BTlMuCgoJKiB0b3BsZXYuYyAoY2hlY2tfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IFN1cHByZXNzIG5vdC11c2VkIHdhcm5pbmcKCWZvciB2b2xhdGlsZSB2YXJpYWJsZXMuCgoyMDAzLTA1LTA1ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIEJJVF9GSUVMRF9SRUYpOiBSZWZpbmUgdGhlIHRlc3QgZm9yY2luZwoJdXNhZ2Ugb2YgYml0ZmllbGQgaW5zdHJ1Y3Rpb25zIGZvciBtb2RlMSAhPSBCTEttb2RlLCBvbmx5IGlnbm9yaW5nCglTTE9XX1VOQUxJR05FRF9BQ0NFU1MgaWYgdGhlIGZpZWxkIGlzIG5vdCBieXRlIGFsaWduZWQuCgkoc3RvcmVfZmllbGQpOiBMaWtld2lzZS4KCjIwMDMtMDUtMDUgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9leHBhbmRfYmlub3BfYnVpbHRpbik6IEFkZAoJZXZzdWJpZncgdG8gYnVpbHRpbnMgYWNjZXB0aW5nIDUtYml0IHVuc2lnbmVkIGNvbnN0YW50cy4KCShlYXN5X3ZlY3Rvcl9jb25zdGFudCk6IFJldHVybiBpZiBWMURJbW9kZS4gIEZpeCB0eXBvLgoKMjAwMy0wNS0wNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUuaDogUmV2ZXJ0IGxpY2Vuc2luZyBjaGFuZ2UgZnJvbSBsYXN0IHBhdGNoLgoKMjAwMy0wNS0wNSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYubWQgKG5lZ3NpMik6IEFsbG9jYXRlIHRoZSBwc2V1ZG9zCgliZWZvcmUgcmVsb2FkLCBidXQgZGVmZXIgdGhlIHNwbGl0IHVudGlsIGFmdGVyLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2V4cGFuZF9hcml0aCk6IE1vZGlmeQoJdG8gbWF0Y2guCgoyMDAzLTA1LTA1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01fQ1BVX1NQRUMpOiBBZGQgNDQwIHN1cHBvcnQuCgkqIGNvbmZpZy9yczYwMDAvdnh3b3Jrcy5oIChDQzFfU1BFQyk6IFVzZSAtbWNwdT00NDAgZm9yIHQ0NDAuCgoyMDAzLTA1LTA1ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBsaWJnY292LmMgKF9fZ2Nvdl9tZXJnZV9hZGQpOiBEbyBub3QgdXNlIGdjb3ZfdHlwZSB3aGVuIGluaGliaXRfbGliYwoJaXMgZGVmaW5lZC4KCjIwMDMtMDUtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW4tYXR0cnMuZGVmIChBVFRSX05PVEhST1dfTk9OTlVMTF8xLAoJQVRUUl9OT1RIUk9XX05PTk5VTExfMiwgQVRUUl9OT1RIUk9XX05PTk5VTExfMyk6IFJlbmFtZWQgZnJvbQoJQVRUUl9OT05OVUxMXzEsIEFUVFJfTk9OTlVMTF8yIGFuZCBBVFRSX05PTk5VTExfMy4KCgkoQVRUUl9OT1RIUk9XX05PTk5VTExfMV8yLCBBVFRSX05PVEhST1dfTk9OTlVMTF8xXzQsCglBVFRSX0NPTlNUX05PVEhST1dfTk9OTlVMTF8xLCBBVFRSX1BVUkVfTk9USFJPV19OT05OVUxMXzEsCglBVFRSX1BVUkVfTk9USFJPV19OT05OVUxMXzFfMiwgQVRUUl9NQUxMT0NfTk9USFJPV19OT05OVUxMXzEpOgoJTmV3LgoKCSogYnVpbHRpbnMuZGVmIChERUZfRVhUX0ZBTExCQUNLX0JVSUxUSU4pOiBBY2NlcHQgQVRUUlMgYXJndW1lbnQuCgkoQlVJTFRfSU5fQlpFUk8sIEJVSUxUX0lOX0JDT1BZLCBCVUlMVF9JTl9CQ01QKTogVXBkYXRlIGNvbW1lbnQKCgkoQlVJTFRfSU5fSU5ERVgsIEJVSUxUX0lOX1JJTkRFWCwgQlVJTFRfSU5fTUVNQ1BZLAoJQlVJTFRfSU5fTUVNTU9WRSwgQlVJTFRfSU5fTUVNQ01QLCBCVUlMVF9JTl9NRU1TRVQsCglCVUlMVF9JTl9NRU1QQ1BZLCBCVUlMVF9JTl9TVFJDQVQsIEJVSUxUX0lOX1NUUk5DQVQsCglCVUlMVF9JTl9TVFBDUFksIEJVSUxUX0lOX1NUUkNQWSwgQlVJTFRfSU5fU1RSTkNQWSwKCUJVSUxUX0lOX1NUUkNNUCwgQlVJTFRfSU5fU1RSTkNNUCwgQlVJTFRfSU5fU1RSTEVOLAoJQlVJTFRfSU5fU1RSU1RSLCBCVUlMVF9JTl9TVFJQQlJLLCBCVUlMVF9JTl9TVFJTUE4sCglCVUlMVF9JTl9TVFJDU1BOLCBCVUlMVF9JTl9TVFJDSFIsIEJVSUxUX0lOX1NUUlJDSFIsIEJVSUxUX0lOX05BTiwKCUJVSUxUX0lOX05BTkYsIEJVSUxUX0lOX05BTkwsIEJVSUxUX0lOX05BTlMsIEJVSUxUX0lOX05BTlNGLAoJQlVJTFRfSU5fTkFOU0wsIEJVSUxUX0lOX1BVVFMsIEJVSUxUX0lOX0ZQVVRDLCBCVUlMVF9JTl9GUFVUUywKCUJVSUxUX0lOX0ZXUklURSwgQlVJTFRfSU5fUFVUU19VTkxPQ0tFRCwgQlVJTFRfSU5fRlBVVENfVU5MT0NLRUQsCglCVUlMVF9JTl9GUFVUU19VTkxPQ0tFRCwgQlVJTFRfSU5fRldSSVRFX1VOTE9DS0VELAoJQlVJTFRfSU5fU1RSRFVQKTogQWRkICJub25udWxsIiBhdHRyaWJ1dGUuCgoyMDAzLTA1LTA0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9maWVsZCk6IERvbid0IGNsb2JiZXIgVEVNUCBpbiBzaGlmdDogaXQgbWlnaHQgYmUKCWEgdmFyaWFibGUuCgkoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IERvbid0IGdvIHRocm91Z2ggYSBWSUVXX0NPTlZFUlRfRVhQUgoJd2hvc2UgcHVycG9zZSBpcyB0byBzdGVwIHVwIHRoZSBhbGlnbm1lbnQuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQUREUl9FWFBSKTogRm9yY2UgTE9fU1VNIGludG8gbWVtb3J5LCBqdXN0IGxpa2UgUkVHLgoKCSogc3Rvci1sYXlvdXQuYyAoY29tcHV0ZV9yZWNvcmRfbW9kZSk6IFJlbGF4IHJlc3RyaWN0aW9uCglvbiBmaWVsZHMgY3Jvc3Npbmcgd29yZCBib3VuZGFyaWVzIGZvcmNpbmcgQkxLbW9kZS4KCjIwMDMtMDUtMDQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIsIHBvc3Rfb3B0aW9ucyk6IFdhcm4gYWJvdXQKCXRyaWdyYXBocyB1bmxlc3MgZXhwbGljaXR5IHNldCBvciAtdHJpZ3JhcGhzLgoJKiBjcHBsZXguYyAod2Fybl9pbl9jb21tZW50KTogTmV3LgoJKF9jcHBfcHJvY2Vzc19saW5lX25vdGVzKTogQmV0dGVyIGhhbmRsaW5nIG9mIC1XdHJpZ3JhcGhzLgoJKF9jcHBfc2tpcF9ibG9ja19jb21tZW50KTogQWRkIGNhbGwgdG8gX2NwcF9wcm9jZXNzX2xpbmVfbm90ZXMuCgkqIGRvYy9jcHBvcHRzLnRleGksIGRvYy9jcHAudGV4aTogVXBkYXRlLgoKMjAwMy0wNS0wNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogTWFrZWZpbGUuaW4gKExJQkdDT1YpOiBBZGQgX2djb3ZfbWVyZ2VfYWRkLgoJKiBnY292LWlvLmg6IE1ha2UgR0NPVl9MSU5LQUdFIGV4dGVybiBpbiBsaWJnY292IGFuZCBwcmV2ZW50IHJlc3VsdGluZwoJbmFtZXNwYWNlIGNsYXNoLgoJKEdDT1ZfTUVSR0VfRlVOQ1RJT05TKTogTmV3LgoJKGdjb3ZfbWVyZ2VfZm4pOiBEZWNsYXJlLgoJKHN0cnVjdCBnY292X2N0cl9pbmZvKTogTmV3IGZpZWxkICJtZXJnZSIuCgkoX19nY292X21lcmdlX2FkZCk6IERlY2xhcmUuCgkqIGNvdmVyYWdlLmMgKGN0cl9tZXJnZV9mdW5jdGlvbnMpOiBOZXcuCgkoYnVpbGRfY3RyX2luZm9fdHlwZSwgYnVpbGRfY3RyX2luZm9fdmFsdWUpOiBJbml0aWFsaXplIG1lcmdlIGZpZWxkCglvZiBnY292X2N0cl9pbmZvIHR5cGUuCgkqIGxpYmdjb3YuYyAoX19nY292X21lcmdlX2FkZCk6IE5ldy4KCShnY292X2V4aXQpOiBDYWxsIGEgaG9vayB0byBtZXJnZSB2YWx1ZXMgb2YgY291bnRlcnMuCgoyMDAzLTA1LTA0ICBHYWJyaWVsIERvcyBSZWlzIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogdG9wbGV2LmggKHBlZHdhcm5fd2l0aF9maWxlX2FuZF9saW5lKTogRG9uJ3QgZGVjbGFyZS4KCSogZGlhZ25vc3RpYy5jIChwZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSk6IFJlbW92ZS4KCjIwMDMtMDUtMDQgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogRG9uJ3QgdXNlIGVycm9yX3dpdGhfZmlsZV9hbmRfbGluZS4KCjIwMDMtMDUtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2NvbnN0YW50X3AsIGV4cGFuZF9idWlsdGluX3N0cmxlbiwKCWV4cGFuZF9idWlsdGluX2ZyYW1lX2FkZHJlc3MpOiBVcGRhdGUgcHJvdG90eXBlcy4KCShleHBhbmRfYnVpbHRpbl9jb25zdGFudF9wLCBleHBhbmRfYnVpbHRpbl9zdHJsZW4sCglleHBhbmRfYnVpbHRpbl9zdHJjcHksIGV4cGFuZF9idWlsdGluX21lbXNldCwKCWV4cGFuZF9idWlsdGluX2J6ZXJvLCBleHBhbmRfYnVpbHRpbl9hcmdzX2luZm8sCglleHBhbmRfYnVpbHRpbl9mcmFtZV9hZGRyZXNzKTogUGFzcyBpbiBqdXN0IHRoZSBhcmd1bWVudChzKQoJbmVlZGVkLCBub3QgdGhlIGVudGlyZSBleHByZXNzaW9uIGBleHAnLgoJKGV4cGFuZF9idWlsdGluKTogVXBkYXRlIGFsbCBjYWxscyB0byB0aGVzZSBmdW5jdGlvbnMuCgoyMDAzLTA1LTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pIDxCVUlMVF9JTl9EV0FSRl9GUF9SRUdOVU0+OiBSZW1vdmUuCgk8QlVJTFRfSU5fRFdBUkZfU1BfQ09MVU1OPjogTmV3LgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0RXQVJGX0ZQX1JFR05VTSk6IFJlbW92ZS4KCShCVUlMVF9JTl9EV0FSRl9TUF9DT0xVTU4pOiBOZXcuCgkqIGR3YXJmMm91dC5jIChleHBhbmRfYnVpbHRpbl9kd2FyZl9mcF9yZWdudW0pOiBSZW1vdmUuCgkoZXhwYW5kX2J1aWx0aW5fZHdhcmZfc3BfY29sdW1uKTogTmV3LgoJKiBleGNlcHQuaDogVXBkYXRlIHRvIG1hdGNoLgoJKiB1bndpbmQtZHcyLmMgKGV4ZWN1dGVfc3RhY2tfb3ApOiBDb3JyZWN0IHN0YWNrIHB1c2ggdHlwby4KCShleGVjdXRlX2NmYV9wcm9ncmFtKTogUmVjb3JkIGxvY2F0aW9uIGV4cHJlc3Npb24gYWRkcmVzcwoJYmVmb3JlIGV4dHJhY3RpbmcgbGVuZ3RoLgoJKHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBJbnN0YWxsIG9sZCBDRkEgaW50byBzdGFjayBwb2ludGVyIGNvbHVtbi4KCSh1d19pbml0X2NvbnRleHRfMSk6IFNldCBjZmFfcmVnIHRvIHN0YWNrIHBvaW50ZXIgY29sdW1uLgoKMjAwMy0wNS0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGNvbnN0YW50X3Bvb2xfZXhwcl9wKTogTWFrZSBzdGF0aWMgYW5kCglyZXR1cm4gYm9vbC4KCSh0b2NfcmVsYXRpdmVfZXhwcl9wKTogTGlrZXdpc2UuCgkoU1BFX0NPTlNUX09GRlNFVF9PSyk6IE1vdmUgZnJvbSByczYwMDAuaC4KCShsZWdpdGltYXRlX2NvbnN0YW50X3Bvb2xfYWRkcmVzc19wKTogTW92ZSBmcm9tIHJzNjAwMC5oLCBjaGFuZ2UKCWludG8gYSBmdW5jdGlvbiwgZG93bmNhc2UgYWxsIHVzZXJzLgoJKGxlZ2l0aW1hdGVfc21hbGxfZGF0YV9wKTogTGlrZXdpc2UuCgkobGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wKTogTGlrZXdpc2UuCgkobGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKGxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wKTogTGlrZXdpc2UuCgkobGVnaXRpbWF0ZV9sb19zdW1fYWRkcmVzc19wKTogTGlrZXdpc2UuCgkocnM2MDAwX21vZGVfZGVwZW5kZW50X2FkZHJlc3MpOiBMaWtld2lzZS4KCSogcnM2MDAwLmggKENPTlNUQU5UX1BPT0xfRVhQUl9QLCBUT0NfUkVMQVRJVkVfRVhQUl9QKTogUmVtb3ZlLgoJKFNQRV9DT05TVF9PRkZTRVRfT0ssIExFR0lUSU1BVEVfQ09OU1RBTlRfUE9PTF9BRERSRVNTX1AsCglMRUdJVElNQVRFX1NNQUxMX0RBVEFfUCwgTEVHSVRJTUFURV9PRkZTRVRfQUREUkVTU19QLAoJTEVHSVRJTUFURV9JTkRFWEVEX0FERFJFU1NfUCwgTEVHSVRJTUFURV9JTkRJUkVDVF9BRERSRVNTX1AsCglMRUdJVElNQVRFX0xPX1NVTV9BRERSRVNTX1ApOiBNb3ZlIGludG8gcnM2MDAwLmMuCgkoTEVHSVRJTUFURV9BRERSRVNTX0lOVEVHRVJfUCk6IFJlbW92ZS4KCShHT19JRl9NT0RFX0RFUEVOREVOVF9BRERSRVNTKTogVXNlIHJzNjAwMF9tb2RlX2RlcGVuZGVudF9hZGRyZXNzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogVXBkYXRlLgoKMjAwMy0wNS0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChSRVZFUlNJQkxFX0NDX01PREUpOiBEZWZpbmUuCgkoUkVWRVJTRV9DT05ESVRJT04pOiBEZWZpbmUuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzY2NfY29tcGFyaXNvbl9vcGVyYXRvcik6IE1ha2UgZXF1aXZhbGVudAoJdG8gYnJhbmNoX3Bvc2l0aXZlX2NvbXBhcmlzb25fb3BlcmF0b3IuCgkoY2NyX2JpdCk6IENoZWNrIHRoYXQgc0NPTkQgY29uZGl0aW9ucyBhcmUgYWN0dWFsbHkgYSBwb3NpdGl2ZSBiaXQuCgkocHJpbnRfb3BlcmFuZCk6IFJlbW92ZSAlRCBzdWJzdGl0dXRpb24uCgkocnM2MDAwX2VtaXRfc0NPTkQpOiBHZW5lcmF0ZSBjb21wbGVtZW50IG9wZXJhdGlvbiB0byBlbnN1cmUgdGhhdAoJc0NPTkQgaW5wdXQgaXMgYSBwb3NpdGl2ZSBiaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBSZWFycmFuZ2Ugc0NPTkQgdGVtcGxhdGVzIHRvIGJlIGluIHRoZQoJc2FtZSBvcmRlciBhcyBiQ09ORCwgYW5kIGFkZCB0aGUgbWlzc2luZyBvbmVzLiAgUmVtb3ZlIHRoZSAlRAoJc3Vic3RpdHV0aW9ucyBmcm9tIHRoZSBzY2MgcGF0dGVybnMuCgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBBZGQgY2FzZSBmb3IKCSEgKGZhYnMoeCkgPCAwLjApLgoKMjAwMy0wNS0wMyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBnY2MvZml4aW5jL2ZpeGluY2wudHBsKGRuZSk6IHJlc3RvcmUgdGhpcyB0byBmb3JjZSBtZXJnZSBjb25mbGljdHMKCWluIGZpeGluY2wueAoJKiBnY2MvZml4aW5jL2luY2xoYWNrLmRlZihic2Rfc3RkaW9fYXR0cnNfY29uZmxpY3QpOiBmaXggcGxhY2VtZW50CgoyMDAzLTA1LTAzICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5oOiBSZW1vdmUgdW5lY2Vzc2FyeSBjYXN0cy4gIE1pc2MgY2xlYW51cHMuCgoyMDAzLTA1LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvMTA2MDQKCSogYy1jb21tb24uYyAod2Fybl9zaWduX2NvbXBhcmUpOiBJbml0aWFsaXplIHRvIC0xLgoJKiBjLW9wdHMuYyAoY19jb21tb25faW5pdF9vcHRpb25zKTogRG9uJ3Qgc2V0IHdhcm5fc2lnbl9jb21wYXJlIGhlcmUuCgkoY19jb21tb25fZGVjb2RlX29wdGlvbiA8T1BUX1dhbGw+KTogU2V0IHdhcm5fc2lnbl9jb21wYXJlCglmb3IgQysrIG9ubHkuCgkoY19jb21tb25fcG9zdF9vcHRpb25zKTogU2V0IHdhcm5fc2lnbl9jb21wYXJlIGZyb20gZXh0cmFfd2FybmluZ3MKCWlmIGl0J3Mgc3RpbGwgLTEgYXQgdGhpcyBwb2ludC4KCgkqIHRvcGxldi5jIChtYXliZV93YXJuX3VudXNlZF9wYXJhbWV0ZXIpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHNldF9XZXh0cmEpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKFdfb3B0aW9ucyk6IFJlbW92ZSAiZXh0cmEiLgoJKGRlY29kZV9XX29wdGlvbik6IENhbGwgc2V0X1dleHRyYS4KCShpbmRlcGVuZGVudF9kZWNvZGVfb3B0aW9uKTogTGlrZXdpc2UuCgkoc2V0X1d1bnVzZWQpOiBDb29wZXJhdGUgd2l0aCBzZXRfV2V4dHJhIGluIHNldHRpbmcKCXdhcm5fdW51c2VkX3BhcmFtZXRlci4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogTm8gbmVlZCB0byBjaGVjayBleHRyYV93YXJuaW5ncyBhcwoJd2VsbCBhcyB3YXJuX3VuaW5pdGlhbGl6ZWQuCgoJKiBjLXR5cGVjay5jIChidWlsZF9iaW5hcnlfb3AsIGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOgoJTm8gbmVlZCB0byBjaGVjayBleHRyYV93YXJuaW5ncyBhcyB3ZWxsIGFzIHdhcm5fc2lnbl9jb21wYXJlLgoJKGludGVybmFsX2J1aWxkX2NvbXBvdW5kX2V4cHIpOiBObyBuZWVkIHRvIGNoZWNrIGV4dHJhX3dhcm5pbmdzCglhcyB3ZWxsIGFzIHdhcm5fdW51c2VkX3ZhbHVlLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogTm8gbmVlZCB0byBjaGVjayBleHRyYV93YXJuaW5ncwoJYXMgd2VsbCBhcyB3YXJuX3VudXNlZF9wYXJhbWV0ZXIuCgkqIHN0bXQuYyAoZXhwYW5kX2V4cHJfc3RtdF92YWx1ZSk6IE5vIG5lZWQgdG8gY2hlY2sgZXh0cmFfd2FybmluZ3MKCWFzIHdlbGwgYXMgd2Fybl91bnVzZWRfdmFsdWUuCgoJKiBkb2MvaW52b2tlLnRleGk6IENsYXJpZnkgZG9jdW1lbnRhdGlvbiBvZiAtV3NpZ24tY29tcGFyZS4KCgkqIE1ha2VmaWxlLmluOiBEaXNhYmxlIC1XZXJyb3IgZm9yIGdlbmd0eXBlLWxleC5vLgoKMjAwMy0wNS0wMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZW1pdC1ydGwuYyAobGFzdF9jYWxsX2luc24sIGFkZF9mdW5jdGlvbl91c2FnZV90byk6IE5ldyBmdW5jdGlvbnMuCgkqIHJ0bC5oIChsYXN0X2NhbGxfaW5zbiwgYWRkX2Z1bmN0aW9uX3VzYWdlX3RvKTogTmV3IHByb3RvdHlwZXMuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2FwcGx5KTogVXNlIHRoZSBuZXcgZW1pdC1ydGwgZnVuY3Rpb25zLgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IExpa2V3aXNlLgoJKGV4cGFuZF9jYWxsKTogRm9yIGNhbGxzIGluaXRpYWxpemluZyBjb25zdGFudCBtZW1vcnksIHJlcGxhY2UKCWVtaXNzaW9uIG9mIHN0YW5kYWxvbmUgbWVtIC91IGNsb2JiZXIgd2l0aCBmdW5jdGlvbiB1c2FnZSBlbnRyeS4KCSogZXhwci5jIChlbWl0X2Jsb2NrX21vdmVfdmlhX2xpYmNhbGwpOiBMaWtld2lzZS4KCSogY3NlLmMgKGNvdW50X3JlZ191c2FnZSwgY2FzZSBFWFBSX0xJU1QpOiBOZXcgY2FzZS4KCSogZmxvdy5jIChwcm9wYWdhdGVfb25lX2luc24pOiBQYXNzIGVudGlyZSBvcGVyYW5kIG9mCglDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgdG8gbWFya191c2VkX3JlZ3MuCgkqIGludGVncmF0ZS5jICh0cnlfY29uc3RhbnRzKTogRm9yIENBTExfSU5TTnMsIHN1YnN0aXR1dGUgY29uc3RhbnRzCgl3aXRoaW4gdGhlIEZVTkNUSU9OX1VTQUdFIGFsc28uCgkqIGxvb3AuYyAocHJlc2Nhbl9sb29wKTogTm90ZSBjbG9iYmVycyBvZiBjb25zdCBtZW0gbWVudGlvbmVkIGluCglGVU5DVElPTl9VU0FHRSBsaXN0cy4KCSogcmVsb2FkMS5jIChyZXBsYWNlX3BzZXVkb3NfaW4pOiBSZW5hbWVkLgoJKHJlbG9hZCk6IFVzZSBpdCBmb3IgY2xvYmJlcnMgc3Vydml2aW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHJlbG9hZC4KCjIwMDMtMDUtMDMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIFZJRVdfQ09OVkVSVF9FWFBSKTogRG9uJ3QgdXNlCglnZW5fbG93cGFydCBvbiBub24taW50ZWdlciBtb2Rlcy4KCgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX2ZpZWxkKTogV2hlbiBhZGp1c3Rpbmcgb2Zmc2V0X2FsaWduLCB1c2UKCWRlc2lyZWRfYWxpZ24sIG5vdCBERUNMX0FMSUdOLgoKMjAwMy0wNS0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChwZW5kaW5nX2ludmFsaWRfeHJlZl9maWxlKTogUmVtb3ZlLgoJKHBlbmRpbmdfaW52YWxpZF94cmVmX2xpbmUpOiBSZW1vdmUuCgkocGVuZGluZ19pbnZhbGlkX3hyZWZfbG9jYXRpb24pOiBOZXcuCgkobG9va3VwX2xhYmVsKTogVXNlIGxvY2F0aW9uX3QgYW5kIGlucHV0X2xvY2F0aW9uIGRpcmVjdGx5LgoJKGxvb2t1cF90YWcpOiBMaWtld2lzZS4KCShwZW5kaW5nX3hyZWZfZXJyb3IpOiBMaWtld2lzZS4KCShjX2V4cGFuZF9ib2R5XzEpOiBMaWtld2lzZS4KCSogYy1jb21tb24uYyAoeF9leHBhbmRfc3RhcnRfY29uZCk6IExpa2V3aXNlLgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfZm9yX3N0bXQpOiBMaWtld2lzZS4KCShmaW5kX3JlYWNoYWJsZV9sYWJlbCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChvdXRwdXRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKGZpbmRfYWxsb2NhX2NhbGwpOiBMaWtld2lzZS4KCShmaW5kX2J1aWx0aW5fbG9uZ2ptcF9jYWxsKTogTGlrZXdpc2UuCgkqIGdjYy5jIChpbnB1dF9maWxlbmFtZSk6IE1ha2Ugc3RhdGljLgoKMjAwMy0wNS0wMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogRml4IGNvbW1lbnQgdHlwby4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19pbnRlZ2VyX29wKTogTmV3IHN0cnVjdHVyZS4KCShNSVBTX01BWF9JTlRFR0VSX09QUyk6IERlZmluZS4KCShtaXBzX2NvbnN0X2luc25zKTogVXNlIG1pcHNfYnVpbGRfaW50ZWdlciB0byBkZXRlcm1pbmUgdGhlIG51bWJlcgoJb2YgaW5zdHJ1Y3Rpb25zIG5lZWRlZCB0byBsb2FkIGEgQ09OU1RfSU5ULgoJKG1vdmVfb3BlcmFuZCk6IFJlamVjdCBjb21wb3VuZCBDT05TVF9JTlRzLgoJKG1pcHNfYnVpbGRfc2hpZnQsIG1pcHNfYnVpbGRfbG93ZXIsIG1pcHNfYnVpbGRfaW50ZWdlcik6IE5ldyBmbnMuCgkobWlwc19tb3ZlX2ludGVnZXIpOiBOZXcgZm4uCgkobWlwc19sZWdpdGltaXplX2NvbnN0X21vdmUpOiBQYXNzIENPTlNUX0lOVHMgdG8gbWlwc19tb3ZlX2ludGVnZXIuCgkobWlwc19sZWdpdGltaXplX21vdmUpOiBPbmx5IGxlZ2l0aW1pemUgY29uc3RhbnRzIHdoZW4gbW92aW5nCgl3b3JkIG9yIHN1YndvcmQgdmFsdWVzLgoKMjAwMy0wNS0wMiAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGdjb3YtaW92LmgpOiBVc2UgbW92ZS1pZi1jaGFuZ2UgYW5kIGEgc3RhbXAuCgoyMDAzLTA1LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHBjcHkpOiBDb3B5IGBhcmdsaXN0JyBiZWZvcmUKCW1vZGlmeWluZyBpdC4KCjIwMDMtMDUtMDMgIEZhbGsgSHVlZmZuZXIgPGZhbGsuaHVlZmZuZXJAc3R1ZGVudC51bmktdHVlYmluZ2VuLmRlPgoJICAgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRvYy9jb250cmliLnRleGkgKENvbnRyaWJ1dG9ycyk6IEFkZCBaZGVuZWsgRHZvcmFrLCBBbGR5CglIZXJuYW5kZXosIGFuZCBLYXp1IEhpcmF0YS4gIFVwZGF0ZSBSaWNoYXJkIEhlbmRlcnNvbi4KCjIwMDMtMDUtMDIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCAnZXh0ZXJuJwoJdG8gdGVudGF0aXZlIGRlY2xhcmF0aW9uLgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTWU1CT0xfRkxBR19TTUFMTF9WNCk6IERlbGV0ZS4KCShTWU1CT0xfRkxBR19TTUFMTF9WNCk6IERlbGV0ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoc21hbGxfZGF0YV9vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfU01BTExfUC4KCShyczYwMDBfZWxmX2VuY29kZV9zZWN0aW9uX2luZm8pOiBEb24ndCBzZXQgU1lNQk9MX0ZMQUdfU01BTExfVjQuCgkocnM2MDAwX2VsZl9pbl9zbWFsbF9kYXRhX3ApOiBBZGQgZXh0cmEgc2VjdGlvbiBuYW1lcy4gIEFkZAoJY29tbWVudCBhYm91dCBUUkVFX1BVQkxJQyB0ZXN0LgoKCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX3N3aXRjaF9zdG10LCBnZW5ydGxfaWZfc3RtdCk6IENhbGwKCWV4cGFuZF9zdG10IG9uIHJlc3VsdCBvZiBleHBhbmRfdW5yZWFjaGFibGVfc3RtdC4KCjIwMDMtMDUtMDIgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRvYy9jb250cmliLnRleGkgKENvbnRyaWJ1dG9ycyk6IEFkZCBEYW5pZWwgQmVybGluLgoKMjAwMy0wNS0wMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC97NjAzLm1kLDZ4eC5tZCw3NDUwLm1kLDd4eC5tZCxyczY0Lm1kfTogRGVjcmVhc2UKCW51bWJlciBvZiBhdXRvbWF0YS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHN5bWJvbF9yZWZfb3BlcmFuZCk6IENoZWNrCglTWU1CT0xfUkVGX0ZVTkNUSU9OX1Agb24gQUlYLgoJKGN1cnJlbnRfZmlsZV9mdW5jdGlvbl9vcGVyYW5kKTogU2FtZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGNhbGwsY2FsbF92YWx1ZSk6IEZvcmNlIG5vbi1mdW5jdGlvbgoJc3ltYm9sX3JlZiBpbnRvIHJlZ2lzdGVyIG9uIEFJWC4KCjIwMDMtMDUtMDIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjYWxscy5jIChzdHJ1Y3QgYXJnX2RhdGEpOiBNb3ZlIG9mZnNldCwgc2xvdF9vZmZzZXQsIHNpemUgYW5kCglhbGlnbm1lbnRfcGFkIHRvIHN0cnVjdCBsb2NhdGVfYW5kX3BhZF9hcmdfZGF0YS4gIFVwZGF0ZSBhbGwgcmVmcy4KCShpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogQWRqdXN0IGNhbGwgdG8gbG9jYXRlX2FuZF9wYWRfcGFybS4KCURlbGV0ZSBhbGlnbm1lbnRfcGFkIHZhci4gIERvbid0IGNhbGN1bGF0ZSBzbG90X29mZnNldCBoZXJlLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBEZWxldGUgYWxpZ25tZW50X3BhZCwgb2Zmc2V0IGFuZCBzaXplCgl2YXJzLiAgVXNlIHN0cnVjdCBsb2NhdGVfYW5kX3BhZF9hcmdfZGF0YSBpbnN0ZWFkLiAgQWRqdXN0IHJlZnMuCglBZGp1c3QgY2FsbCB0byBsb2NhdGVfYW5kX3BhZF9wYXJtLiAgRG9uJ3QgdHdlYWsgYXJnIHNpemUgZm9yCglwYXJ0aWFsIGluLXJlZ3MgaGVyZS4gIEZvcm1hdHRpbmcgZml4ZXMuCgkqIGV4cHIuaCAoc3RydWN0IGxvY2F0ZV9hbmRfcGFkX2FyZ19kYXRhKTogTmV3IHN0cnVjdC4KCShsb2NhdGVfYW5kX3BhZF9wYXJtKTogQWRqdXN0IGRlY2xhcmF0aW9uLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBMb2NhbGl6ZSB2YXJzLiAgVXNlICJsb2NhdGUiIGluc3RlYWQgb2YKCW90aGVyIGFyZyBsb2NhdGlvbiB2YXJzLiAgRG9uJ3QgaW52b2tlIEZVTkNUSU9OX0FSRyBvcgoJRlVOQ1RJT05fSU5DT01JTkdfQVJHIHVubGVzcyBwcmV0ZW5kX25hbWVkIGlzIGRpZmZlcmVudCBmcm9tCgluYW1lZF9hcmcuICBIZWVkIE1VU1RfUEFTU19JTl9TVEFDSyBhbmQgc2V0IHVwICJwYXJ0aWFsIiBiZWZvcmUKCWNhbGxpbmcgbG9jYXRlX2FuZF9wYWRfcGFybS4gIEFkanVzdCBsb2NhdGVfYW5kX3BhZF9wYXJtIGNhbGwuCglVc2Ugc2xvdF9vZmZzZXQgZm9yIHN0YWNrIGhvbWUgb2YgcmVnIHBhcm1zLiAgQ29ycmVjdCB0ZXN0IGZvcgoJcGFybSBwYXNzZWQgaW4gbWVtb3J5LiAgRm9ybWF0dGluZyBmaXhlcy4KCShsb2NhdGVfYW5kX3BhZF9wYXJtKTogQWRkICJwYXJ0aWFsIiB0byBwYXJhbXMuICBSZXBsYWNlIG9mZnNldF9wdHIKCWFyZ19zaXplX3B0ciBhbmQgYWxpZ25tZW50IHBhZCB3aXRoICJsb2NhdGUiLiAgU2V0IHNsb3Rfb2Zmc2V0IGhlcmUuCglDb3JyZWN0IGluaXRpYWxfb2Zmc2V0X3B0ciBoYW5kbGluZy4gIExvY2FsaXplIHZhcnMuICBBbHdheXMgcGFkCglsb2NhdGUtPm9mZnNldCBldmVuIHdoZW4gaW5fcmVncy4KCjIwMDMtMDUtMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVFJFRV9IKTogUmVwbGFjZSBsb2NhdGlvbi5oIHdpdGggaW5wdXQuaC4KCShHVEZJTEVTKSBSZW1vdmUgbG9jYXRpb24uaAoJKGd0LWxpc3RzLmgpOiBSZXBsYWNlIGd0LWxvY2F0aW9uLmggd2l0aCBndC1pbnB1dC5oCgkqIGlucHV0LmggKGlucHV0X2ZpbGVuYW1lLCBpbnB1dF9saW5lKTogUmVtb3ZlIHZhcmlhYmxlcy4KCShsb2NhdGlvbl9zLCBsb2NhdGlvbl90KTogTW92ZSBmcm9tIGxvY2F0aW9uLmguCgkoaW5wdXRfbG9jYXRpb24pOiBOZXcuCgkoaW5wdXRfZmlsZW5hbWUsIGlucHV0X2xpbmUpOiBOZXcgI2RlZmluZXMuCgkqIGxvY2F0aW9uLmg6IFJlbW92ZS4KCSogdHJlZS5oOiBSZXBsYWNlIGxvY2F0aW9uLmggd2l0aCBpbnB1dC5oLgoJKGlucHV0X2ZpbGVuYW1lLCBpbnB1dF9saW5lKTogUmVtb3ZlLgoJKiBkaWFnbm9zdGljLmg6IFJlcGxhY2UgbG9jYXRpb24uaCB3aXRoIGlucHV0LmguCgkqIGdjYy5oIChpbnB1dF9maWxlbmFtZSwgaW5wdXRfZmlsZW5hbWVfbGVuZ3RoKTogUmVtb3ZlIGRlY2xhcmF0aW9ucy4KCSogdG9wbGV2LmMgKGlucHV0X2ZpbGVuYW1lLCBpbnB1dF9saW5lKTogUmVtb3ZlLgoJKGlucHV0X2xvY2F0aW9uKTogRGVmaW5lLgoJKHB1c2hfc3JjbG9jLCBwb3Bfc3JjbG9jKTogQWRqdXN0LgoJKiBkaWFnbm9zdGljLmMgKGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfbW9kdWxlKTogQWRqdXN0LgoKMjAwMy0wNS0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHhzdG9ybXkxNiB0byBsaXN0IG9mIHRhcmdldHMgdGhhdCBoYXMgYSBub3AKCWluc3RydWN0aW9uIGFuZCBoZW5jZSB3aGljaCBjYW4gYmUgdGVzdGVkIHRvIHNlZSBpZiB0aGUKCWFzc2VtYmxlciBzdXBwb3J0cyB0aGUgLS1nZHdhcmYyIHN3aXRjaC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wNS0wMSAgRmFsayBIdWVmZm5lciAgPGZhbGsuaHVlZmZuZXJAc3R1ZGVudC51bmktdHVlYmluZ2VuLmRlPgoKCVBSIHRhcmdldC84MjU3CgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9zYV9tYXNrLCBhbHBoYV9leHBhbmRfcHJvbG9ndWUsCglhbHBoYV9zdGFydF9mdW5jdGlvbiwgYWxwaGFfZXhwYW5kX2VwaWxvZ3VlLCB1bmljb3Nta19nZW5fZHNpYik6CglBdm9pZCB1bmRlZmluZWQgc2hpZnRzIGJ5IG1ha2luZyB0aGUgc2hpZnQgb3BlcmFuZCB1bnNpZ25lZC4KCjIwMDMtMDUtMDEgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IEFsc28gY2hlY2sgdGhhdCBhbGwgb2YgYSBtdWx0aS1yZWcKCXZhbHVlIGlzIGluIHRoZSBjbGFzcy4KCjIwMDMtMDUtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzY2FuLmggKGxpbmVubyk6IFJldmVydCB0aGUgcmVuYW1lIGhlcmUuCgoyMDAzLTA1LTAxICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fZW5jb2RlX3NlY3Rpb25faW5mbyk6IENhbGwKCWRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mby4KCjIwMDMtMDUtMDEgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChkZWZpbmVfYXR0ciAidHlwZSIpOiBBZGQgbWZqbXByLgoJKG1vdnNpX2ludGVybmFsMSk6IFVzZSBuZXcgbWZqbXByIGF0dHJpYnV0ZS4KCShtb3ZoaV9pbnRlcm5hbCk6IFNhbWUuCgkobW92cWlfaW50ZXJuYWwpOiBTYW1lLgoJKG1vdmNjX2ludGVybmFsMSk6IFNhbWUuCgkobW92ZGlfaW50ZXJuYWw2NCk6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvezQweC5tZCw2MDMubWQsNnh4Lm1kLDc0NTAubWQsN3h4Lm1kLG1wYy5tZCwKCXBvd2VyNC5tZCxyaW9zMS5tZCxyaW9zMi5tZCxyczY0Lm1kfTogQWRkIG1mam1wci4KCSogY29uZmlnL3JzNjAwMC80MHgubWQ6IEFkZCBmcHVfNDA1LgoJKiBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZDogTWVyZ2UgcG93ZXI0bHN1IGFuZCBwb3dlcjRkaXNwIGF1dG9tYXRhCglpbnRvIHBvd2VyNG1pc2MgYXV0b21hdGEuICBSZW1vdmUgZXh0cmFuZW91cyBwYXJlbnRoZXNlcy4KCSogY29uZmlnL3JzNjAwMC80NDAubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogQWRkIDQ0MCwKCTQ0MGZwLiAgUmVuYW1lIDQwNWYgdG8gNDA1ZnAuCgkoZnVuY3Rpb25fYXJnX3BhZGRpbmcpOiBDb3JyZWN0IGZvcm1hdHRpbmcuCgkocnM2MDAwX3J0eF9jb3N0cyk6IEFkZCBQUk9DRVNTT1JfUFBDNDQwIGNhc2VzLgoKMjAwMy0wNS0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlucHV0LmggKGxpbmVubyk6IFJlbmFtZSB0byAuLi4KCShpbnB1dF9saW5lKTogLi4uIGhlcmUuCgkqIHRyZWUuaCAobGluZW5vKTogUmVuYW1lIHRvIC4uLgoJKGlucHV0X2xpbmUpOiAuLi4gaGVyZS4KCSogc2Nhbi5oIChsaW5lbm8pOiBSZW5hbWUgdG8gLi4uCgkoaW5wdXRfbGluZSk6IC4uLiBoZXJlLgoJKiB0b3BsZXYuYyAobGluZW5vKTogUmVuYW1lIHRvIC4uLgoJKGlucHV0X2xpbmUpOiAuLi4gaGVyZS4KCShwdXNoX3NyY2xvYywgcG9wX3NyY2xvYyk6ICBSZW5hbWUgbGluZW5vIHRvIGlucHV0X2xpbmUuCgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX3N0YXJ0X2NvbmQsIGZuYW1lX2RlY2wpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKHBvcGxldmVsLCBwb3BfbGFiZWxfbGV2ZWwsIGxvb2t1cF9sYWJlbCwgbG9va3VwX3RhZywKCXN0b3JlX3Bhcm1fZGVjbHMsIGNfZXhwYW5kX2JvZHlfMSk6IExpa2V3aXNlLgoJKiBjLWVycm9ycy5jIChwZWR3YXJuX2M5OSk6IExpa2V3aXNlLgoJKiBjLWZvcm1hdC5jIChzdGF0dXNfd2FybmluZyk6IExpa2V3aXNlLgoJKiBjLWxleC5jIChmZV9maWxlX2NoYW5nZSwgY2JfZGVmX3ByYWdtYSwgY19sZXgpOiBMaWtld2lzZS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX3Bvc3Rfb3B0aW9ucywgY19jb21tb25fcGFyc2VfZmlsZSk6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluIChzYXZlX2ZpbGVuYW1lLCBtYXliZV90eXBlX3F1YWwsIGlmYyk6IExpa3dpc2UuCgkqIGMtc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X3RyZWUsIGJ1aWxkX3N0bXQsIGVtaXRfbG9jYWxfdmFyLAoJZ2VudHJ0bF9nb3RvX3N0bXQsIGdlbnJ0bF9leHByX3N0bXRfdmFsdWUsIGdlbnJ0bF9kZWNsX3N0bXQsCglnZW5ydGxfaWZfc3RtdCwgZ2VucnRsX3doaWxlX3N0bXQsIGdlbnJ0bF9kb19zdG10LAoJZ2VucnRsX3JldHVybl9zdG10LCBnZW5ydGxfZm9yX3N0bXQsIGJ1aWxkX2JyZWFrX3N0bXQsCglidWlsZF9jb250aW51ZV9zdG10LCBnZW5ydGxfc3dpdGNoX3N0bXQsIGdlbnJ0bF9hc21fc3RtdCwKCXByZXBfc3RtdCwgZmluZF9yZWFjaGFibGVfbGFiZWwsIGV4cGFuZF91bnJlYWNoYWJsZV9zdG10KTogTGlrZXdpc2UuCgkqIGNvdmVyYWdlLmMgKGNyZWF0ZV9jb3ZlcmFnZSk6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmMgKHBlZHdhcm4sIHNvcnJ5LCBlcnJvciwgZmF0YWxfZXJyb3IsCglpbnRlcm5hbF9lcnJvciwgd2FybmluZywgZGlhZ25vc3RpY19yZXBvcnRfY3VycmVudF9tb2R1bGUsCglpbmZvcm0pOiBMaWtld2lzZS4KCSogZXhwci5jIChleHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbiwKCW91dHB1dF9pbmxpbmVfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogcnRsLWVycm9yLmMgKGZpbGVfYW5kX2xpbmVfZm9yX2FzbSk6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChmaW5kX2FsbG9jYV9jYWxsLCBmaW5kX2J1aWx0aW5fbG9uZ2ptcF9jYWxsLAoJd2Fsa190cmVlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobWFrZV9ub2RlKTogTGlrZXdpc2UuCgkqIGFkYSwgY3AsIGYsIGphdmEsIG9iamMsIHRyZWVsYW5nOiBMaWtld2lzZS4KCSogb2JqYy9vYmpjLWFjdC5jIChvYmpjX2luaXQpOiBSZW5hbWUgbGluZW5vIHRvIGlucHV0X2xpbmUuCgkoYnVpbGRfbW9kdWxlX2Rlc2NyaXB0b3IsIGJ1aWxkX3NlbGVjdG9yX3RyYW5zbGF0aW9uX3RhYmxlLAoJYnVpbGRfcHJvdG9jb2xfdGVtcGxhdGUsIGJ1aWxkX21ldGhvZF9wcm90b3R5cGVfbGlzdF90ZW1wbGF0ZSwKCWJ1aWxkX2NhdGVnb3J5X3RlbXBsYXRlLCBidWlsZF9zZWxlY3Rvcl90YWJsZSwKCWJ1aWxkX2NsYXNzX3RlbXBsYXRlLCBidWlsZF9zdXBlcl90ZW1wbGF0ZSwgYnVpbGRfaXZhcl90ZW1wbGF0ZSwKCWJ1aWxkX2l2YXJfbGlzdF90ZW1wbGF0ZSwgYnVpbGRfbWV0aG9kX2xpc3RfdGVtcGxhdGUsCglidWlsZF9tZXRob2RfdGVtcGxhdGUsIGFkZF9pbnN0YW5jZV92YXJpYWJsZSk6IExpa2V3aXNlLgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9pbml0LCBkd2FyZjJvdXRfZmluaXNoKTogQ2hhbmdlIHBhcmFtZXRlcgoJbmFtZSBmcm9tIGlucHV0X2ZpbGVuYW1lLgoKMjAwMy0wNC0zMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgkgICAgUmljaGFyZCBTYW5kaWZvcmQgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgZnJvbSBwYXRjaGVzIGJlbG93LgoJKiBjb21iaW5lLmMgKGdlbl9sb3dwYXJ0X2Zvcl9jb21iaW5lKTogRml4IGNvbW1lbnQgYW5kIGFkZCB0ZXN0cwoJZm9yIGFsbCBzeW1ib2xpYyBvcGVyYW5kcy4KCSogY29uZmlnL21pcHMvbWlwcy5jOiBNaWdyYXRlIFJUWF9DT1NUUyBhbmQgQ09OU1RfQ09TVFMKCXRvIGZ1bmN0aW9uLgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBGaXggdHlwby4KCSogTWVyZ2UgZnJvbSBtaXBzLTNfNC1yZXdyaXRlIGJyYW5jaDoKCgkyMDAzLTA0LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NsYXNzaWZ5X3N5bWJvbCk6IEFkZCBjYXRjaC1hbGwgY2FzZSBmb3IKCQloYW5kbGluZyBsb2NhbCBsYWJlbHMgd2hlbiBUQVJHRVRfQUJJQ0FMTFMuCgoJMjAwMy0wNC0wNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfZXhwYW5kX2VwaWxvZ3VlKTogQWRkIGFuCgkJaW50ZWdlciBhcmd1bWVudC4KCQkobWlwc19leHBhbmRfY2FsbCk6IExpa2V3aXNlLgoJCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfU0lCQ0FMTFMpOiBOZXcgbWFjcm8uCgkJKEZJWEVEX1JFR0lTVEVSUyk6IENsZWFyICQzMSBlbnRyeS4KCQkoQ0FMTF9VU0VEX1JFR0lTVEVSUywgQ0FMTF9SRUFMTFlfVVNFRF9SRUdJU1RFUik6IExpa2V3aXNlLgoJCShFUElMT0dVRV9VU0VTKTogRGVmaW5lLgoJCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogTmV3IGZ1bmN0aW9uLgoJCShUQVJHRVRfRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBVc2UgaXQuCgkJKG92ZXJyaWRlX29wdGlvbnMpOiBBZGQgYSAnaicgcmVnaXN0ZXIgY2xhc3MuCgkJKG1pcHNfZXhwYW5kX2NhbGwpOiBIYW5kbGUgc2liY2FsbHMKCQkobWlwc19leHBhbmRfZXBpbG9ndWUpOiBIYW5kbGUgZXBpbG9ndWVzIGZvciBzaWJjYWxscy4KCQkqIGNvbmZpZy9taXBzL21pcHMubWQgKGVwaWxvZ3VlKTogQWRqdXN0IGNhbGwgdG8gbWlwc19leHBhbmRfZXBpbG9ndWUuCgkJKHNpYmNhbGxfZXBpbG9ndWUpOiBOZXcgcGF0dGVybi4KCQkoY2FsbCwgY2FsbF92YWx1ZSk6IEFkanVzdCBjYWxscyB0byBtaXBzX2V4cGFuZF9jYWxsLgoJCShzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlKTogTmV3IGV4cGFuZGVycy4KCQkoc2liY2FsbF9pbnRlcm5hbCwgc2liY2FsbF92YWx1ZV9pbnRlcm5hbCk6IE5ldyBwYXR0ZXJucy4KCQkoc2liY2FsbF92YWx1ZV9tdWx0aXBsZV9pbnRlcm5hbCk6IE5ldyBwYXR0ZXJuLgoKCTIwMDMtMDMtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChleHRlbmRlZF9taXBzMTYpOiBOZXcgYXR0cmlidXRlLgoJCShkZWZpbmVfYXR0ciBsZW5ndGgpOiBEZWZhdWx0IHRvIDggaWYgZXh0ZW5kZWRfbWlwczE2ID09IHllcy4KCQkodHJ1bmNkaXNpMik6IFNldCBleHRlbmRlZF9taXBzMTYgdG8geWVzIGZvciB0aGUgc2xsIGFsdGVybmF0aXZlLgoJCSh0cnVuY2RpaGkyLCB0cnVuY2RpcWkyLCAqZXh0ZW5kc2lkaTIpOiBMaWtld2lzZS4KCQkoY2FsbF9pbnRlcm5hbCk6IFNldCBleHRlbmRlZF9taXBzMTYgdG8geWVzIGZvciBkaXJlY3QganVtcHMuCgkJUmVtb3ZlIHJlZHVuZGFudCBtb2RlIGF0dHJpYnV0ZS4KCQkoY2FsbF92YWx1ZV9pbnRlcm5hbCwgY2FsbF92YWx1ZV9tdWx0aXBsZV9pbnRlcm5hbCk6IExpa2V3aXNlLgoJCShjYWxsX3NwbGl0KTogUmVtb3ZlIHJlZHVuZGFudCBtb2RlIGF0dHJpYnV0ZS4KCQkoY2FsbF92YWx1ZV9zcGxpdCwgY2FsbF92YWx1ZV9tdWx0aXBsZV9zcGxpdCk6IExpa2V3aXNlLgoKCQkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zeW1ib2xfaW5zbnMpOiBSZXdvcmsuICBGaXggaGFuZGxpbmcKCQlvZiB1bmFsaWduZWQgb2Zmc2V0cy4KCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3BsaXR0YWJsZV9zeW1ib2xfcCk6IEZpeCBoYW5kbGluZwoJCW9mIFNZTUJPTF9HRU5FUkFMLgoKCTIwMDMtMDMtMjIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9FWFBMSUNJVF9SRUxPQ1MpOiBBZGQgY29tbWVudGFyeS4KCQkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FibGUgLW1leHBsaWNpdC1yZWxvY3MKCQlmb3IgbWlwczE2IGNvZGUuCgoJMjAwMy0wMy0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMuaCAoQUREUkVTU19DT1NUKTogRGVmaW5lLgoKCTIwMDMtMDMtMjAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLmggKEVYVFJBX0NPTlNUUkFJTlQpOiBHaXZlIGV4aXN0aW5nIG1lYW5pbmcgb2YKCQknUicgdG8gJ1UnLiAgTWFrZSAnUicgbWVhbiBhIHNpbmdsZS1pbnN0cnVjdGlvbiBtZW1vcnkgcmVmZXJlbmNlLgoJCSogY29uZmlnL21pcHMvbWlwcy5tZDogUmVwbGFjZSAnUicgY29uc3RyYWludHMgd2l0aCAnVScuCgoJMjAwMy0wMy0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMubWQgKHRydW5jZGlzaTIpOiBBZGQgY29tbWVudGFyeS4gIFVzZSBzbGwgaW5zdGVhZAoJCW9mIGEgdHdvLWluc3RydWN0aW9uIHNlcXVlbmNlLiAgQWRkIHJlZ2lzdGVyLT5tZW1vcnkgYWx0ZXJuYXRpdmUuCgkJKHRydW5jZGloaTIsIHRydW5jZGlxaTIpOiBMaWtld2lzZS4KCQlSZXdvcmsgc2hpZnQvdHJ1bmNhdGUgaW5zdHJ1Y3Rpb25zIHNvIHRoYXQgdGhleSBvbmx5IGhhbmRsZSByaWdodAoJCXNoaWZ0cyBvZiAzMiAob3IgbW9yZSwgaW4gdGhlIGNhc2Ugb2YgYXJpdGhtZXRpYyBzaGlmdHMpLgoJCUFkZCBwYXR0ZXJucyBmb3IgdHJ1bmNhdGUvc2lnbi1leHRlbmQuCgoJMjAwMy0wMy0xMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZ3VyZS5pbiAobWlwcyotKi0qKTogQ2hlY2sgZm9yIGV4cGxpY2l0IHJlbG9jYXRpb24gc3VwcG9ydC4KCQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkyMDAzLTAzLTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1leHBsaWNpdC1yZWxvY3MKCQlhbmQgLW1uby1leHBsaWNpdC1yZWxvY3MuCgkJKE1BU0tfRVhQTElDSVRfUkVMT0NTKTogRGVmaW5lLgoJCShUQVJHRVRfRVhQTElDSVRfUkVMT0NTKTogVXNlIGl0LgoJCShtaXBzX3NwbGl0X2FkZHJlc3Nlcyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCQkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFVwZGF0ZSBjb21tZW50IGZvcgoJCW1pcHNfc3BsaXRfYWRkcmVzc2VzLiAgQ2xlYXIgTUFTS19FWFBMSUNJVF9SRUxPQ1MgZm9yIG5vbi1QSUMgbjY0LgoKCTIwMDMtMDMtMTMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb21iaW5lLmMgKGdlbl9sb3dwYXJ0X2Zvcl9jb21iaW5lKTogVHJlYXQgdGhlIGxvd3BhcnQgUG1vZGUgb2YKCQlhIENPTlNUIGFzIGlkZW50aXR5LiAgQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBnZW5fbG93cGFydF9jb21tb24uCgoJMjAwMy0wMy0xMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19sZWdpdGltaXplX3N5bWJvbCk6IEhhbmRsZSBzbWFsbCBkYXRhCgkJcmVmZXJlbmNlcyBmb3IgVEFSR0VUX0VYUExJQ0lUX1JFTE9DUy4KCQkobWlwc19yZWxvY19zdHJpbmcpOiBSZXR1cm4gIiVncF9yZWwoIiBmb3IgUkVMT0NfR1BSRUwxNiBpZgoJCSFUQVJHRVRfTUlQUzE2LgoKCTIwMDMtMDMtMTMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLm1kOiBSZXBsYWNlICdJUScgbWlwczE2IGNvbnN0cmFpbnRzIHdpdGgganVzdCAnUScuCgkJKGFkZHNpMyk6IFJlbW92ZSByZWR1bmRhbnQgY29uc3RyYWludHMuCgkJKGFkZHNpM19pbnRlcm5hbCk6IFVzZSBzZXBhcmF0ZSByZWdpc3RlciAmIGNvbnN0YW50IGFsdGVybmF0aXZlcy4KCQlVc2UgYSAnUScgY29uc3RyYWludCBhbmQgImFkZGl1IiBpbnNuIGZvciB0aGUgbGF0dGVyLgoJCShhZGRkaTNfaW50ZXJuYWxfMywgYWRkc2kzX2ludGVybmFsXzIpOiBMaWtld2lzZS4KCgkyMDAzLTAzLTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19leHBhbmRfdW5hbGlnbmVkX2xvYWQpOiBEZWNsYXJlLgoJCShtaXBzX2V4cGFuZF91bmFsaWduZWRfc3RvcmUpOiBEZWNsYXJlLgoJCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2dldF91bmFsaWduZWRfbWVtKTogTmV3IGZuLgoJCShtaXBzX2V4cGFuZF91bmFsaWduZWRfbG9hZCwgbWlwc19leHBhbmRfdW5hbGlnbmVkX3N0b3JlKTogTmV3IGZucy4KCQkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19VTFcsIFVOU1BFQ19VU1cpOiBSZW1vdmUuCgkJKFVOU1BFQ19VTEQsIFVOU1BFQ19VU0QpOiBSZW1vdmUuCgkJKFVOU1BFQ19MV0wsIFVOU1BFQ19MV1IsIFVOU1BFQ19TV0wsIFVOU1BFQ19TV1IpOiBOZXcuCgkJKFVOU1BFQ19MREwsIFVOU1BFQ19MRFIsIFVOU1BFQ19TREwsIFVOU1BFQ19TRFIpOiBOZXcuCgkJKGV4dHYsIGV4dHp2KTogVXNlIG1pcHNfZXhwYW5kX3VuYWxpZ25lZF9sb2FkLgoJCShpbnN2KTogVXNlIG1pcHNfZXhwYW5kX3VuYWxpZ25lZF9zdG9yZS4gIFVzZSBhIHJlZ19vcl8wX29wZXJhbmQKCQlwcmVkaWNhdGUgZm9yIG9wZXJhbmQgMy4KCQkobW92c2lfdWx3LCBtb3ZzaV91c3cpOiBSZXBsYWNlIHdpdGguLi4KCQkobW92X2x3bCwgbW92X2x3ciwgbW92X3N3bCwgbW92ZV9zd3IpOiAuLi50aGVzZSBuZXcgaW5zbnMuCgkJKG1vdmRpX3VsZCwgbW92ZGlfdXNkKTogTGlrZXdpc2UgcmVwbGFjZSB3aXRoLi4uCgkJKG1vdl9sZGwsIG1vdl9sZHIsIG1vdl9zZGwsIG1vdmVfc2RyKTogLi4udGhlc2UgaW5zbnMuCgoJMjAwMy0wMi0yNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfZ2xvYmFsX3BpY19jb25zdGFudF9wKTogRGVjbGFyZS4KCQkqIGNvbmZpZy9taXBzL21pcHMuaCAoTEVBX1JFR1MpOiBOZXcgcmVnaXN0ZXIgY2xhc3MuCgkJKFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTKTogQWRkIGVudHJpZXMgZm9yIGl0LgoJCShHUl9SRUdfQ0xBU1NfUCk6IEluY2x1ZGUgTEVBX1JFR1MuCgkJKERBTkdFUk9VU19GT1JfTEEyNV9QKTogTmV3IG1hY3JvLgoJCShFWFRSQV9DT05TVFJBSU5UKTogQWRkICFEQU5HRVJPVVNfRk9SX0xBMjVfUCB0byBSJ3MgY29uZGl0aW9uLgoJCUFkZCBhIFQgY29uc3RyYWludCBmb3IgdGhlIERBTkdFUk9VU19GT1JfTEEyNV9QIGNhc2UuCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmVnbm9fdG9fY2xhc3MpOiBDaGFuZ2UgR1JfUkVHUwoJCWVudHJpZXMgdG8gTEVBX1JFR1MuCgkJKG1pcHNfZ2xvYmFsX3BpY19jb25zdGFudF9wKTogTmV3IGZ1bmN0aW9uLgoJCShvdmVycmlkZV9vcHRpb25zKTogQWRkICdlJyByZWdpc3RlciBjb25zdHJhaW50LgoJCShtaXBzX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBSZXR1cm4gTEVBX1JFR1Mgd2hlbiByZWxvYWRpbmcKCQlhIGRhbmdlcm91cyBjb25zdGFudCBpbnRvIGEgY2xhc3MgY29udGFpbmluZyAkMjUuCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChtb3ZkaV9pbnRlcm5hbDIpOiBBZGQgYW4gZSA8LSBUIGFsdGVybmF0aXZlLgoJCShtb3ZzaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoKCTIwMDMtMDItMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9TUExJVF9DQUxMUyk6IE5ldyBtYWNyby4KCQkqIGNvbmZpZy9taXBzL21pcHMubWQgKGNhbGxfc3BsaXQpOiBOZXcgaW5zbi4KCQkoY2FsbF92YWx1ZV9zcGxpdCwgY2FsbF92YWx1ZV9tdWx0aXBsZV9zcGxpdCk6IE5ldyBpbnNucy4KCQkoY2FsbF9pbnRlcm5hbCk6IFR1cm4gaW50byBhIGRlZmluZV9pbnNuX2FuZF9zcGxpdC4gIFNwbGl0IHRoZQoJCWluc3RydWN0aW9uIGludG8gYSBjYWxsIGFuZCAkZ3AgbG9hZCBpZiBUQVJHRVRfU1BMSVRfQ0FMTFMuCgkJKGNhbGxfdmFsdWVfaW50ZXJuYWwsIGNhbGxfdmFsdWVfbXVsdGlwbGVfaW50ZXJuYWwpOiBMaWtld2lzZS4KCgkyMDAzLTAyLTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3JlbG9jX3N0cmluZyk6IFJldHVybiAiJWdvdCgiIGZvcgoJCVJFTE9DX0dPVF9QQUdFIGFuZCBSRUxPQ19HT1RfRElTUCBpZiAhVEFSR0VUX05FV0FCSS4KCQkobWlwc19lbmNvZGVfc2VjdGlvbl9pbmZvKTogRG9uJ3QgdGFrZSBzeW1ib2wgdmlzaWJpbGl0eSBpbnRvCgkJYWNjb3VudCBpZiBUQVJHRVRfQUJJQ0FMTFMuICBBZGQgbW9yZSBjb21tZW50YXJ5LgoJCSogY29uZmlnL21pcHMvbWlwcy5tZDogQWRkIGNvbW1lbnRhcnkgYWJvdmUgcmVsb2MgY29uc3RhbnRzLgoKCTIwMDMtMDItMTIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfbGVnaXRpbWl6ZV9jb25zdF9tb3ZlKTogTmV3LCBleHRyYWN0ZWQKCQlmcm9tIG1pcHNfbGVnaXRpbWl6ZV9tb3ZlLiAgTGVnaXRpbWl6ZSBjb25zdGFudCBwb29sIHJlZmVyZW5jZXMuCgkJKG1pcHNfbGVnaXRpbWl6ZV9tb3ZlKTogQ2FsbCBtaXBzX2xlZ2l0aW1pemVfY29uc3RfbW92ZS4gIEF0dGFjaAoJCWEgUkVHX0VRVUFMIG5vdGUgdG8gdGhlIGxhc3QgaW5zdHJ1Y3Rpb24uCgoJMjAwMy0wMi0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfc2ltcGxpZnlfZHdhcmZfYWRkcik6IERlY2xhcmUuCgkJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9FWFBMSUNJVF9SRUxPQ1MsIFRBUkdFVF9ORVdBQkkpOiBOZXcuCgkJKEFTTV9TSU1QTElGWV9EV0FSRl9BRERSKTogRGVmaW5lIHRvIG1pcHNfc2ltcGxpZnlfZHdhcmZfYWRkci4KCQkoRVhUUkFfQ09OU1RSQUlOVCk6IEFsbG93IHN5bWJvbGljIGNhbGwgYWRkcmVzc2VzIGZvciBUQVJHRVRfQUJJQ0FMTFMuCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChVTlNQRUNfSElHSCk6IE5ldyBjb25zdGFudC4KCQkoVU5TUEVDX1JFTE9DX0dQUkVMMTYpOiBSZW5hbWUgdG8uLi4KCQkoUkVMT0NfR1BSRUwxNik6IC4uLnRoaXMuCgkJKFJFTE9DX0dPVF9ISSwgUkVMT0NfR09UX0xPLCBSRUxPQ19HT1RfUEFHRSwgUkVMT0NfR09UX0RJU1ApOiBOZXcuCgkJKFJFTE9DX0NBTEwxNiwgUkVMT0NfQ0FMTF9ISSwgUkVMT0NfQ0FMTF9MTyk6IE5ldy4KCQkobWFjcm9fY2FsbHMpOiBOZXcgYXR0cmlidXRlLgoJCShsZW5ndGgpOiBVc2UgaXQgdG8gc2V0IHRoZSBkZWZhdWx0IGxlbmd0aCBvZiBjYWxscy4gIERvbid0IGFsbG93CgkJY2FsbHMgdG8gaGF2ZSBkZWxheSBzbG90cyBpZiBtYWNyb19jYWxscyBpcyAieWVzIi4KCQkobHVpc2ksIGx1aWRpKTogTmV3IHBhdHRlcm5zLgoJCShsb3dzaSwgbG93ZGkpOiBVc2UgJyVSJyB0byBwcmludCB0aGUgcmVsb2NhdGlvbi4KCQkobG93ZGlfZXh0ZW5kKTogUmVtb3ZlLgoJCShsb2FkZ3ApOiBSZW1vdmUgbW9kZSBmcm9tIG9wZXJhbmQgMC4gIFVzZSAnJTAnIGluc3RlYWQgb2YgJyVhMCcuCgkJKGNhbGxfaW50ZXJuYWwpOiBNZXJnZSBhbHRlcm5hdGl2ZXMuICBBbHdheXMgdXNlICJqYWwiLgoJCShjYWxsX3ZhbHVlX2ludGVybmFsLCBjYWxsX3ZhbHVlX211bHRpcGxlX2ludGVybmFsKTogTGlrZXdpc2UuCgkJKHJlbG9jX2dwcmVsMTYpOiBSZW1vdmUuCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZ290X2FsaWFzX3NldCk6IE5ldyB2YXJpYWJsZS4KCQkobWlwc19jbGFzc2lmeV9jb25zdGFudCk6IEhhbmRsZSB0aGUgbmV3IHJlbG9jYXRpb24gY29uc3RhbnRzLgoJCShtaXBzX2NsYXNzaWZ5X3N5bWJvbCk6IFJldmVyc2UgdGhlIHNlbnNlIG9mIFNZTUJPTF9SRUZfRkxBRyBmb3IgUElDLgoJCShtaXBzX3N5bWJvbGljX2FkZHJlc3NfcCk6IFJldHVybiBmYWxzZSBpZiBnZW5lcmF0aW5nIGV4cGxpY2l0IHJlbG9jcy4KCQlPdGhlcndpc2UgYWxsb3cgbG9jYWwgUElDIHN5bWJvbHMgdG8gaGF2ZSBhbiBvZmZzZXQuCgkJKG1pcHNfc3BsaXR0YWJsZV9zeW1ib2xfcCk6IE5ldyBmdW5jdGlvbi4KCQkobWlwc19jbGFzc2lmeV9hZGRyZXNzKTogVXNlIGl0IHRvIGNoZWNrIHdoZXRoZXIgYSBMT19TVU0gaXMgdmFsaWQuCgkJKG1pcHNfY29uc3RfaW5zbnMpOiBBbHdheXMgYWNjZXB0IEhJR0guCgkJKGNhbGxfaW5zbl9vcGVyYW5kKTogRG9uJ3QgYWNjZXB0IGdsb2JhbCBzeW1ib2xzIGlmIHVzaW5nIGV4cGxpY2l0CgkJcmVsb2NzLgoJCShtb3ZlX29wZXJhbmQpOiBEb24ndCBhY2NlcHQgSElHSCB3aGVuIGdlbmVyYXRpbmcgUElDLgoJCShtaXBzX3JlbG9jLCBtaXBzX2x1aV9yZWxvYyk6IE5ldyBmdW5jdGlvbnMuCgkJKG1pcHNfZm9yY2VfdGVtcG9yYXJ5KTogUmVtb3ZlIE1PREUgYXJndW1lbnQuICBFeHBlY3QgVkFMVUUgdG8KCQliZSBhIHZhbGlkIHJpZ2h0LWhhbmQtc2lkZSBmb3IgYSBTRVQgcGF0dGVybi4KCQkobWlwc19sb2FkX2dvdCwgbWlwc19sb2FkX2dvdDE2LCBtaXBzX2xvYWRfZ290MzIpOiBOZXcgZnVuY3Rpb25zLgoJCShtaXBzX2VtaXRfaGlnaCk6IE5ldyBmdW5jdGlvbi4KCQkobWlwc19sZWdpdGltaXplX3N5bWJvbCk6IFVzZSBtaXBzX3JlbG9jIGZvciB0aGUgbWlwczE2IGdwLXJlbGF0aXZlCgkJY2FzZS4gIFVzZSBtaXBzX3NwbGl0dGFibGVfc3ltYm9sX3AgdG8gY2hlY2sgd2hldGhlciBhIExPX1NVTQoJCWFkZHJlc3Mgc2hvdWxkIGJlIHVzZWQuICBVc2UgbWlwc19lbWl0X2hpZ2ggdG8gZ2VuZXJhdGUgdGhlCgkJaGlnaCBwYXJ0IG9mIHN1Y2ggYW4gYWRkcmVzcy4gIEFkanVzdCB0aGUgZ2xvYmFsIHN5bWJvbCArIG9mZnNldAoJCWNhc2UgdG8gbWF0Y2ggdGhlIGNoYW5nZSB0byBtaXBzX2ZvcmNlX3RlbXByb3JhcnkuCgkJKG1pcHNfbGVnaXRpbWl6ZV9tb3ZlKTogU2h1ZmZsZSBjYWxsIHRvIG1pcHNfbGVnaXRpbWl6ZV9zeW1ib2wuCgkJSWYgZ2VuZXJhdGluZyBleHBsaWNpdC1yZWxvYyBQSUMsIGxvYWQgdGhlIGFkZHJlc3Mgb2YgZ2xvYmFsCgkJc3ltYm9scyBmcm9tIHRoZSBHT1QuICBVc2UgbWlwc19lbWl0X2hpZ2ggdG8gZW1pdCB0aGUgaGlnaCBwYXJ0CgkJb2YgYW4gYWRkcmVzcy4KCQkobWlwc19zaW1wbGlmeV9kd2FyZl9hZGRyKTogTmV3IGZ1bmN0aW9uLgoJCShtaXBzX21vdmVfMXdvcmQpOiBVc2UgbHdjMSBpbnN0ZWFkIG9mIGwucyBhbmQgc3djMSBpbnN0ZWFkIG9mIHMucy4KCQkobWlwc19tb3ZlXzJ3b3Jkcyk6IExpa2V3aXNlIGxkYzEvbC5kIGFuZCBzZGMxL3MuZCBpZiBUQVJHRVRfNjRCSVQuCgkJKG1pcHNfZXhwYW5kX2NhbGwpOiBMb2FkIHRoZSBhZGRyZXNzZXMgb2YgZ2xvYmFsIGZ1bmN0aW9ucyB1c2luZwoJCSVjYWxsKiByZWxvY3MgaWYgZ2VuZXJhdGluZyBleHBsaWNpdC1yZWxvYyBQSUMuICBEb24ndCBnZW5lcmF0ZQoJCWFuIGV4Y2VwdGlvbl9yZWNlaXZlciBwYXR0ZXJuLgoJCShvdmVycmlkZV9vcHRpb25zKTogSW5pdGlhbGl6ZSBtaXBzX2dvdF9hbGlhc19zZXQuCgkJKHByaW50X3JlbG9jYXRpb24pOiBSZW1vdmUgaW4gZmF2b3Igb2YuLi4KCQkobWlwc19yZWxvY19zdHJpbmcpOiAuLi50aGlzIG5ldyBmdW5jdGlvbi4KCQkocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAnJVInLiAgVXNlIG1pcHNfcmVsb2Nfc3RyaW5nLgoJCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBVc2UgcHJpbnRfb3BlcmFuZCB0byBwcmludCB0aGUgc3ltYm9saWMKCQlwYXJ0IG9mIGEgTE9fU1VNIGFkZHJlc3MuCgkJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogVXNlIC5jcHJlc3RvcmUsIHJldmVydGluZyBsYXN0IHBhdGNoLgoJCShtaXBzX2VuY29kZV9zZWN0aW9uX2luZm8pOiBGYWN0b3Igb3V0IERFQ0xfUlRMIGFjY2Vzc2VzLiAgUmV2ZXJzZQoJCXNlbnNlIG9mIFNZTUJPTF9SRUZfRkxBRyBmb3IgUElDLCB1c2luZyBiaW5kc19sb2NhbF9wIHRvIGNoZWNrCgkJZm9yIGxvY2FsIHN5bWJvbHMuCgoJMjAwMy0wMi0wMiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NpZ25fZXh0ZW5kKTogUmVtb3ZlLgoJCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaDogRGl0dG8uCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChtb3ZkaV9pbnRlcm5hbDJfZXh0ZW5kKTogUmVtb3ZlLgoJCShleHRlbmRzaWRpMik6IEZpeCBtb2RlIG9mIGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MuCgoJMjAwMy0wMS0yNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy5tZDogUmV3cml0ZSB6ZXJvX2V4dGVuZCogYW5kIGV4dGVuZCoKCQlwYXR0ZXJucy4gVXNlIGV4cGxpY2l0IGluc3RydWN0aW9ucyBhbmQgc3BsaXQgYWZ0ZXIgcmVsb2FkCgkJZm9yIHJlZ2lzdGVyIGV4dGVuc2lvbnMuCgkJKGFzaGxzaTNfaW50ZXJuYWwxX2V4dGVuZCk6IE5ldyBjb21iaW5lciBwYXR0ZXJuIGZvcgoJCXNoaWZ0IGFuZCBleHRlbmQgY29tYmluYXRpb25zLgoJCSogY29uZmlnL21pcHMvbWlwcy5oOiBDaGFuZ2UgUG1vZGUgYmFjayB0byBwdHJfbW9kZQoJCWZvciBwZXJmb3JtYW5jZSBlbmhhbmNlbWVudC4KCQkqIGNvbWJpbmUuYyAoZXhwYW5kX2NvbXBvdW5kX29wZXJhdGlvbik6IE1ha2Ugc3VyZQoJCXRoYXQgemVyb19leHRlbmQgb3BlcmF0aW9uIGlzIHByb2ZpdGFibGUuCgoJMjAwMy0wMS0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMuaCAoVFJBTVBPTElORV9URU1QTEFURSk6IE1ha2Ugc2l6ZSBvZiBzdG9yZWQKCQlhZGRyZXNzZXMgZGVwZW5kIG9uIHB0cl9tb2RlIHJhdGhlciB0aGFuIFBtb2RlLgoJCShUUkFNUE9MSU5FX1NJWkUsIFRSQU1QT0xJTkVfQUxJR05NRU5UKTogVXBkYXRlIGFjb29yZGluZ2x5LgoJCShJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBSZXdvcmsgdG8gaGFuZGxlIFBtb2RlICE9IHB0cl9tb2RlLgoJCShDQVNFX1ZFQ1RPUl9NT0RFKTogVXNlIHB0cl9tb2RlIGZvciAhVEFSR0VUX01JUFMxNi4KCQkoQVNNX09VVFBVVF9BRERSX1ZFQ19FTFQpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkJKiBjb25maWcvbWlwcy9taXBzLm1kICh0YWJsZWp1bXApOiBMaWtld2lzZS4gIFJlbW92ZSBQbW9kZQoJCWNvbmRpdGlvbiBmb3Igc2VsZWN0aW5nIGNwYWRkc2kgb3IgY3BhZGRkaTogdXNlIGNwYWRkIGluc3RlYWQuCgkJKHRhYmxlanVtcF9pbnRlcm5hbDEpOiBSZW1vdmUgY29uZGl0aW9uLgoJCSh0YWJsZWp1bXBfaW50ZXJuYWwyKTogQ2hhbmdlIGNvbmRpdGlvbiB0byBUQVJHRVRfNjRCSVQuCgkJKGNwYWRkc2kpOiBSZW5hbWUgdG8uLi4KCQkoY3BhZGQpOiAuLi50aGlzLgoJCShjcGFkZGRpKTogUmVtb3ZlLgoKCTIwMDMtMDEtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzMTZfY29uc3RhbnRfYWZ0ZXJfZnVuY3Rpb25fcCwKCQltaXBzX2FkZHJlc3NfY29zdCwgbWlwc19jaGVja19zcGxpdCwgZG91YmxlX21lbW9yeV9vcGVyYW5kLAoJCW1pcHMxNl9ncF9vZmZzZXQsIG1pcHMxNl9ncF9vZmZzZXRfcCwgbWlwczE2X2NvbnN0YW50LAoJCXBpY19hZGRyZXNzX25lZWRzX3NjcmF0Y2gsIHN5bWJvbGljX29wZXJhbmQpOiBSZW1vdmUgZGVjbGFyYXRpb25zLgoJCShtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogUmV0dXJuIGJvb2wuCgkJKG1pcHNfYWRkcmVzc19pbnNucywgbWlwc19mZXRjaF9pbnNucywgbWlwc19jb25zdF9pbnNucywKCQltaXBzX2xlZ2l0aW1pemVfYWRkcmVzcywgbWlwc19sZWdpdGltaXplX21vdmUsCgkJbWlwc19leHBhbmRfY2FsbCk6IERlY2xhcmUuCgkJKG1pcHNfcmV0dXJuX2FkZHIpOiBNb3ZlIG91dHNpZGUgI2lmZGVmIFJUWF9DT0RFLgoKCQkqIGNvbmZpZy9taXBzL21pcHMuaCAoQUJJX0hBU182NEJJVF9TWU1CT0xTKTogTmV3IG1hY3JvLgoJCShQSUNfRk5fQUREUl9SRUcpOiBOZXcgcmVnX2NsYXNzLgoJCShSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyk6IEFkZCBjb3JyZXNwb25kaW5nIGVudHJpZXMuCgkJKEdSX1JFR19DTEFTU19QKTogVHJ1ZSBmb3IgUElDX0ZOX0FERFJfUkVHLgoJCShTTUFMTF9PUEVSQU5ELCBTTUFMTF9PUEVSQU5EX1VOU0lHTkVELCBMVUlfT1BFUkFORCwKCQlDT05TVF9ISUdIX1BBUlQsIENPTlNUX0xPV19QQVJULCBMVUlfSU5UKTogTmV3IG1hY3Jvcy4KCQkoU01BTExfSU5ULCBTTUFMTF9JTlRfVU5TSUdORUQsIENPTlNUX09LX0ZPUl9MRVRURVJfUCk6IFVzZSBuZXcgbWFjcm9zLgoJCShFWFRSQV9DT05TVFJBSU5UUyk6IEdpdmUgbmV3IG1lYW5pbmdzIHRvIFEsIFIgYW5kIFMuCgkJKENPTlNUQU5UX0FERFJFU1NfUCk6IFVzZSBtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wLgoJCShMRUdJVElNQVRFX1BJQ19PUEVSQU5EKTogVW5kZWZpbmUuCgkJKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IFVzZSBtaXBzX2NvbnN0X2luc25zLgoJCShMRUdJVElNSVpFX0FERFJFU1MpOiBVc2UgbWlwc19sZWdpdGltaXplX2FkZHJlc3MuCgkJKENPTlNUQU5UX0FGVEVSX0ZVTkNUSU9OX1ApOiBSZW1vdmUgZGVmaW5pdGlvbiBpbiAjaWYgMCBibG9jay4KCQkoRlVOQ1RJT05fTU9ERSk6IENoYW5nZSB0byBTSW1vZGUuCgkJKENPTlNUX0NPU1RTKTogVXNlIG1pcHNfY29uc3RfaW5zbnMgdG8gY2FsY3VsYXRlIHRoZSBjb3N0IG9mCgkJbW9zdCBjb25zdGFudHMuICBUcmVhdCBjb25zdF9hcnRpaF9vcGVyYW5kcyBzcGVjaWFsbHkgaWYgdGhleQoJCW9jY3VyIGluIGEgUExVUyBvciBNSU5VUy4KCQkoQ09OU1RBTlRfUE9PTF9DT1NUKTogTmV3IG1hY3JvLgoJCShSVFhfQ09TVFMpOiBVc2UgbWlwc19hZGRyZXNzX2luc25zIGZvciBNRU1zLCB3aXRoIGEgYmFzZSBjb3N0IG9mIDIuCgkJQWRkIExPX1NVTSBoYW5kbGluZy4KCQkoQUREUkVTU19DT1NUKTogVW5kZWZpbmUuCgkJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBzeW1ib2xpY19vcGVyYW5kIGFuZCBjb25zdF9hcml0aF9vcGVyYW5kLgoJCUFkZCBDT05TVCB0byB0aGUgbGlzdCBvZiBjb2RlcyBmb3IgYXJpdGhfb3BlcmFuZC4gIEFkZCBMQUJFTF9SRUYKCQl0byBjYWxsX2luc25fb3BlcmFuZCBhbmQgcmVtb3ZlIENPTlNUX0lOVC4KCgkJKiBjb25maWcvbWlwcy9taXBzLmM6IEluY2x1ZGUgaW50ZWdyYXRlLmguCgkJKFNJTkdMRV9XT1JEX01PREVfUCk6IE5ldyBtYWNyby4KCQkobWlwc19jb25zdGFudF90eXBlLCBtaXBzX3N5bWJvbF90eXBlLCBtaXBzX2FkZHJlc3NfdHlwZSk6IE5ldyBlbnVtcy4KCQkobWlwc19jb25zdGFudF9pbmZvLCBtaXBzX2FkZHJlc3NfaW5mbyk6IE5ldyBzdHJ1Y3RzLgoJCShtaXBzX3JlZ25vX3RvX2NsYXNzKTogTWFwICQyNSB0byBQSUNfRk5fQUREUl9SRUcuCgkJKG1pcHNfY2xhc3NpZnlfY29uc3RhbnQsIG1pcHNfY2xhc3NpZnlfc3ltYm9sLAoJCW1pcHNfdmFsaWRfYmFzZV9yZWdpc3Rlcl9wLCBtaXBzX3N5bWJvbGljX2FkZHJlc3NfcCwKCQltaXBzX2NsYXNzaWZ5X2FkZHJlc3MsIG1pcHNfc3ltYm9sX2luc25zLAoJCW1pcHMxNl91bmV4dGVuZGVkX3JlZmVyZW5jZV9wLCBtaXBzX2FkZHJlc3NfaW5zbnMsIG1pcHNfY29uc3RfaW5zbnMsCgkJbWlwc19mZXRjaF9pbnNucywgbWlwc19mb3JjZV90ZW1wb3JhcnksIG1pcHNfYWRkX29mZnNldCwKCQltaXBzX2xlZ2l0aW1pemVfc3ltYm9sLCBtaXBzX2xlZ2l0aW1pemVfYWRkcmVzcywgbWlwc19sZWdpdGltaXplX21vdmUsCgkJbWlwc19wcmludF9yZWxvY2F0aW9uKTogTmV3IGZ1bmN0aW9ucy4KCQkoY29uc3RfYXJpdGhfb3BlcmFuZCk6IE5ldyBvcGVyYW5kIHByZWRpY2F0ZS4KCQkoYXJpdGhfb3BlcmFuZCk6IFVzZSBpdC4KCQkobWlwc19jb25zdF9kb3VibGVfb2ssIG1pcHMxNl9zaW1wbGVfbWVtb3J5X29wZXJhbmQsCgkJc2ltcGxlX21lbW9yeV9vcGVyYW5kLCBkb3VibGVfbWVtb3J5X29wZXJhbmQsIG1pcHNfY2hlY2tfc3BsaXQsCgkJbWlwc19hZGRyZXNzX2Nvc3QsIHBpY19hZGRyZXNzX25lZWRzX3NjcmF0Y2gsIG1pcHMxNl9ncF9vZmZzZXQsCgkJbWlwczE2X2dwX29mZnNldF9wLCBtaXBzMTZfb3V0cHV0X2dwX29mZnNldCwKCQltaXBzMTZfY29uc3RhbnRfYWZ0ZXJfZnVuY3Rpb25fcCwgbWlwczE2X2NvbnN0YW50KTogUmVtb3ZlLgoJCShjYWxsX2luc25fb3BlcmFuZCk6IEJlIG1vcmUgZnVzc3kgYWJvdXQgc3ltYm9saWMgY29uc3RhbnRzLgoJCVVzZSByZWdpc3Rlcl9vcGVyYW5kLgoJCShtb3ZlX29wZXJhbmQpOiBVc2UgbWlwc19zeW1ib2xpY19hZGRyZXNzX3AgdG8gY2hlY2sgc3ltYm9saWMKCQlvcGVyYW5kcyBhbmQgZ2VuZXJhbF9vcGVyYW5kIHRvIGNoZWNrIHRoZSByZXN0LgoJCShzeW1ib2xpY19vcGVyYW5kKTogVXNlIG1pcHNfY2xhc3NpZnlfY29uc3RhbnQuCgkJKG1pcHNfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBVc2UgbWlwc19jbGFzc2lmeV9hZGRyZXNzLgoJCShtaXBzX21vdmVfMXdvcmQpOiBDb21iaW5lIGhhbmRsaW5nIG9mIHN5bWJvbGljIGFkZHJlc3Nlcy4KCQlSZW1vdmUgc3BlY2lhbCB0cmVhdG1lbnQgb2YgZ3AtcmVsYXRpdmUgbG9hZHMgZm9yIFRBUkdFVF9NSVBTMTYuCgkJKG1vdmVfbW92ZV8yd29yZHMpOiBMaWtld2lzZS4gIEFzc3VtZSBhZGRyZXNzZXMgYXJlIG9mZnNldHRhYmxlCgkJaWYgdGhleSBuZWVkIHRvIHJlZmVyIHRvIG1vcmUgdGhhbiBvbmUgd29yZC4gIEFkZCBISUdIIGhhbmRsaW5nLgoJCShtaXBzX3Jlc3RvcmVfZ3ApOiBVc2UgcHRyX21vZGUgZm9yIHRoZSBHUCBzYXZlIHNsb3QuCgkJKG1pcHNfZXhwYW5kX2NhbGwpOiBOZXcgZnVuY3Rpb24sIGNvbWJpbmluZyB0aGUgb2xkIG1pcHMubWQKCQljYWxsIGFuZCBjYWxsX2ludGVybmFsIGRlZmluZV9leHBhbmRzLiAgSWYgdGhlIGFkZHJlc3MgaXNuJ3QKCQlhIGNhbGxfaW5zbl9vcGVyYW5kLCBmb3JjZSBpdCBpbnRvIGEgcmVnaXN0ZXIuICBGb3IgU1ZSNCBQSUMsCgkJZW1pdCBhbiBleGNlcHRpb25fcmVjZWl2ZXIgaW5zdHJ1Y3Rpb24gYWZ0ZXIgdGhlIGNhbGwuCgkJKG92ZXJyaWRlX29wdGlvbnMpOiBPbmx5IG92ZXJyaWRlIGZsYWdfcGljIGZvciBUQVJHRVRfQUJJQ0FMTFMKCQlpZiBpdCBpcyBjdXJyZW50bHkgemVyby4gIEFsbG93IG1pcHNfc3BsaXRfYWRkcmVzc2VzIHdoZW4KCQlQbW9kZSA9PSBESW1vZGUgdG9vLCBleGNlcHQgd2hlbiBBQklfSEFTXzY0QklUX1NZTUJPTFMuCgkJQWRkIG5ldyByZWdpc3RlciBjbGFzcyBsZXR0ZXIsICdjJy4KCQkocHJpbnRfb3BlcmFuZCk6IFVzZSBtaXBzX2NsYXNzaWZ5X2NvbnN0YW50IGZvciBjb25zdGFudCBvcGVyYW5kcy4KCQkocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogVXNlIG1pcHNfY2xhc3NpZnlfYWRkcmVzcy4KCQkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBEb24ndCB1c2UgLmNwcmVzdG9yZS4KCQkobWlwc19leHBhbmRfZXBpbG9ndWUpOiBGb3IgVEFSR0VUX01JUFMxNiwgb25seSBhZGp1c3QgdGhlIHN0YWNrCgkJdmlhIHRoZSBmcmFtZSBwb2ludGVyIGlmIGN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfZWhfcmV0dXJuLgoJCShtaXBzX2VuY29kZV9zZWN0aW9uX2luZm8pOiBGb3IgVEFSR0VUX0FCSUNBTExTLCB1c2UgU1lNQk9MX1JFRl9GTEFHCgkJdG8gbWFyayB3aGV0aGVyIGEgc3ltYm9sIGlzIGxvY2FsIG9yIGdsb2JhbC4KCQkoYnVpbGRfbWlwczE2X2NhbGxfc3R1Yik6IEV4cGVjdCB0aGUgYWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24gcmF0aGVyCgkJdGhhbiBhIE1FTSByZWZlcmVuY2UgdG8gaXQuICBVcGRhdGUgY2FsbCBnZW5lcmF0aW9uIHNlcXVlbmNlcy4KCQkobWlwczE2X29wdGltaXplX2dwKTogUmVtb3ZlIFBtb2RlIGNoZWNrcy4gIFRlbXBvcmFyaWx5IGRpc2FibGUKCQlzbWFsbC1kYXRhIGFkanVzdG1lbnRzLgoKCQkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFJlbW92ZSAnUicvJ20nIG1lbW9yeSBkaXN0aW5jdGlvbi4gIFVzZSBkZWZhdWx0CgkJbGVuZ3RoIGZvciBsb2FkcyBhbmQgc3RvcmVzLgoJCShVTlNQRUNfQ1BBREQsIFVOU1BFQ19SRUxPQ19HUFJFTDE2KTogTmV3IGNvbnN0YW50cy4KCQkoZGVmaW5lX2F0dHIgdHlwZSk6IEFkZCBjb25zdCBhbmQgcHJlZmV0Y2guCgkJKGRlZmluZV9hdHRyIGxlbmd0aCk6IFVzZSBtaXBzX2NvbnN0X2luc25zIGZvciBjb25zdCBpbnN0cnVjdGlvbnMuCgkJVXNlIG1pcHNfZmV0Y2hfaW5zbnMgZm9yIGxvYWQgYW5kIHN0b3JlIGluc3RydWN0aW9ucy4KCQkoZGVmaW5lX2F0dHIgc2luZ2xlX2luc24pOiBOZXcuCgkJKGRlZmluZV9hdHRyIGNhbl9kZWxheSk6IFVzZSBpdC4KCQkoZGVmaW5lX2F0dHIgYWJpY2FsbHMpOiBSZW1vdmUuCgkJKGRlZmluZV9kZWxheSk6IFVzZSBjYW5fZGVsYXkuICBBbHdheXMgYWxsb3cgY2FsbHMgdG8gaGF2ZSBkZWxheSBzbG90cy4KCQkoYWRkc2kzX2ludGVybmFsXzIpOiBBZGQgJ1EnIGNvbnN0cmFpbnQuCgkJKG1vdnNpX3VsdywgbW92c2lfdXN3LCBtb3ZkaV91bGQsIG1vdmRpX3VzZCk6IFNldCBsZW5ndGggdG8gOC4KCQkoaGlnaCk6IFJlbW92ZS4KCQkobG93c2kpOiBSZW5hbWVkIGZyb20gbG93LgoJCShsb3dkaSk6IE5ldyBwYXR0ZXJuLgoJCShtb3ZkaSwgbW92c2kpOiBVc2UgbWlwc19sZWdpdGltaXplX21vdmUuICBSZW1vdmUgZGVmaW5lX3NwbGl0LgoJCShsd3hjMSwgbGR4YzEsIHN3eGMxLCBzZHhjMSk6IFNldCBsZW5ndGggdG8gNC4KCQkobG9hZGdwKTogQ2hhbmdlIG9wZXJhbmQgMCB0byBhbiBpbW1lZGlhdGVfb3BlcmFuZC4KCQkodGFibGVqdW1wKTogVXNlIHRoZSBzYW1lIHBhdHRlcm5zIGZvciBTVlI0IFBJQyBidXQgZW1pdCBhIGNwYWRkCgkJYmVmb3JlaGFuZC4KCQkoY3BhZGRzaSwgY3BhZGRkaSk6IE5ldyBwYXR0ZXJucy4KCQkodGFibGVqdW1wX2ludGVybmFsMywgdGFibGVqdW1wX2ludGVybmFsNCk6IFJlbW92ZSBkZWZpbmVfZXhwYW5kcwoJCWFuZCBhc3NvY2lhdGVkIGRlZmluZV9zcGxpdHMuCgkJKGNhbGwsIGNhbGxfdmFsdWUpOiBVc2UgbWlwc19leHBhbmRfY2FsbC4KCQkoY2FsbF9pbnRlcm5hbCk6IE5ldywgcmVwbGFjaW5nIGFsbCBleGlzdGluZyBjYWxsX2ludGVybmFsKiBpbnNucy4KCQkoY2FsbF92YWx1ZV9pbnRlcm5hbCk6IExpa2V3aXNlIGNhbGxfdmFsdWVfaW50ZXJuYWwqLgoJCShjYWxsX3ZhbHVlX211bHRpcGxlX2ludGVybmFsKTogTGlrZXdpc2UgY2FsbF92YWx1ZV9tdWx0aXBsZV9pbnRlcm5hbCouCgkJKHVudHlwZWRfY2FsbCk6IFJlbW92ZSBpZiAob3BlcmFuZHNbMF0pIG1hZ2ljLgoJCShwcmVmZXRjaF9zaV9hZGRyZXNzLCBwcmVmZXRjaF9zaSk6IENoYW5nZSB0eXBlIHRvICJwcmVmZXRjaCIuCgkJKHByZWZldGNoX2RpX2FkZHJlc3MsIHByZWZldGNoX2RpKTogTGlrZXdpc2UuCgkJKGxlYXNpLCBsZWFkaSk6IFJlbW92ZS4KCQkocmVsb2NfZ3ByZWwxNik6IE5ldy4KCgkJKiBjb25maWcvbWlwcy81NDAwLm1kIChpcl92cjU0X2hpbG8pOiBJbmNsdWRlIGNvbnN0IHR5cGUuCgkJKiBjb25maWcvbWlwcy81NTAwLm1kIChpcl92cjU1X2hpbG8pOiBMaWtld2lzZS4KCQkqIGNvbmZpZy9taXBzL3NyNzFrLm1kIChpcl9zcjcwX2hpbG8pOiBMaWtld2lzZS4KCgkyMDAzLTAxLTA4ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcuZ2NjIChtaXBzaXNhMzIqKTogQ2hhbmdlIEFCSV9NRUFCSSB0byBBQklfRUFCSS4KCQkqIGNvbmZpZy9taXBzL2VsZi5oIChTVEFSVEZJTEVfU1BFQyk6IFJlbW92ZSBBQklfTUVBQkkgcmVmZXJlbmNlcyBhbmQKCQljb25maWd1cmUgY2hlY2sgZm9yIGxpYmdsb3NzLgoJCSogY29uZmlnL21pcHMvZWxmNjQuaDogRGl0dG8uCgkJKiBjb25maWcvbWlwcy9taXBzLmM6IFJlbW92ZSBBQklfTUVBQkkuCgkJKiBjb25maWcvbWlwcy9taXBzLmg6IERpdHRvLgoKCTIwMDItMTEtMDUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJRml4IG1lcmdlIGZhbGxvdXQuCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChtdWxfYWNjX3NpKTogUmVhcHBseSAyMDAyLTEwLTE2IGNoYW5nZS4KCQkobXVsZGkzX2ludGVybmFsKTogUmVtb3ZlIG91dGRhdGVkIGNvbW1lbnQuCgkJKCptdWxzX2RpLCAqdW11bHNfZGkpOiBGaXggY29tbWVudCBhbmQgNjQtYml0bmVzcy4KCQkoKnNtc2FjX2RpLCAqdW1zYWNfZGkpOiBMaWtld2lzZS4gIFJlZm9ybWF0LgoJCSh1bXVsc2kzX2hpZ2hwYXJ0KTogTWlub3IgZm9ybWF0dGluZyB0d2Vha3MuCgkJKHVtdWxzaTNfaGlnaHBhcnRfaW50ZXJuYWwpOiBVc2Ugb25seSBpZiAhSVNBX0hBU19NVUxISS4gIFJlbW92ZQoJCXJlZHVuZGFudCBzY3JhdGNoIG9wZXJhbmQuICBNaW5vciBmb3JtYXR0aW5nIHR3ZWFrLgoJCSh1bXVsc2kzX2hpZ2hwYXJ0X211bGhpX2ludGVybmFsKTogVXNlIGZvciAhVEFSR0VUXzY0QklUIGFzIHdlbGwuCgkJKHVtdWxzaTNfaGlnaHBhcnRfbmVnX211bGhpX2ludGVybmFsKTogTGlrZXdpc2UuICBGaXggYXNtIHRlbXBsYXRlLgoJCShzbXVsc2kzX2hpZ2hwYXJ0KTogQXMgZm9yIHRoZSB1bnNpZ25lZCB2ZXJzaW9uLgoJCShzbXVsc2kzX2hpZ2hwYXJ0X2ludGVybmFsKTogTGlrZXdpc2UuCgkJKHNtdWxzaTNfaGlnaHBhcnRfbXVsaGlfaW50ZXJuYWwpOiBMaWtld2lzZS4KCQkoc211bHNpM19oaWdocGFydF9uZWdfbXVsaGlfaW50ZXJuYWwpOiBMaWtld2lzZS4KCQkoc211bGRpM19oaWdocGFydCwgdW11bGRpM19oaWdocGFydCk6IE1pbm9yIGZvcm1hdHRpbmcgdHdlYWtzLgoJCSgqc211bF9hY2NfZGkpOiBSZW1vdmUgZHVwbGljYXRlZCBwYXR0ZXJuLgoJCSgqdW11bF9hY2NfZGksICpzbXVsX2FjY19kaSk6IFJlYXBwbHkgMjAwMi0xMC0xNiBjaGFuZ2UuCgkJKGFuZGRpMykgW3VubmFtZWQgbWlwczE2IHBhdHRlcm5dOiBSZW1vdmUgcmVpbnRyb2R1Y2VkIGxlbmd0aC4KCQkoemVyb19leHRlbmRzaWRpMl9pbnRlcm5hbDIpOiBSZW1vdmUgbmV3LCBidXQgY29tbWVudGVkLW91dCBwYXR0ZXJuLgoKCTIwMDItMTAtMjIgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfcmV0dXJuX2FkZHIpOiBOZXcuCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmV0dXJuX2FkZHIpOiBOZXcuCgkJKG1vdmRpX29wZXJhbmQpOiBSZW1vdmUuCgkJKHNlX3JlZ2lzdGVyX29wZXJhbmQpOiBEaXR0by4KCQkoc2VfcmVnX29yXzBfb3BlcmFuZCk6IERpdHRvLgoJCShzZV91bnNfYXJpdGhfb3BlcmFuZCk6IERpdHRvLgoJCShzZV9hcml0aF9vcGVyYW5kKTogRGl0dG8uCgkJKHNlX25vbm1lbW9yeV9vcGVyYW5kKTogRGl0dG8uCgkJKGV4dGVuZF9vcGVyYXRvcik6IERpdHRvLgoJCShoaWdocGFydF9zaGlmdF9vcGVyYXRvcik6IERpdHRvLgoJCShtaXBzX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogUmVtb3ZlIHJldHVybiBhZGRyZXNzIHBvaW50ZXIKCQllbGltaW5hdGlvbi4KCQkobWlwc19yZWdfbmFtZXMpOiBSZW1vdmUgJHJhLgoJCShtaXBzX3JlZ25vX3RvX2NsYXNzKTogRGl0dG8uCgkJKiBjb25maWcvbWlwcy9taXBzLmggKFBPSU5URVJfU0laRSk6IERlZmluZSBiYXNlZCBvbiBUQVJHRVRfTE9ORzY0CgkJYW5kIFRBUkdFVF82NEJJVC4KCQkoUE9JTlRFUl9CT1VOREFSWSk6IFJlbW92ZS4KCQkoUE9JTlRFUlNfRVhURU5EX1VOU0lHTkVEKTogRGVmaW5lIHRvIDAuCgkJKFBST01PVEVfTU9ERSk6IFByb21vdGUgdG8gUG1vZGUuCgkJKFNIT1JUX0lNTUVESUFURVNfU0lHTl9FWFRFTkQpOiBEZWZpbmUuCgkJKFBtb2RlKTogRGVmaW5lIHRvIFRBUkdFVF82NEJJVC4KCQkoRlVOQ1RJT05fTU9ERSk6IERlZmluZSBhcyBQbW9kZS4KCQkobWlwc19hcmdzKTogUmVtb3ZlIGRlbGV0ZWQgZnVuY3Rpb25zLgoJCShTSVpFX1RZUEUpOiBEZXBlbmQgb24gUE9JTlRFUl9TSVpFLgoJCShQVFJESUZGX1RZUEUpOiBEaXR0by4KCQkoRklYRURfUkVHSVNURVJTKTogRml4IGV4dHJhIHJlZ2lzdGVycy4KCQkoQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IERpdHRvLgoJCShDQUxMX1JFQUxMWV9VU0VEX1JFR0lTVEVSUyk6IERpdHRvLgoJCShSQVBfUkVHX05VTSk6IFJlbW92ZS4KCQkoUkVUVVJOX0FERFJFU1NfUE9JTlRFUl9SRUdOVU0pOiBEaXR0by4KCQkoUkVUVVJOX0FERFJfUlRYKTogRGVmaW5lIHRvIG1pcHNfcmV0dXJuX2FkZHIuCgkJKEVMSU1JTkFCTEVfUkVHUyk6IFJlbW92ZSBSRVRVUk5fQUREUkVTU19QT0lOVEVSX1JFR05VTS4KCQkoQ0FOX0VMSU1JTkFURSk6IERpdHRvLgoJCSogY29uZmlnL21pcHMvbWlwcy5tZDogRm9yIERJbW9kZSBwYXR0ZXJucywgdGFrZSBpbnRvIGFjY291bnQKCQlkZWxldGlvbnMgYWJvdmUuIFNwbGl0IG11bHNpZGkgcGF0dGVybnMgaW50byBzaWduX2V4dGVuZCBhbmQKCQl6ZXJvX2V4dGVuZC4KCgkyMDAyLTEwLTE2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgkJICAgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19NQUNDKTogVHJ1ZSBmb3Igbm9ybWFsLW1vZGUgdnI0MTIwIGNvZGUuCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChtdWxzaTNfbXVsdDMpOiBBZGQgYSBkZWZpbmVfcGVlcGhvbGUyIHRvCgkJbW9wIHVwIHVubmVjZXNzYXJseSBtb3ZlcyB0aHJvdWdoIExPLgoJCSgqbXVsX2FjY19zaSk6IFJlbW92ZSB2cjU0MDAgYW5kIHZyNTUwMCBoYW5kbGluZyBmcm9tIGhlcmUuCgkJKCptYWNjKTogTmV3IHBhdHRlcm4gZm9yIElTQV9IQVNfTUFDQy4gIEFkZCBkZWZpbmVfcGVlcGhvbGUycyB0bwoJCWNoYW5nZSBtdGxvL21hY2Mgc2VxdWVuY2VzIGludG8gbXVsL2FkZCBzZXF1ZW5jZXMgd2hlbiBhIHRocmVlLQoJCWFkZHJlc3MgbXVsIGlzIGF2YWlsYWJsZS4KCQkoKm1hY2MyKTogTmV3IHBhdHRlcm4uICBBZGQgYSBkZWZpbmVfcGVlcGhvbGUyIHRvIGdlbmVyYXRlIGl0LgoJCSgqbXVsX3N1Yl9zaSk6IEZpeCBjb250cmFpbnQgZm9yIG9wZXJhbmQgNS4KCQkoKm11bHMpOiBVc2UgaW4gMzItYml0IGNvZGUgYXMgd2VsbC4KCQkoKm1zYWMpOiBMaWtld2lzZS4gIFVzZSBtc3ViIGluc3RlYWQgb2YgbXNhYyBpbiB2cjU1MDAgY29kZQoJCWlmIHRoZSBkZXN0aW5hdGlvbiBpcyBMTy4gIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lX3NwbGl0LgoJCSgqbXVsc19kaSk6IFVzZSBvbmx5IGluIDMyLWJpdCBjb2RlLiAgQWRqdXN0IHJ0bCBhY2NvcmRpbmdseS4KCQkoKm1zYWNfZGkpOiBMaWtld2lzZS4gIEZpeCBmb3JtYXR0aW5nLgoJCShzbXVsc2kzX2hpZ2hwYXJ0LCB1bXVsc2kzX2hpZ2hwYXJ0KTogVXNlIG11bGhpIGluIDMyLWJpdCBjb2RlIHRvby4KCQkoKnhtdWxzaTNfaGlnaHBhcnRfaW50ZXJuYWwpOiBVc2Ugb25seSBpZiAhSVNBX0hBU19NVUxISS4KCQkoKnhtdWxzaTNfaGlnaHBhcnRfbXVsaGkpOiBVc2UgZXZlbiBpZiAhVEFSR0VUXzY0QklULgoJCSgqeG11bHNpM19uZWdfaGlnaHBhcnRfbXVsaGkpOiBMaWtld2lzZS4KCQkoKm11bF9hY2NfNjRiaXRfZGkpOiBSZW1vdmUuCgkJKCptdWxfYWNjX2RpKTogVXNlIG9ubHkgaW4gMzItYml0IGNvZGUuICBIYW5kbGUgSVNBX0hBU19NQUNDIGFzIHdlbGwuCgoJMjAwMi0xMC0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL3ZyLmggKERSSVZFUl9TRUxGX1NQRUNTKTogRGVmaW5lLgoJCSogY29uZmlnL21pcHMvdC12ciAoTVVMVElMSUJfT1BUSU9OUyk6IFJlbW92ZSBtbG9uZzMyLgoJCShNVUxUSUxJQl9ESVJOQU1FUyk6IFJlbW92ZSBsb25nMzIuCgkJKE1VTFRJTElCX0VYQ0VQVElPTlMpOiBEb24ndCBidWlsZCAtbWFiaT0zMiAtbWdwMzIgbXVsdGlsaWJzLgoJCShNVUxUSUxJQl9SRURVTkRBTlRfRElSUyk6IFJlbW92ZS4KCgkyMDAyLTEwLTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJCSogZG9jL3RtLnRleGkgKERSSVZFUl9TRUxGX1NQRUNTKTogRG9jdW1lbnQuCgkJKiBnY2MuYyAoZHJpdmVyX3NlbGZfc3BlY3MpOiBOZXcgdmFyaWFibGUuCgkJKGRvX3NlbGZfc3BlYyk6IE5ldyBmdW5jdGlvbi4KCQkobWFpbik6IFVzZSBpdCB0byBwcm9jZXNzIGRyaXZlcl9zZWxmX3NwZWNzLgoKCTIwMDItMTAtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChvbmVfY21wbGRpMik6IFVzZSBvbmx5IGlmIFRBUkdFVF82NEJJVC4KCQlSZW1vdmUgREltb2RlIGRlZmluZV9zcGxpdCBmb3IgIVRBUkdFVF82NEJJVC4KCQkoYW5kZGkzKTogUmVtb3ZlICFUQVJHRVRfNjRCSVQgc3VwcG9ydCBmcm9tIGhlcmUgYXMgd2VsbC4KCQlDaGFuZ2Ugb3BlcmFuZCAyJ3MgcHJlZGljYXRlIHRvIHNlX3Vuc19hcml0aF9vcGVyYW5kLgoJCUFkZCBjb25zdGFudCBhbHRlcm5hdGl2ZXMgdG8gZGVmaW5lX2luc24uCgkJKGlvcmRpMywgeG9yZGkzLCAqbm9yZGkzKTogTGlrZXdpc2UuCgkJKGFuZGRpM19pbnRlcm5hbDEsIHhvcmRpM19pbW1lZCk6IFJlbW92ZS4KCgkyMDAyLTEwLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy5oIChQUk9DRVNTT1JfUjQxMjEpOiBSZW5hbWUgdG8gUFJPQ0VTU09SX1I0MTIwLgoJCShUQVJHRVRfTUlQUzQxMjEpOiBSZW5hbWUgdG8gVEFSR0VUX01JUFM0MTIwLgoJCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NwdV9pbmZvKTogUmVuYW1lIHZyNDEyMSB0byB2cjQxMjAuCgkJKiBjb25maWcvbWlwcy9taXBzLm1kOiBBcHBseSBzYW1lIHJlbmFtaW5nIGhlcmUuCgoJMjAwMi0xMC0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9taXBzL21pcHMuYyAoUFJPQ0VTU09SX1I0MzIwLCBUQVJHRVRfTUlQUzQzMjApOiBSZW1vdmUuCgkJKEdFTkVSQVRFX01VTFQzX1NJKTogUmVtb3ZlIHVzZSBvZiBUQVJHRVRfTUlQUzQzMjAuCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY3B1X2luZm8pOiBSZW1vdmUgdnI0MzIwIGVudHJ5LgoJCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZGVmaW5lX2F0dHIgY3B1KTogUmVtb3ZlIHI0MzIwLgoJCVJlbW92ZSB2cjQzMjAgc2NoZWR1bGVyIGFuZCB1c2VzIG9mIFRBUkdFVF9NSVBTNDMyMC4KCgkyMDAyLTEwLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzMTZfc3RyaW5ncyk6IE5ldyB2YXJpYWJsZS4KCQkobWlwc19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBDbGVhciB0aGUgU1lNQk9MX1JFRl9GTEFHIG9mIGV2ZXJ5CgkJc3ltYm9sIGluIG1pcHMxNl9zdHJpbmdzLiAgRnJlZSB0aGUgbGlzdC4KCQkobWlwc19lbmNvZGVfc2VjdGlvbl9pbmZvKTogS2VlcCB0cmFjayBvZiBsb2NhbCBzdHJpbmdzLgoKCTIwMDItMTAtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLm1kIChidW5nZSwgYmx0Z3QsIGJ1bmd0KTogTmV3IGRlZmluZV9leHBhbmRzLgoJCShzb3JkZXJlZF9kZiwgc29yZGVyZWRfc2YpOiBSZW1vdmUuCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKGdldF9mbG9hdF9jb21wYXJlX2NvZGVzKTogTmV3IGZuLgoJCShnZW5faW50X3JlbGF0aW9uYWwsIGdlbl9jb25kaXRpb25hbF9tb3ZlKTogVXNlIGl0LgoKCTIwMDItMTAtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2VtaXRfZmNjX3JlbG9hZCk6IERlY2xhcmUuCgkJKiBjb25maWcvbWlwcy9taXBzLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBmY2NfcmVnaXN0ZXJfb3BlcmFuZC4KCQkqIGNvbmZpZy9taXBzL21pcHMuYyAoZmNjX3JlZ2lzdGVyX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkJKG1pcHNfZW1pdF9mY2NfcmVsb2FkKTogTmV3IGZ1bmN0aW9uLCBleHRyYWN0ZWQgZnJvbSByZWxvYWRfaW5jYy4KCQkob3ZlcnJpZGVfb3B0aW9ucyk6IEFsbG93IFRGbW9kZSB2YWx1ZXMgaW4gZmxvYXQgcmVnaXN0ZXJzCgkJaWYgSVNBX0hBU184Q0MuCgkJKiBjbmZpZy9taXBzL21pcHMubWQgKHJlbG9hZF9pbmNjKTogQ2hhbmdlIGRlc3RpbmF0aW9uIHByZWRpYXRlCgkJdG8gZmNjX3JlZ2lzdGVyX29wZXJhbmQuICBSZW1vdmUgbWlzbGVhZGluZyBzb3VyY2UgY29uc3RyYWludC4KCQlVc2UgbWlwc19lbWl0X2ZjY19yZWxvYWQuCgkJKHJlbG9hZF9vdXRjYyk6IER1cGxpY2F0ZSByZWxvYWRfaW5jYy4KCgoyMDAzLTA0LTMwICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRJTl9DT05TVEFOVF9QKTogTWFyayBhcyBjb25zdGFudC4KCjIwMDMtMDQtMzAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAoaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBCYWNrIG91dCBsYXN0IGNoYW5nZSwgaXQncwoJdW5uZWNlc3NhcnkuCgoyMDAzLTA0LTMwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBnZ2MtcGFnZS5jIChUUkVFX0VYUF9TSVpFKTogRGVmaW5lLgoJKGV4dHJhX29yZGVyX3NpemVfdGFibGUpOiBOZXcgZW50cnkgZm9yIGV4cHIgdHJlZXMgd2l0aAoJdHdvIG9wZXJhbmRzLgoKMjAwMy0wNC0zMCAgR2FicmllbCBEb3MgUmVpcyA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtY29tbW9uLmMgKGlmX2VsdCk6IFVzZSBsb2NhdGlvbl90IGluIGxpZXUgb2YgImZpbGUsIGxpbmUiIHBhaXIuCgkoY19leHBhbmRfc3RhcnRfY29uZCk6IEFkanVzdC4KCShjX2V4cGFuZF9lbmRfY29uZCk6IERvbid0IHVzZSB3YXJuaW5nX3dpdGhfZmlsZV9hbmRfZmlsZS4KCShzaGFkb3dfd2FybmluZyk6IExpa2V3aXNlLgoKMjAwMy0wNC0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoREVDTF9QT0lOVEVSX0RFUFRIKTogUmVtb3ZlLgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBSZW1vdmUgcG9pbnRlcl9kZXB0aC4KCjIwMDMtMDQtMzAgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBSZW1vdmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbGZfc3RyaXBfbmFtZV9lbmNvZGluZyk6IFJlbW92ZS4KCShyczYwMDBfeGNvZmZfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZS4KCShjdXJyZW50X2ZpbGVfZnVuY3Rpb25fb3BlcmFuZCk6IFVzZSBTWU1CT0xfUkVGX0ZMQUdTOyBmaXggbGF0ZW50IGJ1Zy4KCShyczYwMDBfb3V0cHV0X21pX3RodW5rKTogUmVtb3ZlIGRlYWQgY29kZTsgdXNlIFNZTUJPTF9SRUZfRkxBR1MuCgkoc21hbGxfZGF0YV9vcGVyYW5kLCByczYwMDBfZW1pdF9tb3ZlLCByczYwMDBfZWxmX2luX3NtYWxsX2RhdGFfcCwpOgoJVXNlIFNZTUJPTF9SRUZfRkxBR1MuCgkocnM2MDAwX2VsZl9lbmNvZGVfc2VjdGlvbl9pbmZvKTogQ2FsbCBkZWZhdWx0X2VuY29kZV9zZWN0aW9uX2luZm8gZm9yCglnZW5lcmljIGZsYWdzLCB1c2UgU1lNQk9MX1JFRl9GTEFHUzsgY29kZSBjbGVhbnVwcy4KCSogc3lzdjQuaCAoVEFSR0VUX1NUUklQX05BTUVfRU5DT0RJTkcsIEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBSZW1vdmUuCgkoU1lNQk9MX0ZMQUdfU01BTExfVjQsIFNZTUJPTF9SRUZfU01BTExfVjRfUCk6IE5ldy4KCSogeGNvZmYuaCAoVEFSR0VUX0VOQ09ERV9TRUNUSU9OX0lORk8pOiBSZW1vdmUuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IFJlbW92ZSBzZXR0aW5nIG9mIFNZTUJPTF9SRUZfRkxBRy4KCjIwMDMtMDQtMzAgIEdhYnJpZWwgRG9zIFJlaXMgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9wb2ludGVyKTogVXNlIEhPU1RfUFRSX1BSSU5URi4KCjIwMDMtMDQtMzAgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKE90aGVyIEJ1aWx0aW5zKTogRW5jbG9zZSBtdWx0aXBsZSB3b3JkIGRhdGEKCXR5cGUgaW4gYnJhY2VzIGZvciBAZGVmdHlwZWZuLgoKMjAwMy0wNC0zMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKG1vZGVfZm9yX3NpemVfdHJlZSk6IFVzZSBCTEttb2RlIGlmIFNJWkUgb3ZlcmZsb3dzLgoKCSogZG9jL2luc3RhbGwudGV4aSAoLS1lbmFibGUtdGhyZWFkcyk6IERvY3VtZW50ICJnbmF0IiBvcHRpb24uCgoyMDAzLTA0LTMwICBHYWJyaWVsIERvcyBSZWlzIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogZGlhZ25vc3RpYy5oIChvdXRwdXRfZm9ybWF0dGVkX3NjYWxhcik6IFR3ZWFrLgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9sb25nX2RlY2ltYWwpOiBMaWtld2lzZS4KCShvdXRwdXRfdW5zaWduZWRfZGVjaW1hbCk6IExpa2V3aXNlLgoJKG91dHB1dF9sb25nX3Vuc2lnbmVkX2RlY2ltYWwpOiBMaWtld2lzZS4KCShvdXRwdXRfb2N0YWwpOiBMaWtld2lzZS4KCShvdXRwdXRfbG9uZ19vY3RhbCk6IExpa2V3aXNlLgoJKG91dHB1dF9oZXhhZGVjaW1hbCk6IExpa2V3aXNlLgoJKG91dHB1dF9sb25nX2hleGFkZWNpbWFsKTogTGlrZXdpc2UuCgkob3V0cHV0X3BvaW50ZXIpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X2Zvcm1hdCk6IFVzZSBpdC4gIFJlY29nbml6ZSAiJXAiIGZvcm1hdCBzcGVjaWZpZXIuCgoyMDAzLTA0LTMwICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IFBvc3Rwb25lIGluc24gaW4gZmV3ZXIgY2FzZXMuCgoyMDAzLTA0LTI5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvaG9zdC1kYXJ3aW4uYyAoc2Vndl9oYW5kbGVyKTogV2hlbiAtZEggaXMgdXNlZCwKCWNhbGwgYWJvcnQoKSBhZnRlciBydW5uaW5nIG91dCBvZiBzdGFjayBzcGFjZS4KCgkqIGMtdHlwZWNrLmMgKGZ1bmN0aW9uX3R5cGVzX2NvbXBhdGlibGVfcCk6IElnbm9yZSBpbmNvbXBhdGlibGUKCSd2b2xhdGlsZScgcXVhbGlmaWVycyBvbiBhIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgaW4gR05VIG1vZGUuCgoyMDAzLTA0LTI5ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfbG9hZCk6IER1bXAgcGFyYWxsZWxzIG9mIHNpbWQgdHlwZXMgdG8KCW1lbW9yeS4KCjIwMDMtMDQtMjkgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogZ2VuYXV0b21hdGEuYyAoYWRkX3ZlY3QpOiBDaGVjayB1bmRlZmluZWQgdmFsdWUgZm9yIHJhbmdlIHR5cGUKCXRvby4KCjIwMDMtMDQtMjkgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogIE1vcmUgZ2VuZXJhbCB0ZXN0IGZvciBjbXAgLS1pZ25vcmUtaW5pdGlhbC4KCSogY29uZmlndXJlOiAgUmVnZW5lcmF0ZS4KCjIwMDMtMDQtMjkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChtb2RlX2Zvcl9zaXplX3RyZWUpOiBVc2UgdHJlZV9sb3dfY3N0LgoJKGxheW91dF9kZWNsLCBwbGFjZV9maWVsZCk6IExpa2V3aXNlLgoJQWxzbyBtYWtlIG1pbm9yIHR5cGUgYW5kIHdoaXRlc3BhY2UgY2hhbmdlcy4KCgkqIHRyZWUuYyAoc2F2ZV9leHByKTogRG9uJ3QgZm9sZCBhIENPTVBPTkVOVF9SRUYuCgoyMDAzLTA0LTI5ICBPbGl2aWVyIEhhaW5xdWUgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogV2hlbiBtb2RlcyBvZiB0YXJnZXQgYW5kIHZhbHJlZyBtYXRjaCwJZm9yY2UKCXNpYmNhbGwgZmFpbHVyZSB3aGVuIHRhcmdldCBpcyBhIE1FTS4KCjIwMDMtMDQtMjkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAoaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBEb24ndCBzdXBwb3J0IGlubGluaW5nCglmdW5jdGlvbnMgdXNpbmcgdmFyYXJncy4KCgkqIGRvYy9pbnZva2UudGV4aSAoT3ZlcmFsbCBPcHRpb25zKTogTWVudGlvbiAteCBvYmplY3RpdmUtYy1oZWFkZXIuCgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2NhbGxfZnJhbWVfaW5mbyk6IE5vIG5lZWQgdG8gb3V0cHV0IEVICgl1bndpbmQgaW5mb3JtYXRpb24gaWYgYWxsX3Rocm93ZXJzX2FyZV9zaWJjYWxscy4KCgkqIGMtc2VtYW50aWNzLmMgKGV4cGFuZF91bnJlYWNoYWJsZV9zdG10KTogUmV0dXJuIGEgdHJlZS4KCShleHBhbmRfc3RtdCk6IFVwZGF0ZSBmb3IgY2hhbmdlIHRvIGV4cGFuZF91bnJlYWNoYWJsZV9zdG10LgoJKGV4cGFuZF91bnJlYWNoYWJsZV9pZl9zdG10KTogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5pbiAocXVpY2tzdHJhcCk6IFBhc3MgQk9PVF9DRkxBR1MgdG8gc3VibWFrZS4KCjIwMDMtMDQtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTAzMzYKCSoganVtcC5jIChuZXZlcl9yZWFjaGVkX3dhcm5pbmcpOiBSZWFsbHkgc3RvcCBsb29raW5nIGlmIHdlIHJlYWNoCgl0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4KCjIwMDMtMDQtMjkgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2VsZi5oIChTSVpFX1RZUEUsIFBUUkRJRkZfVFlQRSwgVVNFUl9MQUJFTF9QUkVGSVgpOgoJUmVtb3ZlIHJlZHVuZGFudCBtYWNyb3MuCgkoV0NIQVJfVFlQRSwgV0NIQVJfVFlQRV9TSVpFKTogQ2hhbmdlIHRvICJzaG9ydCB1bnNpZ25lZCBpbnQiLgoJKExPQ0FMX0xBQkVMX1BSRUZJWCk6IERlZmluZSB1bmNvbmRpdGlvbmFsbHkuCgkoTk9fRE9UX0lOX0xBQkVMKTogQ2xhcmlmeSBjb21tZW50LgoJKiBjb25maWcveHRlbnNhL2xpbnV4LmggKFdDSEFSX1RZUEUsIFdDSEFSX1RZUEVfU0laRSk6IEFkZCBleHBsaWNpdAoJZGVmaW5pdGlvbiB0byAibG9uZyBpbnQiLgoKMjAwMy0wNC0yOSAgQWxleGFuZGVyIEthYmFldiAgPGthbkBGcmVlQlNELk9SRz4KCglib290c3RyYXAvMTA0NTIKCSogZ2VuZ3R5cGUteWFjYy55OiBJbXByb3ZlIHBvcnRhYmlsaXR5LgoKMjAwMy0wNC0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6IEluc3RhbGwgb2Jzb2xldGUgdGFyZ2V0IGxpc3QgZm9yIEdDQyAzLjMuCgkqIGRvYy9pbnN0YWxsLnRleGk6IE1lbnRpb24gaW4gc3BlY2lmaWMtdGFyZ2V0IGluc3RydWN0aW9ucwoJdGhhdCBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zIGFyZSBkZXByZWNhdGVkLgoKMjAwMy0wNC0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaDogRGVsZXRlIG5vLWNoZWNraW5nIGRlZmluaXRpb24gb2YgQ1NUX09SX0NPTlNUUlVDVE9SX0NIRUNLLgoKMjAwMy0wNC0yOSAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjLXByYWdtYS5jIChtYXliZV9hcHBseV9yZW5hbWluZ19wcmFnbWEpOiBGaXggdHlwby4KCSogZ2NjLmMgKGRpc3BsYXlfaGVscCk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAoZl9vcHRpb25zKTogTGlrZXdpc2UuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9JTkxJTkVfU0NPUEUpOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguaCAoVEFSR0VUX1NXSVRDSEVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oIChUQVJHRVRfU1dJVENIRVMpOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5oIChUQVJHRVRfU1dJVENIRVMpOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5oIChUQVJHRVRfU1dJVENIRVMpOiBMaWtld2lzZS4KCjIwMDMtMDQtMjkgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogdmFyYXNtLmMgKGRlZmF1bHRfYXNzZW1ibGVfdmlzaWJpbGl0eSk6IFVzZSBhc3NlbWJsZV9uYW1lLgoKMjAwMy0wNC0yOSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2Q2NC5oIChMSU5LX1NQRUMpOiBNaXJyb3IgRnJlZUJTRCBsaW5rZXIuCgkqIGNvbmZpZy9yczYwMDAvZnJlZWJzZC5oIChMSU5LX1NITElCX1NQRUMpOiBOZXcgbWFjcm8uCgkoU0laRV9UWVBFKTogTmV3IG1hY3JvLgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLWFvdXQuaCAoTk9fUFJPRklMRV9DT1VOVEVSUyk6IE5ldyBtYWNyby4KCShTRVRfQVNNX09QKTogTmV3IG1hY3JvLgoJKEhBTkRMRV9TWVNWX1BSQUdNQSk6IE5ldyBtYWNyby4KCShBU01fV0VBS0VOX0xBQkVMKTogTmV3IG1hY3JvLgoKMjAwMy0wNC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTAxODAKCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogQ2FsbCBwdXNoX3NyY2xvYyB3aGVuCgllbmNvdW50ZXJpbmcgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04uICBIb25vciB3YXJuX2lubGluZS4KCjIwMDMtMDQtMjggIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogZ2RiaW5pdC5pbjogVXBkYXRlIHRvIHJlZmxlY3QgbmV3IGlkZW50aWZpZXIgc3RydWN0dXJlLgoKMjAwMy0wNC0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoVFJFRV9DU1RfUlRMLCBDU1RfT1JfQ09OU1RSVUNUT1JfQ0hFQ0spOiBEZWxldGUuCgkoc3RydWN0IHRyZWVfaW50X2NzdCwgc3RydWN0IHRyZWVfcmVhbF9jc3QsIHN0cnVjdCB0cmVlX3N0cmluZywKCXN0cnVjdCB0cmVlX2NvbXBsZXgsIHN0cnVjdCB0cmVlX3ZlY3Rvcik6IFJlbW92ZSBSVEwgZmllbGQuCgkoQ09OU1RSVUNUT1JfRUxUUyk6IFVzZSBlbHQgMC4KCSogdHJlZS5kZWYgKENPTlNUUlVDVE9SKTogRGVsZXRlIGZpcnN0IG9mIGl0cyB0d28gb3BlcmFuZHMuCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnRfZGVmKTogUmVtb3ZlIGVhcmx5IGV4aXQgaWYKCVRSRUVfQ1NUX1JUTCBpcyBzZXQuICBEb24ndCBzZXQgVFJFRV9DU1RfUlRMLgoJKGRlY29kZV9hZGRyX2NvbnN0KTogRG9uJ3QgbWVudGlvbiBUUkVFX0NTVF9SVEwgaW4gY29tbWVudC4KCSogdGFyZ2V0LmggKHNlbGVjdF9zZWN0aW9uKTogRG9uJ3QgbWVudGlvbiBUUkVFX0NTVF9SVEwgaW4gY29tbWVudC4KCSogZG9jL3RtLnRleGkgKGVuY29kZV9zZWN0aW9uX2luZm8pOiBEb24ndCB0YWxrIGFib3V0IFRSRUVfQ1NUX1JUTC4KCjIwMDMtMDQtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogV2hlbiBwcm90b3R5cGUgd2l0aCBhc21zcGVjIGlzIGZvdW5kCglmb3IgYnVpbHQtaW4sIGFkanVzdCBidWlsdF9pbl9kZWNscyBhcyB3ZWxsIGFzIGV4cHIuYyBkZWNscy4KCSogZXhwci5jIChpbml0X2Jsb2NrX21vdmVfZm4sIGluaXRfYmxvY2tfY2xlYXJfZm4pOiBOZXcgZnVuY3Rpb25zLgoJKGVtaXRfYmxvY2tfbW92ZV9saWJjYWxsX2ZuLCBjbGVhcl9zdG9yYWdlX2xpYmNhbGxfZm4pOiBVc2UgaXQuCgkqIGV4cHIuYyAoaW5pdF9ibG9ja19tb3ZlX2ZuLCBpbml0X2Jsb2NrX2NsZWFyX2ZuKTogTmV3IHByb3RvdHlwZXMuCgoyMDAzLTA0LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHByaW50X29wZXJhbmQpOiBBZGQgJ3MnIHRvIHNpZ24tZXh0ZW5kLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGNvbnN0X211bHNpZGkzX3Y4cGx1cyk6IEZpeCBtb2RlIG9mCglpbnRlZ3JhbCBjb25zdGFudCBtdWx0IG9wZXJhbmQuCgkoY29uc3RfbXVsc2lkaTNfc3AzMiwgY29uc3RfbXVsc2lkaTNfc3A2NCk6IExpa2V3aXNlLgoJKGNvbnN0X3NtdWxzaTNfaGlnaHBhcnRfdjhwbHVzKTogTGlrZXdpc2UuCgkoY29uc3Rfc211bHNpM19oaWdocGFydCk6IExpa2V3aXNlLgoJKGNvbnN0X3VtdWxzaWRpM19zcDMyKTogTGlrZXdpc2U7IHNpZ24tZXh0ZW5kIGl0IGluIHRoZSBvdXRwdXQuCgkoY29uc3RfdW11bHNpZGkzX3NwNjQsIGNvbnN0X3VtdWxzaWRpM192OHBsdXMpOiBMaWtld2lzZS4KCShjb25zdF91bXVsc2kzX2hpZ2hwYXJ0X3Y4cGx1cyk6IExpa2V3aXNlLgoJKGNvbnN0X3VtdWxzaTNfaGlnaHBhcnQpOiBMaWtld2lzZS4KCjIwMDMtMDQtMjggIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWcvaTM4Ni94ODYtNjQuaCAoTk9fUFJPRklMRV9DT1VOVEVSUywgSEFWRV9BU19EV0FSRjJfREVCVUdfTElORSk6CglEZWZpbmUgYXMgMS4KCjIwMDMtMDQtMjggIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKGJ1aWx0aW5fZGVmaW5lKTogQWRkIF9fYW1kNjQgYW5kIF9fYW1kNjRfXy4KCjIwMDMtMDQtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9CQ09QWSwgQlVJTFRfSU5fTUVNTU9WRSk6IE5ldy4KCSogYnVpbHRpbi10eXBlcy5kZWYgKEJUX0ZOX1ZPSURfQ09OU1RfUFRSX1BUUl9TSVpFKTogTmV3LgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1tb3ZlLCBleHBhbmRfYnVpbHRpbl9iY29weSk6IE5ldwoJZnVuY3Rpb25zLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0JDT1BZIGFuZCBCVUlMVF9JTl9NRU1NT1ZFLgoKMjAwMy0wNC0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBSZW1vdmUgZGVmaW5pdGlvbi4KCjIwMDMtMDQtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByIDxDT01QTEVYX0NTVCwgU1RSSU5HX0NTVD4pOiBBbHdheXMgY2FsbAoJb3V0cHV0X2NvbnN0YW50X2RlZiwgdXNlIGl0cyByZXN1bHQgaW5zdGVhZCBvZiBUUkVFX0NTVF9SVEwgKGV4cCkuCglDYW4gYXNzdW1lIGl0IGhhcyB0aGUgZm9ybSAobWVtIChzeW1ib2xfcmVmICIuTEN4eHgiKSkuCgkoZXhwYW5kX2V4cHIgPENPTVBPTkVOVF9SRUY+KTogQ2FuIGFsd2F5cyBqdXN0IGV4dHJhY3QgdGhlCglyZWxldmFudCBmaWVsZCBvZiBhIENPTlNUUlVDVE9SLgoJKGV4cGFuZF9leHByIDxBUlJBWV9SRUYsIENPTVBPTkVOVF9SRUYsIEJJVF9GSUVMRF9SRUYsCglBUlJBWV9SQU5HRV9SRUY+KTogTWFrZSBjb250cm9sIGZsb3cgZXhwbGljaXQuCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnRfZGVmKTogQ2FuIGxvb2sgYXQgVFJFRV9DU1RfUlRMIG9mCglhbiBJTlRFR0VSX0NTVC4KCjIwMDMtMDQtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiByZWxvYWQxLmMgKHJlZ19zZXRfbHVpZCk6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDMtMDQtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAoY29uc3Rfc3RyX2h0YWJfaGFzaCwgY29uc3Rfc3RyX2h0YWJfZXEsIFNUUkhBU0gsCglzdHJ1Y3QgZGVmZXJyZWRfc3RyaW5nLCBjb25zdF9zdHJfaHRhYik6IEtpbGwuCgkobl9kZWZlcnJlZF9zdHJpbmdzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShidWlsZF9jb25zdGFudF9kZXNjKTogU2V0IFNZTUJPTF9SRUZfREVDTCBvZiB0aGUgbmV3CglzeW1ib2xfcmVmIHRvIHBvaW50IHRvIHRoZSBjb25zdGFudC4KCShvdXRwdXRfY29uc3RhbnRfZGVmKTogV2hlbiBhIGRlZmVycmVkIHN0cmluZyBpcyBmb3JjZWQgb3V0LAoJanVzdCBjbGVhciBTVFJJTkdfUE9PTF9BRERSRVNTX1AgYW5kIGRlY3JlbWVudCBuX2RlZmVycmVkX3N0cmluZ3MuCgkobWFya19jb25zdGFudCk6IExpa2V3aXNlLgoJKG1heWJlX291dHB1dF9jb25zdGFudF9kZWZfY29udGVudHMpOiBXaGVuIGRlZmVycmluZyBhIHN0cmluZwoJY29uc3RhbnQsIGp1c3Qgc2V0IFNUUklOR19QT09MX0FERFJFU1NfUCBhbmQgaW5jcmVtZW50CgluX2RlZmVycmVkX3N0cmluZ3MuCgkobWFya19jb25zdGFudF9wb29sKTogQ2hlY2sgbl9kZWZlcnJlZF9zdHJpbmdzLCBub3QgdGhlIHNpemUKCW9mIGNvbnN0X3N0cl9odGFiLgoJKGluaXRfdmFyYXNtX29uY2UpOiBObyBuZWVkIHRvIGNyZWF0ZSBjb25zdF9zdHJfaHRhYi4KCgkqIHJ0bC5kZWYsIHJ0bC5oLCBkb2MvcnRsLnRleGk6IERvY3VtZW50IHBvc3NpYmlsaXR5IHRoYXQKCVNZTUJPTF9SRUZfREVDTCBwb2ludHMgdG8gYSBjb25zdGFudC4KCjIwMDMtMDQtMjYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50X2RlZik6IFNwbGl0IG91dCB0d28gbmV3IHN0YXRpYwoJZnVuY3Rpb25zLCBidWlsZF9jb25zdGFudF9kZXNjIGFuZCBtYXliZV9vdXRwdXRfY29uc3RhbnRfZGVmX2NvbnRlbnRzLgoJUmVzdHJ1Y3R1cmUgZm9yIGNvbXByZWhlbnNpYmlsaXR5LiAgRG9uJ3QgY2FsbAoJb3V0cHV0X2FkZHJlc3NlZF9jb25zdGFudHMuICBUcmVhdCBkZWZzdHIgYmVpbmcgbm9uLU5VTEwgZm9yCglTVFJJTkdfUE9PTF9BRERSRVNTX1AgY29uc3RhbnRzIGFzIGFuIGludmFyaWFudC4KCShzdHJ1Y3QgZGVmZXJyZWRfc3RyaW5nKTogUmVtb3ZlIGxhYmVsbm8gZmllbGQuCgkob3V0cHV0X2NvbnN0YW50X2RlZl9jb250ZW50cyk6IEtpbGwgbGFiZWxubyBhcmd1bWVudC4gQ2FsbAoJb3V0cHV0X2FkZHJlc3NlZF9jb25zdGFudHMgaGVyZS4gIFVzZSBBU01fT1VUUFVUX0xBQkVMLAlub3QKCWFzbV9vdXQuaW50ZXJuYWxfbGFiZWwuCgkobWFya19jb25zdGFudCk6IFVwZGF0ZSBjYWxsIHRvCW91dHB1dF9jb25zdGFudF9kZWZfY29udGVudHMuCglUcmVhdCBkZWZzdHIgYmVpbmcgbm9uLU5VTEwgZm9yIFNUUklOR19QT09MX0FERFJFU1NfUAoJY29uc3RhbnRzIGFzIGFuIGludmFyaWFudC4KCjIwMDMtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9waWNfYWRkcl9jb25zdCk6IFVzZSBTWU1CT0xfUkVGX0xPQ0FMX1AuCgkoaXg4Nl9leHBhbmRfY2FsbCwgaXg4Nl9ydHhfY29uc3RzKTogTGlrZXdpc2UuCgoyMDAzLTA0LTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkb2MvbWQudGV4aSAoY21wc3RyKTogRG9jdW1lbnQgYWRkaXRpb25hbCByZXN0cmljdGlvbnMuCgoyMDAzLTA0LTI2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBmbGFncy5oICh0aW1lX3JlcG9ydCk6IFJlbW92ZS4KCSogdGltZXZhci5jICh0aW1ldmFyX2VuYWJsZSk6IE5ldy4KCShUSU1FVkFSX0VOQUJMRSk6IFJlbW92ZSwgdXNlIHRpbWV2YXJfZW5hYmxlLgoJKHRpbWV2YXJfaW5pdCk6IFJlbmFtZSBmcm9tIGluaXRfdGltZXZhci4KCSogdGltZXZhci5oICh0aW1ldmFyX2luaXQpOiBSZW5hbWUgZnJvbSBpbml0X3RpbWV2YXIuCgkqIHRvcGxldi5jICh0aW1lX3JlcG9ydCk6IE1ha2Ugc3RhdGljLgoJKGRvX2NvbXBpbGUpOiBDb25kaXRpb25hbGx5IGNhbGwgaW5pdF90aW1ldmFyIGZpcnN0LgoJKHByZXByb2Nlc3Nfb3B0aW9ucyk6IE1vdmUgc29tZSBjb2RlIHRvIGRvX2NvbXBpbGUuCgoyMDAzLTA0LTI2ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKEJpbmFyaWVzKTogTWVudGlvbiBiaW5hcmllcyBmb3IgSEMxMS9IQzEyLgoKMjAwMy0wNC0yNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogX2NwcF9sZXhfZGlyZWN0OiBSZW1vdmUgcG9pbnRsZXNzIGNvZGUuCgoyMDAzLTA0LTI2IFN0ZXBoYW5lIENhcnJleiA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEZ1bmN0aW9uIEF0dHJpYnV0ZXMpOiBEb2N1bWVudCAibmVhciIgYW5kICJmYXIiCglmb3IgNjhIQzExIGFuZCA2OEhDMTIuCgoyMDAzLTA0LTI1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9maWVsZCk6IFdoZW4gbWFraW5nIHRlbXBvcmFyeSBmb3Igc3RvcmUsIGRvbid0CgltYWtlIGl0IFRZUEVfUVVBTF9DT05TVC4KCjIwMDMtMDQtMjUgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIHRvcGxldi5jIChyZWFkX2ludGVncmFsX3BhcmFtZXRlcik6ICBVc2UgImFyZ3VtZW50IiBpbiBlcnJvcgoJbWVzc2FnZSB0byBkaXN0aW5ndWlzaCBpdCBmcm9tIGFjdHVhbCBpbnZhbGlkIG9wdGlvbnMuCgoyMDAzLTA0LTI1ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS9saW51eC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogQmFjayBvdXQgcHJldmlvdXMKCWFkZGl0aW9uIG9mIF9fUElDX18gYW5kIF9fcGljX18gbWFjcm9zLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oOiBDbGVhbiB1cCBpbmRlbnRhdGlvbi4KCjIwMDMtMDQtMjUgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2xpbnV4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBSZW1vdmUgZGVmaW5pdGlvbiBvZgoJX0dOVV9TT1VSQ0UuICBBZGQgZGVmaW5pdGlvbnMgb2YgX19QSUNfXyBhbmQgX19waWNfXy4KCShTVUJUQVJHRVRfQ1BQX1NQRUMpOiBEZWZpbmUuCgkoTElCX1NQRUMpOiBEZWxldGUuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oICh4dGVuc2FfZGVjbGFyZV9vYmplY3QpOiBEZWxldGUuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9kZWNsYXJlX29iamVjdCk6IERlbGV0ZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoQ1BQX1NQRUMsIFNVQlRBUkdFVF9DUFBfU1BFQywgRVhUUkFfU1BFQ1MpOgoJRGVmaW5lLgoJKEFTTV9PVVRQVVRfQ09NTU9OLCBBU01fT1VUUFVUX0xPQ0FMKTogRGVsZXRlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MsIEJTU19TRUNUSU9OX0FTTV9PUCk6IERlZmluZS4KCjIwMDMtMDQtMjUgIEguSi4gTHUgPGhqbEBnbnUub3JnPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogQWRkIHJtb2RlCglmb3IgcmV0dXJuIG1vZGUuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IFNldCBybW9kZSB0byBTSW1vZGUgZm9yCglJQTY0X0JVSUxUSU5fQk9PTF9DT01QQVJFX0FORF9TV0FQX1NJLAoJSUE2NF9CVUlMVElOX1ZBTF9DT01QQVJFX0FORF9TV0FQX1NJIGFuZAoJSUE2NF9CVUlMVElOX0JPT0xfQ09NUEFSRV9BTkRfU1dBUF9ESS4gU2V0IHJlbW9kZSB0byBESW1vZGUKCWZvciBJQTY0X0JVSUxUSU5fVkFMX0NPTVBBUkVfQU5EX1NXQVBfREkuCgoyMDAzLTA0LTI1ICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW4gKG1ha2VfY29tcGFyZV90YXJnZXQpOiAgVGVzdCBmb3IgR05VIGNtcCBhbmQgc2V0IHRoaXMKCXZhcmlhYmxlIGFwcHJvcHJpYXRlbHkuCgkqIE1ha2VmaWxlLmluIChjb21wYXJlLCBjb21wYXJlMywgY29tcGFyZTQsIGNvbXBhcmUtbGVhbiwgY29tcGFyZTMtbGVhbiwKCWNvbXBhcmU0LWxlYW4pOiBSZW5hbWUgYWN0dWFsIHRhcmdldHMgdG8gc2xvd2NvbXBhcmUqLiAgTmV3IGNvbXBhcmUqCgl0YXJnZXRzIGRlcGVuZCBvbiBuYW1lcyBiYXNlZCBvbiBtYWtlX2NvbXBhcmVfdGFyZ2V0LgoJKiBjb25maWd1cmU6ICBSZWdlbmVyYXRlZC4KCjIwMDMtMDQtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogQWxsb3cgaW5saW5lIGFzbQoJdG8gY2xvYmJlciBhci5wZnMgYW5kIGFyLnVuYXQuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBGb3JjZSBhbGxvYyBpbnN0cnVjdGlvbiBpZiBhci5wZnMgc2F2ZWQ7CglmaXggdGVzdCBmb3Igc3BpbGxpbmcgYXIucGZzIHRvIHRoZSBzdGFjay4KCjIwMDMtMDQtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0LzEwMzE1CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBPbmx5IGVsaWRlIHByb3BlcgoJY2hlY2tzIGR1cmluZyByZWxvYWQ7IHVzZSB2YWxpZGl6ZV9tZW0gaW5zdGVhZCBvZiBhZGp1c3RfYWRkcmVzcy4KCjIwMDMtMDQtMjYgIEJlbiBFbGxpc3RvbiAgPGJqZUB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9hZGp1c3RfY29zdCk6IENvcnJlY3QgbG9naWMgdGhhdCB0ZXN0cyB0aGUKCXJldHVybiB2YWx1ZXMgZnJvbSByZWNvZ19tZW1vaXplZCgpLgoKMjAwMy0wNC0yNCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBvcHQvODcwNQoJKiBnY3NlLmMgKHRyeV9yZXBsYWNlX3JlZyk6IE9uIGEgc3VjY2Vzc2Z1bCBzdWJzdGl0dXRpb24gb2YgYSBjb25zdGFudAoJaW50byBhIHNpbmdsZSBzZXQsIHRyeSB0byBzaW1wbGlmeSB0aGUgc291cmNlIG9mIHRoZSBzZXQuCgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogRG9uJ3QgdHJ5IHRvIG9wdGltaXplIGEgTU9ERV9DQyBzZXQgd2l0aCBhCgljb25zdGFudCBzb3VyY2UuCgoyMDAzLTA0LTI0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBsZXguYyAoY3BwX3Rva2VuX2xlbik6IFRpZ2h0ZW4gdXAuCgkoY3BwX3Rva2VuX2FzX3RleHQpOiBOZWVkIGV4dHJhIGJ5dGUgbm93LgoJKiBjcHBsaWIuYyAoZ2x1ZV9oZWFkZXJfbmFtZSk6IE5lZWQgZXh0cmEgMiBieXRlcy4KCSogY3BwbWFjcm8uYyAoY3BwX21hY3JvX2RlZmluaXRpb24pOiBOZWVkIGV4dHJhIGJ5dGUuCgoyMDAzLTA0LTI0ICBBbGV4YW5kZXIgS2FiYWV2IDxrYW5ARnJlZUJTRC5PUkc+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHVtdWxzaWRpMywgbXVsc2lkaTMpOiBBdm9pZCB1c2luZwoJY29uc3RfdW11bHNpZGkzX3NwMzIgYW5kIGNvbnN0X211bHNpZGkzX3NwMzIgb24gNjRiaXQgdGFyZ2V0cwoJd2hlcmUgdGhleSBtaWdodCBiZSBub3QgcHJlc2VudC4gVXNlIHRoZWlyIF9zcDY0IGVxdWl2YWxlbnQKCWluc3RlYWQuCgpUaHUgQXByIDI0IDIwOjQyOjEyIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoY3Z0c2kyc2RxKTogRml4IHR5cG8gaW4gcHJldmlvdXMgcGF0Y2guCgoyMDAzLTA0LTI0ICBLcmlzdGVyIFdhbGZyaWRzc29uICA8Y2F0b0BkZi5sdGguc2U+CgoJKiBjb25maWd1cmUuaW46IENoZWNrIHdoZXRoZXIgbWJzdG93Y3Mgd29ya3MuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBpbnRsLmM6IFVzZSBIQVZFX1dPUktJTkdfTUJTVE9XQ1MuCgoyMDAzLTA0LTI0ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9pbml0X2J1aWx0aW5zKTogQWRkIHNpX2Z0eXBlX3BkaV9kaV9kaQoJZm9yIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXBfZGkgZm9yIGludCByZXR1cm4gdHlwZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjRpbnRyaW4uaCAoX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcF9kaSk6CglDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gaW50LgoJKF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXApOiBMaWtld2lzZS4KClRodSBBcHIgMjQgMTY6NTU6MjYgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdidWlsZC5jIChtYWtlX2VkZ2VzKTogIERvIG5vdCB1c2UgbmV4dF9ub25ub3RlX2luc24gd2hlbgoJbG9va2luZyBmb3IgZmFsbHRocnUgZWRnZS4KCgkqIGF0aGxvbi5tZCAoYXRobG9uLWFndSwgYXRobG9uLXN0b3JlLCBhdGhsb24tZmFueSwgYXRobG9uLWZhZGRtdWwpOgoJRml4LgoJKGF0aGxvbi1sb2FkMiwgYXRobG9uLXN0b3JlMiwgYXRobG9uLWZwc2NoZWQsIGF0aGxvbi1mcGxvYWQsCglhdGhsb24tZnZlY3Rvcik6IE5ldy4KCShhdGhsb25fKik6IFJldmlzaXQgdG8gbWF0Y2ggbmV3IG9wdGltaXphdGlvbiBndWlkZS4KCSogaTM4Ni5jIChpeDg2X2FkanVzdF9jb3N0KTogIEZpeCBtZW1vcnkgb3BlcmFuZCBjb3N0cyBvbiBBdGhsb24vazgKCSogaTM4Ni5tZCAoY3Z0Pz8yPz8gcGF0dGVybnMpOiBGaXggbW9kZXMuCgkoZmlzdHAgcGF0dGVybnMpOiBTZXQgbW9kZXMuCgoJQWNjaWRlbnRhbHkgY29tbWl0ZWQgd2l0aCBteSBlYXJsaWVyIHJlbG9hZCBwYXRjaDoKCVBSIGMvMTAzMDgKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEpOiBSZWxvYWQgcGx1cyBhdCB0aGUgcGxhY2Ugb2YKCWluZGV4IHJlZ2lzdGVyLgoKMjAwMy0wNC0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglOZXcgR0NPVl9UQUdfRlVOQ1RJT04gbGF5b3V0CgkqIGNvdmVyYWdlLmMgKHN0cnVjdCBmdW5jdGlvbl9saXN0KTogUmVwbGFjZSBuYW1lIHdpdGggaWRlbnQuCgkoc3RydWN0IGNvdW50c19lbnRyeSk6IExpa2V3aXNlLgoJKGZuX2lkZW50KTogTmV3LgoJKGh0YWJfY291bnRzX2VudHJ5X2hhc2gsIGh0YWJfY291bnRzX2VudHJ5X2VxLAoJaHRhYl9jb3VudHNfZW50cnlfZGVsKTogQWRqdXN0LgoJKHJlYWRzX2NvdW50X2ZpbGUsIGdldF9jb3ZlcmFnZV9jb3VudHMsCgljb3ZlcmFnZV9iZWdpbl9vdXRwdXQsIGNvdmVyYWdlX2VuZF9mdW5jdGlvbik6IEFkanVzdC4KCShidWlsZF9mbl9pbmZvX3R5cGUsIGJ1aWxkX2ZuX2luZm9fdmFsdWUpOiBMaWtld2lzZS4KCSogZ2Nvdi1kdW1wLmMgKHRhZ19mdW5jdGlvbik6IEFkanVzdC4KCSogZ2Nvdi1pby5jIChnY292X3dyaXRlX3N0cmluZywgZ2Nvdl9yZWFkX3N0cmluZyk6IE5vdCBpbiBMSUJHQ09WLgoJKiBnY292LWlvLmggKGdjb3Zfd3JpdGVfc3RyaW5nLCBnY292X3JlYWRfc3RyaW5nKTogTm90IGluIExJQkdDT1YuCgkqIGdjb3YuYyAoc3RydWN0IGZ1bmN0aW9uX2luZm8pOiBBZGQgaWRlbnQuCgkocmVhZF9ncmFwaF9maWxlLCByZWFkX2NvdW50X2ZpbGUpOiBBZGp1c3QuCgkqIGxpYmdjb3YuYyAoZ2Nvdl9leGl0KTogQWRqdXN0LgoKMjAwMy0wNC0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBvcHQvODMwMAoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IERlbGF5IG5vX25ld19wc2V1ZG9zIHVudGlsCglhZnRlciBpbml0aWFsaXplX3VuaW5pdGlhbGl6ZWRfc3VicmVnczsgdXBkYXRlIHJlZyBpbmZvIGFzc3VtaW5nCgluZXcgcHNldWRvcyB3ZXJlIGNyZWF0ZWQuCgoyMDAzLTA0LTIzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoYy1sZXgubywgTElCQ1BQX09CSlMsIGNwcGxleC5vKTogVXBkYXRlLgoJKiBjLWxleC5jIChNVUxUSUJZVEVfQ0hBUlMpOiBSZW1vdmUgY29uZGl0aW9uYWxzLgoJKGxleF9zdHJpbmcpOiBUYWtlIGNwcF9zdHJpbmcgd2l0aCBmdWxsIHNwZWxsaW5nLgoJKGNiX2lkZW50KTogVXBkYXRlLgoJKGNfbGV4KTogVXBkYXRlIGRpYWdub3N0aWNzLgoJKiBjcHBsZXguYyAoU1BFTExfTlVNQkVSLCBTUEVMTF9TVFJJTkcpOiBDb21iaW5lIGludG8gU1BFTExfTElURVJBTC4KCShjcmVhdGVfbGl0ZXJhbCk6IE5ldy4KCShsZXhfc3RyaW5nKTogVW50ZXJtaW5hdGVkIGxpdGVyYWxzIGhhdmUgdHlwZSBDUFBfT1RIRVIuCgkoX2NwcF9sZXhfZGlyZWN0KTogVXBkYXRlIGNhbGxzIHRvIGxleF9zdHJpbmcuICBVc2UgY3JlYXRlX2xpdGVyYWwKCWZvciBDUFBfT1RIRVIuCgkoY3BwX3Rva2VuX2xlbiwgY3BwX3NwZWxsX3Rva2VuLCBjcHBfb3V0cHV0X3Rva2VuKTogU2ltcGxpZnkuCgkoX2NwcF9lcXVpdl90b2tlbnMsIGNwcF9pbnRlcnByZXRfY2hhcmNvbnN0KTogVXBkYXRlLgoJKiBjcHBsaWIuYyAocGFyc2VfaW5jbHVkZSwgZG9fbGluZSwgZG9fbGluZW1hcmtlciwKCWRlc3RyaW5naXplX2FuZF9ydW4pOiBVcGRhdGUgZm9yIHRva2VuIHN0b3JpbmcgZnVsbCBzcGVsbGluZy4KCSogY3BwbGliLmg6IFVwZGF0ZSB0b2tlbiBzcGVsbGluZyB0eXBlcy4KCSogY3BwbWFjcm8uYyAoc3RyaW5naWZ5X2FyZywgY2hlY2tfdHJhZF9zdHJpbmdpZmljYXRpb24pOgoJVXBkYXRlIGZvciB0b2tlbiBzdG9yaW5nIGZ1bGwgc3BlbGxpbmcuCgoyMDAzLTA0LTIzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZXhwYW5kX2NtcHN0cik6IERpc2FibGUgQ0xDIGxvb3AuCgoyMDAzLTA0LTIzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5oIChUQVJHRVRfT1BUSU9OUyk6IEFkZCB2YWx1ZSBmaWVsZC4KCjIwMDMtMDQtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IFJlbW92ZSBkdXBsaWNhdGUgMjAwMyBjb3B5cmlnaHQgZGF0ZS4KCjIwMDMtMDQtMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCR0NDX0RFUFMpOiBBZGQgZ2NvdiBoZWFkZXJzLgoJKGxpYmdjb3YuYSk6IERlcGVuZHMgb24gTElCR0NDX0RFUFMuCgkqIGJhc2ljLWJsb2NrLmggKHByb2ZpbGVfaW5mbyk6IE1vdmVkIGhlcmUgZnJvbSBjb3ZlcmFnZS5oLiBNYWRlCglhIHBvaW50ZXIuCgkqIGNvdmVyYWdlLmMgKHN0cnVjdCBmdW5jdGlvbl9saXN0KTogRml4ZWQgYXJyYXkgb2YgY291bnRlciB0eXBlcy4KCShzdHJ1Y3QgY291bnRzX2VudHJ5KTogS2V5ZWQgYnkgY291bnRlciB0eXBlLCBjb250YWlucyBzdW1tYXJ5LgoJKHByb2ZpbGVfaW5mbyk6IE1vdmVkIHRvIHByb2ZpbGUuYy4KCShwcmdfY3RyX21hc2ssIHByZ19uX2N0cnMsIGZuX2N0cl9tYXNrLCBmbl9uX2N0cnMpOiBOZXcgZ2xvYmFsCgl2YXJzLgoJKHByb2ZpbGVyX2xhYmVsKTogUmVtb3ZlLgoJKGN0cl9sYWJlbHMpOiBOZXcuCgkoc2V0X3B1cnBvc2UsIGxhYmVsX2Zvcl90YWcsIGJ1aWxkX2NvdW50ZXJfc2VjdGlvbl9maWVsZHMsCglidWlsZF9jb3VudGVyX3NlY3Rpb25fdmFsdWUsIGJ1aWxkX2NvdW50ZXJfc2VjdGlvbl9kYXRhX2ZpZWxkcywKCWJ1aWxkX2NvdW50ZXJfc2VjdGlvbl9kYXRhX3ZhbHVlcywgYnVpbGRfZnVuY3Rpb25faW5mb19maWVsZHMsCglidWlsZF9mdW5jdGlvbl9pbmZvX3ZhbHVlLCBnY292X2luZm9fZmllbGRzLCBnY292X2luZm9fdmFsdWUpOiBSZW1vdmUuCgkoYnVpbGRfZm5faW5mb190eXBlLCBidWlsZF9mbl9pbmZvX3ZhbHVlLCBidWlsZF9jdHJfaW5mb190eXBlLAoJYnVpbGRfY3RyX2luZm9fdmFsdWUsIGJ1aWxkX2djb3ZfaW5mbyk6IE5ldy4KCShodGFiX2NvdW50c19lbnRyeV9oYXNoLCBodGFiX2NvdW50c19lbnRyeV9lcSk6IEFkanVzdC4KCShyZWFkc19jb3VudHNfZmlsZSk6IEFkanVzdC4KCShnZXRfY292ZXJhZ2VfY291bnRzKTogVGFrZXMgY291bnRlciBudW1iZXIuIEFkZCBzdW1tYXJ5CglwYXJhbWV0ZXIuIEFkanVzdC4KCShjb3ZlcmFnZV9jb3VudGVyX3JlZik6IFRrYWVzIGNvdW50ZXIgbnVtYmVyLiBBZGp1c3QuIExhemlseQoJY3JlYXRlIGNvdW50ZXIgYXJyYXkgbGFiZWxzLgoJKGNvdmVyYWdlX2VuZF9mdW5jdGlvbik6IEFkanVzdC4KCShjcmVhdGVfY292ZXJhZ2UpOiBBZGp1c3QuCgkoZmluZF9jb3VudGVyc19zZWN0aW9uKTogUmVtb3ZlLgoJKiBjb3ZlcmFnZS5oIChNQVhfQ09VTlRFUl9TRUNUSU9OUyk6IFJlbW92ZS4KCShzdHJ1Y3Qgc2VjdGlvbl9pbmZvLCBzdHJ1Y3QgcHJvZmlsZV9pbmZvKTogUmVtb3ZlLgoJKHByb2ZpbGVfaW5mbyk6IE1vdmVkIHRvIGJhc2ljLWJsb2NrLmguCgkoY292ZXJhZ2VfY291bnRlcl9yZWYpOiBUYWtlcyBhIGNvdW50ZXIgbnVtYmVyLgoJKGdldF9jb3ZlcmFnZV9jb3VudHMpOiBUYWtlcyBhIGNvdW50ZXIgbnVtYmVyLiBBZGRlZCBzdW1tYXJ5CglwYXJhbWV0ZXIuCgkoZmluZF9jb3VudGVyc19zZWN0aW9uKTogUmVtb3ZlLgoJKiBnY292LWR1bXAuYyAodGFnX2FyY19jb3VudHMpOiBSZW5hbWUgdG8gLi4uCgkodGFnX2NvdW50ZXJzKTogLi4uIGhlcmUuIEFkanVzdC4KCSh0YWdfdGFibGUpOiBNb3ZlIHRhZ19jb3VudGVycyB0byAzcmQgZW50cnkuIFJlbW92ZQoJUFJPR1JBTV9QTEFDRUhPTERFUiBhbmQgUFJPR1JBTV9JTkNPUlJFQ1QgZW50cmllcy4KCShkdW1wX2ZpbGUpOiBDaGVjayBmb3IgY291bnRlciB0YWcgdmFsdWVzIGhlcmUuCgkodGFnX3N1bW1hcnkpOiBBZGp1c3QuCgkqIGdjb3YtaW8uYyAoZ2Nvdl93cml0ZV9zdW1tYXJ5LCBnY292X3JlYWRfc3VtbWFyeSk6IEFkanVzdC4KCSogZ2Nvdi1pby5oIChHQ09WX0xPQ0tFRCk6IE5ldy4KCShHQ09WX1RBR19BUkNfQ09VTlRTKTogUmVuYW1lIHRvIC4uLgoJKEdDT1ZfVEFHX0NPVU5UU19CQVNFKTogLi4uIGhlcmUuCgkoR0NPVl9UQUdfUExBQ0VIT0xERVJfU1VNTUFSWSwgR0NPVl9UQUdfSU5DT1JSRUNUX1NVTU1BUlkpOgoJUmVtb3ZlLgoJKEdDT1ZfQ09VTlRFUl9BUkNTLCBHQ09WX0NPVU5URVJTLCBHQ09WX05BTUVTKTogTmV3LgoJKEdDT1ZfVEFHX0ZPUl9DT1VOVEVSLCBHQ09WX0NPVU5URVJfRk9SX1RBRywKCUdDT1ZfVEFHX0lTX0NPVU5URVIpOiBOZXcuCgkoc3RydWN0IGdjb3ZfY3RyX3N1bW1hcnkpOiBOZXcuCgkoc3RydWN0IGdjb3Zfc3VtbWFyeSk6IEFkanVzdC4KCShzdHJ1Y3QgZ2Nvdl9jb3VudGVyX3NlY3Rpb24pOiBSZW1vdmUuCglzdHJ1Y3QgZ2Nvdl9jb3VudGVyX3NlY3Rpb25fZGF0YSk6IFJlbW92ZS4KCShzdHJ1Y3QgZ2Nvdl9mdW5jdGlvbl9pbmZvKTogUmVuYW1lIHRvIC4uLgoJKHN0cnVjdCBnY292X2ZuX2luZm8pOiAuLi4gaGVyZS4gQWRqdXN0LgoJKHN0cnVjdCBnY292X2N0cl9pbmZvKTogTmV3LgoJKHN0cnVjdCBnY292X2luZm8pOiBBZGp1c3QuCgkqIGdjb3YuYyAocmVhZF9jb3VudF9maWxlKTogQWRqdXN0LgoJKG91dHB1dF9saW5lcyk6IEFkanVzdC4KCSogbGliZ2Nvdi5jIChnY292X2V4aXQpOiBBZGp1c3QuCgkoX19nY292X2ZsdXNoKTogQWRqdXN0LgoJKiBta2xpYmdjYy5pbiAobGliZ2NjMl9jX2RlcCk6IEFkZCBnY292IGhlYWRlcnMuCgkqIHByZWRpY3QuYyAobWF5YmVfaG90X2JiX3AsIHByb2JhYmx5X2NvbGRfYmJfcCwKCXByb2JhYmx5X25ldmVyX2V4ZWN1dGVkX2JiX3AsIGNvbXB1dGVfZnJlcXVlbmN5X2Z1bmN0aW9uKTogQWRqdXN0Cglwcm9maWxlX2luZm8gdXNlLgoJKiBwcm9maWxlLmMgKHN0cnVjdCBjb3VudHNfZW50cnkpOiBSZW1vdmUuCgkocHJvZmlsZV9pbmZvKTogRGVmaW5lIGhlcmUuCgkoZ2V0X2V4ZWNfY291bnRzKTogQWRqdXN0IGdldF9jb3ZlcmFnZV9jb3VudHMgY2FsbC4KCShjb21wdXRlX2JyYW5jaF9wcm9iYWJsaWxpdGllcyk6IFJlbW92ZSBmaW5kX2NvdW50ZXJzX3NlY3Rpb24KCWNhbGwuCgkoZ2VuX2VkZ2VfcHJvZmlsZXIpOiBBZGp1c3QgY292ZXJhZ2VfY291bnRlcl9yZWYgY2FsbC4KCSogdHJhY2VyLmMgKHRhaWxfZHVwbGljYXRlKTogQWRqdXN0IHByb2ZpbGVfaW5mbyB1c2UuCgoyMDAzLTA0LTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTAzMzkKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogVHJ5IHRvIGVtaXQgY21wc3Ryc2kgaW5zbgoJZGlyZWN0bHkgaW5zdGVhZCBvZiB1bnNhZmVseSB0cmFuc2Zvcm1pbmcgY2FsbCBpbnRvIGEgbWVtY21wLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jbXApOiBMaWtld2lzZS4KCjIwMDMtMDQtMjIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYWxpYXMuYyAobWFya19jb25zdGFudF9mdW5jdGlvbik6ICBDaGVjayBmb3IgY29uc3RhbmN5IGFuZAoJcHVyaXR5IGV2ZW4gb2Ygdm9pZCBmdW5jdGlvbnMuICBVcGRhdGUgYm90aCB0aGUgZnVuY3Rpb24gZGVjbAoJYW5kIHRoZSBjZ3JhcGggUlRMIGluZm8gd2l0aCB0aGUgcmVzdWx0cy4KCjIwMDMtMDQtMjIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogcmVhbC5jIChkb19hZGQpOiBDaGFuZ2UgdG8gcmV0dXJuIGEgYm9vbCBpbmRpY2F0aW5nIHRoYXQgdGhlCglyZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBtYXkgYmUgaW5leGFjdCBkdWUgdG8gbG9zcyBvZiBwcmVjaXNpb24uCgkoZG9fbXVsdGlwbHkpOiBMaWtld2lzZS4KCShkb19kaXZpZGUpOiBMaWtld2lzZS4KCjIwMDMtMDQtMjIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoJICAgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBkd2FyZjJvdXQuYyAoZmRlX3RhYmxlX2FsbG9jYXRlZCk6IE1hcmsgd2l0aCBHVFkuCgkoZGVjbF9kaWVfdGFibGVfYWxsb2NhdGVkKTogTGlrZXdpc2UuCgkoYWJicmV2X2RpZV90YWJsZV9hbGxvY2F0ZWQpOiBMaWtld2lzZS4KCShsaW5lX2luZm9fdGFibGVfYWxsb2NhdGVkKTogTGlrZXdpc2UuCgkoc2VwYXJhdGVfbGluZV9pbmZvX3RhYmxlX2FsbG9jYXRlZCk6IExpa2V3aXNlLgoJKHB1Ym5hbWVfdGFibGVfYWxsb2NhdGVkKTogTGlrZXdpc2UuCgkoYXJhbmdlX3RhYmxlX2FsbG9jYXRlZCk6IExpa2V3aXNlLgoJKHJhbmdlc190YWJsZV9hbGxvY2F0ZWQpOiBMaWtld2lzZS4KCShkZWNsX2RpZV90YWJsZV9pbl91c2UpOiBVbmNvbmRpdGlvbmFsaXplOyBtYXJrIHdpdGggR1RZLgoJKGFiYnJldl9kaWVfdGFibGVfaW5fdXNlKTogTGlrZXdpc2UuCgkobGluZV9pbmZvX3RhYmxlX2luX3VzZSk6IExpa2V3aXNlLgoJKHNlcGFyYXRlX2xpbmVfaW5mb190YWJsZV9pbl91c2UpOiBMaWtld2lzZS4KCShwdWJuYW1lX3RhYmxlX2luX3VzZSk6IExpa2V3aXNlLgoJKGFyYW5nZV90YWJsZV9pbl91c2UpOiBMaWtld2lzZS4KCShyYW5nZXNfdGFibGVfaW5fdXNlKTogTGlrZXdpc2UuCgkoaGF2ZV9sb2NhdGlvbl9saXN0cyk6IExpa2V3aXNlLgoJKGVtaXRjb3VudCk6IE5ldyBHVFktbWFya2VkIHN0YXRpYywgbW92ZWQuLi4KCShtYXliZV9lbWl0X2ZpbGUpOiAuLi5mcm9tIGhlcmUuCgkobGFiZWxfbnVtKTogTmV3IEdUWS1tYXJrZWQgc3RhdGljLCBtb3ZlZC4uLgoJKGdlbl9pbnRlcm5hbF9zeW0pOiAuLi5mcm9tIGhlcmUuCgoyMDAzLTA0LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIDg4NjYKCSogcnRsLmggKE1FTV9OT1RSQVBfUCk6IE5ldy4KCShNRU1fQ09QWV9BVFRSSUJVVEVTKTogQ29weSBpdC4KCSogcnRsYW5hbC5jIChtYXlfdHJhcF9wKTogQ2hlY2sgaXQuCgkqIGV4cHIuYyAoZG9fdGFibGVqdW1wKTogU2V0IGl0LgoJKiBkb2MvcnRsLnRleGkgKEZsYWdzKTogRG9jdW1lbnQgaXQuCgoJKiBjZmdydGwuYyAodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogUmV2ZXJ0IGxhc3QgdGhyZWUgY2hhbmdlcy4KCjIwMDMtMDQtMjIgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfcHJvbG9ndWUgW09QRU5fVk1TX0FCSV0pOiBEb24ndAoJc2V0IEZSUCBvbiBzdGFjayBhZGp1c3RtZW50IGZvciBvdXRnb2luZyBhcmdzIGlmIGZyYW1lX3BvaW50ZXJfbmVlZGVkLgoKMjAwMy0wNC0yMiAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGd0aHItZ25hdC5oLCBndGhyLWduYXQuYzogbmV3IHNvdXJjZXMgZm9yIGltcGxlbWVudGF0aW9uIG9mCgktLWVuYWJsZS10aHJlYWRzPWduYXQuCgkqIE1ha2VmaWxlLmluOiBBZGQgZ3Roci1nbmF0LmMgdG8gTElCMkFEREVILgoJKiBjb25maWd1cmUuaW46IEFkZCBnbmF0IHRvIHRoZSBsaXN0IG9mIHRocmVhZCBwYWNrYWdlcwoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIGNvbmZpZy90LWxpbnV4OiBBZGQgZ3Roci1nbmF0LmMgdG8gTElCMkFEREVIIGFuZCBMSUIyQURERUhERVAKCjIwMDMtMDQtMjIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGxleC5jIChfY3BwX2dldF9mcmVzaF9saW5lKTogUG9wIHRoZSBidWZmZXIgaWYgcmV0dXJuX2F0X2VvZi4KCjIwMDMtMDQtMjIgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBjcHB0cmFkLmMgKF9jcHBfcmVwbGFjZW1lbnRfdGV4dF9sZW4pOiBBZGQgY2hlY2sgZm9yIG1hY3JvCglwYXJhbWV0ZXIgY291bnQuCgkoX2NwcF9jb3B5X3JlcGxhY2VtZW50X3RleHQpOiBTYW1lLgoKMjAwMy0wNC0yMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1sZXguYyAoY19sZXgpOiBIYW5kbGUgQ1BQX09USEVSIGRpZmZlcmVudGx5LgoJKiBjcHBleHAuYyAoX2NwcF9wYXJzZV9leHByKTogU2ltaWxhcmx5LgoJKiBjcHBsZXguYyAoU1BFTExfQ0hBUik6IFJlbW92ZS4KCShfY3BwX2xleF9kaXJlY3QpOiBTdHJheSBjaGFycyBhcmUgc2F2ZWQgYXMgYnl0ZSBzdHJpbmdzLgoJKGNwcF9zcGVsbF90b2tlbiwgY3BwX291dHB1dF90b2tlbiwgX2NwcF9lcXVpdl90b2tlbik6IERvbid0CgloYW5kbGUgU1BFTExfQ0hBUi4KCShjcHBfYXZvaWRfcGFzdGUpOiBVcGRhdGUgaGFuZGxpbmcgb2YgQ1BQX09USEVSLgoJKiBjcHBsaWIuaDogU3BlbGwgQ1BQX09USEVSIGxpa2UgYSBudW1iZXIuCgkoc3RydWN0IGNwcF90b2tlbik6IFJlbW92ZSBtZW1iZXIgYy4KCSogY3BwbWFjcm8uYyAoc3RyaW5naWZ5X2FyZyk6IFVwZGF0ZSBoYW5kbGluZyBvZiBDUFBfT1RIRVIuCgoyMDAzLTA0LTIyICBEYXZpZCBUdXJuZXIgPG5vdmFsaXNAZ251Lm9yZz4KCgkqIGdibC1jdG9ycy5oOiBBZGQgc3BlY2lhbCBsaWNlbnNlIGV4Y2VwdGlvbi4KCSogbGliZ2NjMi5oOiBMaWtld2lzZS4KCSogdHN5c3RlbS5oOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5oOiBMaWtld2lzZS4KCjIwMDMtMDQtMjIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9yYW5nZV90ZXN0KTogVXNlIFJBTkdFX1RFU1RfTk9OX1NIT1JUX0NJUkNVSVQKCW1hY3JvIGRlZmF1bHRpbmcgdG8gb3JpZ2luYWwgQlJBTkNIX0NPU1QgaGV1cmlzdGljLgoJKiBkb2MvdG0udGV4aSAoUkFOR0VfVEVTVF9OT05fU0hPUlRfQ0lSQ1VJVCk6IERvY3VtZW50LgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUkFOR0VfVEVTVF9OT05fU0hPUlRfQ0lSQ1VJVCk6IERlZmluZS4KCjIwMDMtMDQtMjIgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvdC1zcGU6IE1lcmdlIGluIHQtZnBydWxlcyBpbnRvIGZpbGUuCgoJKiBjb25maWcuZ2NjOiBBZGQgdC1zcGUgdG8gcG93ZXJwYy1lYWJpc3BlLgoKMjAwMy0wNC0yMiAgS2VhbiBKb2huc3RvbiAgPGprakBzY28uY29tPgoKCSogdGxpbmsuYyAocmVjb21waWxlX2ZpbGVzKTogQWRkIG1pc3NpbmcgJz0nIHRvIHB1dGVudiBjYWxscwoKMjAwMy0wNC0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdpbmNsdWRlL3N0ZGRlZi5oOiBQcm92aWRlIEMrKyBzYWZlIG9mZnNldG9mLgoKMjAwMy0wNC0yMiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IEluIChtZW0gKGFkZHJlc3NvZiAocmVnKSkpIGNhc2UKCWZvciByZWcgbm90ZXMsIGlmIHRoZXJlIGFyZSBubyBzdWJzdGl0dXRpb25zLCBqdXN0IHVzZSBhIFNVQlJFRy4KCjIwMDMtMDQtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY2FsbHMubyk6IERlcGVuZCBvbiBleGNlcHQuaC4KCSogY2FsbHMuYzogSW5jbHVkZSBleGNlcHQuaC4KCShlbWl0X2NhbGxfMSk6IENhbGwgbm90ZV9laF9yZWdpb25fbWF5X2NvbnRhaW5fdGhyb3cgaWYKCWFwcHJvcHJpYXRlLgoJKiBleGNlcHQuYyAoZWhfcmVnaW9uKTogQWRkIG1heV9jb250YWluX3Rocm93LgoJKGV4cGFuZF9laF9yZWdpb25fZW5kX2NsZWFudXApOiBEbyBub3QgaW5jbHVkZSBoYW5kbGVyIGNvZGUgd2hlbgoJaXQgY2Fubm90IGJlIHJlYWNoZWQuCgkobm90ZV9laF9yZWdpb25fbWF5X2NvbnRhaW5fdGhyb3cpOiBOZXcgZnVuY3Rpb24uCgkqIGV4Y2VwdC5oIChub3RlX2VoX3JlZ2lvbl9tYXlfY29udGFpbl90aHJvdyk6IE5ldyBmdW5jdGlvbi4KCjIwMDMtMDQtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX21hcmtfZGxsaW1wb3J0KTogUmV2ZXJ0IHByZXZpb3VzCgljaGFuZ2VzLgoKMjAwMy0wNC0yMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBObyBTUEUgbWVhbnMKCTY0LWJpdCBsb25nIGRvdWJsZXMuCgoyMDAzLTA0LTIxICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQsIGNhc2UgUExVU19FWFBSIGFuZCBjYXNlIE1VTFRfRVhQUik6IFJlc3RvcmUKCWEgbnVtYmVyIG9mIGNvbnZlcnNpb25zIHJlcXVpcmVkIGZvciB0eXBlIGNvbnNpc3RlbmN5IGFuZCBwcmV2aW91c2x5CglzdHJpcHBlZCBvZmYgYnkgU1RSSVBfTk9QUy4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogUHJldmVudCBzaWJjYWxsIG9wdGltaXphdGlvbiBmb3IgY2FsbHMgdG8KCW5lc3RlZCBzdWJwcm9ncmFtcy4KCgkqIGV4cG1lZC5jIChleHRyYWN0X2JpdF9maWVsZCk6IFJldmVyc2Ugb3BlcmFuZHMgb2YgJiYgY29uZGl0aW9uIHRvCglwcmV2ZW50IGEgcG90ZW50aWFsIGRpdmlzaW9uIGJ5IHplcm8gaW4gdGhlIHByZXZpb3VzbHkgZmlyc3QgYnJhbmNoLgoJKiBjb25maWcvcGEvcGEubWQgKGV4dHYsIGV4dHp2KTogRkFJTCBpZiB0aGUgYml0ZmllbGQgbGVuZ3RoIGlzIHplcm8uCgoyMDAzLTA0LTIxICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChpc19hZGEsIGlzX2FkYV9zdWJyYW5nZV90eXBlKTogTmV3IGZ1bmN0aW9ucy4KCShzdWJyYW5nZV90eXBlX2RpZSk6IExpa2V3aXNlLgoJKG1vZGlmaWVkX3R5cGVfZGllKTogRW1pdCBhIHN1YnJhbmdlX3R5cGUgRElFIGZvciBBZGEgc3VicmFuZ2UgdHlwZXMuCgkoaXNfY19mYW1pbHksIGlzX2N4eCwgaXNfamF2YSwgaXNfZm9ydHJhbik6IFJldHVybiBib29sIGFuZCBjbGVhbiB1cC4KCjIwMDMtMDQtMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJQnJlYWsgb3V0IGNvdmVyYWdlIHJvdXRpbmVzIHRvIG5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoQ09WRVJBR0VfSCk6IE5ldyB2YXJpYWJsZQoJKENfT0JKUyk6IEFkZCBjb3ZlcmFnZS5vCgkoY292ZXJhZ2Uubyk6IE5ldyB0YXJnZXQuCgkocHJvZmlsZS5vLCBsb29wLWluaXQubywgc2NoZWQtZWJiLm8sIHByZWRpY3QubywgdHJhY2VyLm8pOiBBZGp1c3QKCWRlcGVuZGVuY2llcy4KCShHVEZJTEVTKTogQWRqdXN0LgoJKGd0LWNvdmVyYWdlLmgpOiBOZXcgdGFyZ2V0LgoJKGd0LXByb2ZpbGUuaCk6IFJlbW92ZS4KCSogcHJvZmlsZS5oOiBSZW1vdmUuIE1vdmUgdG8gLi4uCgkqIGNvdmVyYWdlLmg6IC4uLiBoZXJlLiBOZXcuICNpbmNsdWRlIGdjb3YtaW8uaC4KCSogZ2Nvdi1pby5oOiBNb3ZlIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIC4uLgoJKiBnY292LWlvLmM6IC4uLiBoZXJlLiBOZXcuCgkqIHByb2ZpbGUuYzogTW92ZSBjb3ZlcmFnZSByb3V0aW5lcyB0byBjb3ZlcmFnZS5jLgoJKGluc3RydW1lbnRfZWRnZXMsIGdldF9leGVjX2NvdW50cywgYnJhbmNoX3Byb2IsIGluaXRfYnJhbmNoX3Byb2IsCgllbmRfYnJhbmNoX3Byb2IpOiBBZGp1c3QuCgkqIGNvdmVyYWdlLmM6IE5ldy4gQ292ZXJhZ2Ugcm91dGluZXMgZnJvbSBwcm9maWxlLmMKCShjb3ZlcmFnZV9jb3VudGVyX3JlZiwgY292ZXJhZ2VfaW5pdCwgY292ZXJhZ2VfZmluaXNoLAoJY292ZXJhZ2VfZW5kX2Z1bmN0aW9uLCBjb3ZlcmFnZV9iZWdpbl9vdXRwdXQsCgljb3ZlcmFnZV9jb3VudGVyX3JlZiwgZ2V0X2NvdmVyYWdlX2NvdW50cyk6IERlZmluZS4KCSogZ2Nvdi1kdW1wLmMsIGdjb3YuYzogI2luY2x1ZGUgZ2Nvdi1pby5jLgoJKiBsaWJnY292LmM6IExpa2V3aXNlLiBBZGp1c3QuCgkqIGxvb3AtaW5pdC5jOiBEb24ndCAjaW5jbHVkZSBwcm9maWxlLmgKCSogdHJhY2VyLmMsIHByZWRpY3QuYywgc2NoZWQtZWJiLmM6IEFkanVzdCAjaW5jbHVkZXMuCgkqIHJ0bC5oOiBBZGQgY292ZXJhZ2UgcHJvdG90eXBlcy4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IEluaXQgY292ZXJhZ2UsIG5vdCBicmFuY2hfcHJvYi4KCUFsd2F5cyBjYWxsIGNvdmVyYWdlX2ZpbmlzaC4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBjb3ZlcmFnZV9lbmRfZnVuY3Rpb24uCgoyMDAzLTA0LTIxICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoKm1vdnNmX3NvZnRmbG9hdCk6IEFkZCAiaCIgPC0gIjAiIGNhc2UuCgoyMDAzLTA0LTIxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLXBwb3V0cHV0LmMgKGNiX2luY2x1ZGUpOiBEb24ndCB0YWtlIGEgY3BwX3Rva2VuLgoJKiBjcHBmaWxlcy5jOiBEb24ndCB1bmRlZiBzdHJjbXAuCgkoZmluZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCB0YWtlIGEgY3BwX3Rva2VuLiAgQ2hlY2sgZm9yIGVtcHR5CglmaWxlIG5hbWVzLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlLCBfY3BwX2NvbXBhcmVfZmlsZV9kYXRlKTogRG9uJ3QgdGFrZSBhIGNwcF90b2tlbi4KCShjcHBfcHVzaF9pbmNsdWRlKTogU2ltcGxpZnkuCgkqIGNwcGhhc2guaCAoX2NwcF9leGVjdXRlX2luY2x1ZGUsIF9jcHBfY29tcGFyZV9maWxlX2RhdGUpOiBVcGRhdGUuCgkqIGNwcGxpYi5jIChnbHVlX2hlYWRlcl9uYW1lKTogUmV0dXJuIHRoZSBmaWxlIG5hbWUsIG5vdCBhIGNwcF90b2tlbi4KCShwYXJzZV9pbmNsdWRlKTogU2ltaWxhcnkuICBEb24ndCBjaGVjayBmb3IgemVyby1sZW5ndGggZmlsZW5hbWVzLgoJKGRvX2luY2x1ZGVfY29tbW9uLCBkb19wcmFnbWFfZGVwZW5kZW5jeSk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfY2FsbGJhY2tzKTogQ2hhbmdlIHByb3RvdHlwZSBvZiBpbmNsdWRlLgoKMjAwMy0wNC0yMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRvYy9ydGwudGV4aSAoUlRYX1VOQ0hBTkdJTkdfUCk6IFBvaW50IHRvIHRydWVfZGVwZW5kZW5jZSBmb3IKCWRldGFpbHMgb2YgY29uZmxpY3QgaGFuZGxpbmcuCgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2LCBjYXNlIENPTlZFUlRfRVhQUik6IERldGVjdCBjYXNlCgl3aGVuIGNvbnZlcnNpb24gb3ZlcmZsb3dzLgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBEb24ndCBzZXQgREVDTF9TSVpFX1VOSVQgaWYgYWxyZWFkeSBzZXQuCgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogU2V0IFJUWF9VTkNIQU5HSU5HX1AgaWYgcmVhZG9ubHlfZmllbGRfcAoJYmVmb3JlIGNsZWFyaW5nLgoKMjAwMy0wNC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGkzODZfcGVfbWFya19kbGxpbXBvcnQpOiBNYWtlIHRoZSBuZXcgUlRMCgloYXZlIHRoZSBzYW1lIGZvcm0gYXMgdGhlIG9sZCBSVEwuCgoyMDAzLTA0LTIxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjcHBjaGFyc2V0LmMgKF9jcHBfdmFsaWRfdWNuKTogQ2FzdCBmaWVsZCBwcmVjaXNpb24gdG8gaW50LgoKMjAwMy0wNC0yMCAgQ2hyaXMgTGF0dG5lciAgPHNhYnJlQG5vbmRvdC5vcmc+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmgsIGMtc2VtYW50aWNzLmM6IFJlbmFtZSBnZW5ydGxfZGVjbF9jbGVhbnVwIHRvCglnZW5ydGxfY2xlYW51cF9zdG10LiAgQ29ycmVjdCBjb21tZW50IGF0IGhlYWQgb2YKCWdlbnJ0bF9jbGVhbnVwX3N0bXQgKG5vIHN1Y2ggdGhpbmcgYXMgYSBERUNMX0NMRUFOVVApLgoKCSogc3RtdC5jIChzdHJ1Y3QgbmVzdGluZyk6IEtpbGwgbl9mdW5jdGlvbl9jYWxscy4KCShleHBhbmRfc3RhcnRfYmluZGluZ3MpOiBEb24ndCBzZXQKCXRoaXNibG9jay0+ZGF0YS5ibG9jay5uX2Z1bmN0aW9uX2NhbGxzLgoJKGV4cGFuZF9lbmRfYmluZGluZ3MpOiBDb21wYXJlIGZ1bmN0aW9uX2NhbGxfY291bnQgYWdhaW5zdCAwLgoJKGV4cGFuZF9jbGVhbnVwcyk6IEtpbGwgRE9OVF9ETyBhcmd1bWVudDsgYWxsIGNhbGxlcnMgcGFzc2VkCglOVUxMX1RSRUUuIEFsbCBjYWxsZXJzIHVwZGF0ZWQgdG8gbWF0Y2guCgoyMDAzLTA0LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKHN0cnVjdCBkZWZlcnJlZF9jb25zdGFudCwgZGVmZXJfYWRkcmVzc2VkX2NvbnN0YW50c19mbGFnKQoJKGRlZmVyX2FkZHJlc3NlZF9jb25zdGFudHMsIG91dHB1dF9kZWZlcnJlZF9hZGRyZXNzZWRfY29uc3RhbnRzKTogS2lsbC4KCShvdXRwdXRfY29uc3RhbnRfZGVmKTogUmVtb3ZlIGNvZGUgcHJlZGljYXRlZCBvbgoJZGVmZXJfYWRkcmVzc2VkX2NvbnN0YW50c19mbGFnLgoKCSogb3V0cHV0Lmg6IFJlbW92ZSBwcm90b3R5cGVzIG9mIGRlbGV0ZWQgZnVuY3Rpb25zLgoJKiBjLXR5cGVjay5jIChjb25zdHJ1Y3Rvcl9zdWJjb25zdGFudHNfZGVmZXJyZWQpOiBLaWxsLgoJKHN0cnVjdCBpbml0aWFsaXplcl9zdGFjayk6IFJlbW92ZSAnZGVmZXJyZWQnIGZpZWxkLgoJKHN0YXJ0X2luaXQpOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGFib3ZlLgoJKGZpbmlzaF9pbml0KTogTGlrZXdpc2UuIEFsc28gcmVtb3ZlIG5ldmVyLWV4ZWN1dGVkIGNhbGwgdG8KCW91dHB1dF9kZWZlcnJlZF9hZGRyZXNzZWRfY29uc3RhbnRzLiAgUHVsbCBhc3NpZ25tZW50IHRvCglkZWZzdHIgb3V0IG9mIGlmIGV4cHJlc3Npb24uCgoyMDAzLTA0LTIwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBoYXNoLmggKE5PVEVfRVNDX05MLCBOT1RFX0VTQ19TUEFDRV9OTCwgTk9URV9UUklHUkFQSCwKCU5PVEVfTkVXTElORSk6IFJlbW92ZS4KCSogY3BwbGV4LmMgKF9jcHBfY2xlYW5fbGluZSwgX2NwcF9wcm9jZXNzX2xpbmVfbm90ZXMpOiBVcGRhdGUKCXRvIGhhbmRsZSBuZXcgZm9ybSBvZiBsaW5lIG5vdGUgdHlwZS4KCjIwMDMtMDQtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0YXJnZXQuaCAoZW5jb2RlX3NlY3Rpb25faW5mbyk6IEFkZCBuZXcgYXJndW1lbnQgY2FycnlpbmcKCXRoZSBSVEwgdG8gYmUgbW9kaWZpZWQgYnkgdGhlIGhvb2suCgoJKiB2YXJhc20uYyAobWFrZV9kZWNsX3J0bCwgb3V0cHV0X2NvbnN0YW50X2RlZik6IFVwZGF0ZSBjYWxscwoJdG8gZW5jb2RlX3NlY3Rpb25faW5mby4KCShkZWZhdWx0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBUYWtlIGFuZCB1c2UgUlRMIGFyZ3VtZW50LAoJZG9uJ3QgdXNlIFRSRUVfQ1NUX1JUTCBvciBERUNMX1JUTC4KCSogb3V0cHV0Lmg6IFVwZGF0ZSBwcm90b3R5cGUgb2YgZGVmYXVsdF9lbmNvZGVfc2VjdGlvbl9pbmZvLgoJKiBjb25maWcvZGFyd2luLmggKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKQoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUsIEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKToKCVVwZGF0ZSBjYWxscyB0byBlbmNvZGVfc2VjdGlvbl9pbmZvLgoKCSogY29uZmlnL2Rhcndpbi5jLCBjb25maWcvYXJtL2FybS5jLCBjb25maWcvYXJtL3BlLmMKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMsIGNvbmZpZy9pMzg2L3dpbm50LmMsIGNvbmZpZy9tMzJyL20zMnIuYwoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMsIGNvbmZpZy9tODhrL204OGsuYywgY29uZmlnL21jb3JlL21jb3JlLmMKCSogY29uZmlnL21pcHMvbWlwcy5jLCBjb25maWcvbW1peC9tbWl4LmMsIGNvbmZpZy9wYS9wYS5jCgkqIGNvbmZpZy9yb21wL3JvbXAuYywgY29uZmlnL3JzNjAwMC9yczYwMDAuYywgY29uZmlnL3MzOTAvczM5MC5jCgkqIGNvbmZpZy92ODUwL3Y4NTAuYyAoVEFSR0VUX0VOQ09ERV9TRUNUSU9OX0lORk8gZGVmaW5pdGlvbnMpOgoJVGFrZSBhbmQgdXNlIFJUTCBhcmd1bWVudCwgZG9uJ3QgdXNlIFRSRUVfQ1NUX1JUTCBvciBERUNMX1JUTCwKCWV4Y2VwdCBmb3IgUEUgZGxsaW1wb3J0L2RsbGV4cG9ydC4gIFVwZGF0ZSBjYWxscyB0bwoJZGVmYXVsdF9lbmNvZGVfc2VjdGlvbl9pbmZvLgoKCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCwgY29uZmlnL2FybS9hcm0tcHJvdG9zLmgsIGNvbmZpZy9pMzg2LXByb3Rvcy5oOgoJVXBkYXRlIHByb3RvdHlwZXMuCgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0VOQ09ERV9TRUNUSU9OX0lORk8pOiBVcGRhdGUuCgoyMDAzLTA0LTIwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSLzg3MDUKCSogcGEubWQgKG1vdmNjZnApOiBOZXcgZXhwYW5kZXIuCgkoc2V0Y2NmcDAsIHNldGNjZnAxKTogUmVuYW1lIHRvIG1vdmNjZnAwIGFuZCBtb3ZjY2ZwMSwgcmVzcGVjdGl2ZWx5LgoJUmV2ZXJzZSBmY21wIGNvbmRpdGlvbnMuCgoyMDAzLTA0LTIwICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGFtZWxlay5nZGEucGw+CgoJKiBjb25maWcvYXZyL2F2ci5tZCAoKmNtcHFpX3NpZ25fZXh0ZW5kKTogSGFuZGxlIG5lZ2F0aXZlIHZhbHVlcwoJb2Ygb3BlcmFuZCAxIGNvcnJlY3RseS4KCjIwMDMtMDQtMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfZGlyZWN0KTogU2V0IEJPTCBmb3IgQ1BQX0VPRiB0b2tlbnMuCgkqIGdjb3YuYyAob3V0cHV0X2xpbmVzKTogRG9uJ3QgYmUgc28gZnVzc3kgYWJvdXQgZ29pbmcgcGFzdCBFT0YuCgoyMDAzLTA0LTIwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX09CSlMpOiBBZGQgY3BwY2hhcnNldC5vLgoJKGNwcGNoYXJzZXQubyk6IE5ldyB0YXJnZXQuCgkqIGMtbGV4LmMgKGlzX2V4dGVuZGVkX2NoYXIpOiBNb3ZlIHRvIGNwcGNoYXJzZXQuYy4KCSh1dGY4X2V4dGVuZF90b2tlbik6IERlbGV0ZS4KCSogY3BwY2hhcnNldC5jOiBOZXcgZmlsZS4KCSogY3BwaGFzaC5oIChfY3BwX3ZhbGlkX3Vjbik6IE5ldy4KCSogY3BwbGV4LmMgKGxleF9pZGVudGlmaWVyKTogVXBkYXRlIHByb3RvdHlwZS4KCShjb250aW51ZXNfaWRlbnRpZmllcl9wKTogUmVuYW1lIGZvcm1zX2lkZW50aWZpZXJfcC4gIEhhbmRsZSBVQ04KCWVzY2FwZXMuCgkobWF5YmVfcmVhZF91Y3MpOiBSZW5hbWUgbWF5YmVfcmVhZF91Y24uICBVcGRhdGUgdG8gdXNlIGNvZGUKCWluIGNwcGNoYXJzZXQuYy4KCShsZXhfbnVtYmVyLCBsZXhfaWRlbnRpZmllciwgY3BwX3BhcnNlX2VzY2FwZSk6IFVwZGF0ZS4KCShfY3BwX2xleF9kaXJlY3QpOiBVcGRhdGUgdG8gaGFuZGxlIFVDTnMuCgkoY3BwX2F2b2lkX3Bhc3RlKTogRG9uJ3QgcGFzdGUgdG8gZm9ybSBhIFVDTi4KCjIwMDMtMDQtMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiAgRG9uJ3QgZXhwYW5kIGEgcHVyZSBvciBjb25zdAoJYnVpbHQtaW4gZnVuY3Rpb24gaWYgdGhlIHJlc3VsdCB3aWxsIGJlIGlnbm9yZWQgYW5kIG5vbmUgb2YKCWl0cyBhcmd1bWVudHMgYXJlIHZvbGF0aWxlLgoKMjAwMy0wNC0xOSAgS2VhbiBKb2huc3RvbiAgPGprakBzY28uY29tPgoKCSogdW53aW5kLWR3Mi5jIChfVW53aW5kX0dldENGQSk6IGNhc3QgcmV0dXJuIHRvIGF2b2lkIHdhcm5pbmcKCSogY29uZmlnLmdjYzogbWFrZSBTQ08gdXNlIGRieGVsZi5oIGFuZCBlbGZvcy5oOyBvbmx5IHVzZSBvbmUKCXRhcmdldCBmcmFnbWVudCBub3c6IHQtc2NvNTsgZG9udCBjb21waWxlIGNydGkuby4KCSogY29uZmlnL2kzODYvc2NvNS5oOiBtYWpvciBvdmVyaGF1bCB0byByZW1vdmUgYWxsIENPRkYgcmVtbmFudHMKCWFuZCB0byB1c2UgZWxmb3MuaCBmb3IgbW9zdCBkZWZpbml0aW9ucy4KCShCU1NfU0VDVElPTl9BU01fT1ApOiBzZXQgY29ycmVjdCBzZWdtZW50IGF0dHJpYnV0ZXMuCgkoUFJFRkVSRURfREVCVUdHSU5HX1RZUEUpOiBzZXQgdG8gRFdBUkYtMi4KCShEV0FSRjJfVU5XSU5EX0lORk8pOiBBbHdheXMgc2V0IHRvIDEuCgkoTURfU1RBUlRGSUxFX1BSRUZJWCk6IE1ha2UgL3Vzci9nbnUvbGliIHRoZSBkZWZhdWx0LgoJKE1EX1NUQVJURklMRV9QUkVGSVhfMSk6IERlZmluZS4KCShNRF9FWEVDX1BSRUZJWCk6IEFkanVzdCB0byAvdXNyL2dudS9iaW4gaWYgdXNpbmcgR0FTLgoJKERFRkFVTFRfTElOS0VSKTogRGVmaW5lIGlmIG5vdCBzcGVjaWZpZWQgdG8gY29uZmlndXJlLgoJKENUT1JTX1NFQ1RJT05fQVNNX09QKTogUmVtb3ZlIENPRkYgY3J1ZC4KCShEVE9SU19TRUNUSU9OX0FTTV9PUCk6IFJlbW92ZSBDT0ZGIGNydWQuCgkoV0lOVF9UWVBFKTogRGVmaW5lLgoJKFNEQl9ERUJVR0dJTkdfSU5GTyk6IFJlbW92ZS4KCShFWFRSQV9TRUNUSU9OUyk6IExpa2V3aXNlLgoJKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogTGlrZXdpc2UuCgkoQ1RPUl9MSVNUX0JFR0lOKTogTGlrZXdpc2UuCgkoQ1RPUl9MSVNUX0VORCk6IExpa2V3aXNlLgoJKElOSVRfU0VDVElPTl9GVU5DVElPTik6IExpa2V3aXNlLgoJKEZJTklfU0VDVElPTl9GVU5DVElPTik6IExpa2V3aXNlLgoJKFNVQlRBUkdFVF9GUkFNRV9QT0lOVEVSX1JFUVVJUkVEKTogTGlrZXdpc2UuCgkoTE9DQUxfTEFCRUxfUFJFRklYKTogTGlrZXdpc2UuCgkoTk9OX1NBVklOR19TRVRKTVApOiBMaWtld2lzZS4KCShSRVRVUk5fUE9QU19BUkdTKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9TS0lQKTogTGlrZXdpc2UuCgkoVEFSR0VUX0FTTV9OQU1FRF9TRUNUSU9OKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfSURFTlQpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0NBU0VfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9MSU1JVEVEX1NUUklORyk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9MT0NBTCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBMaWtld2lzZS4KCShBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgkoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBMaWtld2lzZS4KCShBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogTGlrZXdpc2UuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoJKEFTTV9ERUNMQVJFX1JFU1VMVCk6IExpa2V3aXNlLgoJKEFTTV9XRUFLRU5fTEFCRUwpOiBMaWtld2lzZS4KCShTVVBQT1JUU19XRUFLKTogTGlrZXdpc2UuCgkoQVBQTFlfUkVTVUxUX1NJWkUpOiBMaWtld2lzZS4KCShMUFJFRklYKTogTGlrZXdpc2UuCgkoQUxJR05fQVNNX09QKTogTGlrZXdpc2UuCgkoQVNDSUlfREFUQV9BU01fT1ApOiBMaWtld2lzZS4KCShJREVOVF9BU01fT1ApOiBMaWtld2lzZS4KCShBU01fU0hPUlQpOiBMaWtld2lzZS4KCShBU01fTE9ORyk6IExpa2V3aXNlLgoJKFRZUEVfQVNNX09QKTogTGlrZXdpc2UuCgkoU0laRV9BU01fT1ApOiBMaWtld2lzZS4KCShTVFJJTkdfQVNNX09QKTogTGlrZXdpc2UuCgkoU0tJUF9BU01fT1ApOiBMaWtld2lzZS4KCShFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IExpa2V3aXNlLgoJKFJFQURPTkxZX0RBVEFfU0VDVElPTl9BU01fT1ApOiBMaWtld2lzZS4KCShJTklUX1NFQ1RJT05fQVNNX09QKTogTGlrZXdpc2UuCgkoRklOSV9TRUNUSU9OX0FTTV9PUCk6IExpa2V3aXNlLgoJKFRFWFRfU0VDVElPTl9BU01fT1ApOiBMaWtld2lzZS4KCShEQVRBX1NFQ1RJT05fQVNNX09QKTogTGlrZXdpc2UuCgkoVFlQRV9PUEVSQU5UX0ZPUk1BVCk6IExpa2V3aXNlLgoJKEFTTV9TUEVDKTogUmVtb3ZlIENPRkYgY29kZS4KCShTVEFSVEZJTEVfU1BFQyk6IExpa2V3aXNlLiBBbHdheXMgdXNlIGNydGkubzsgYWRkIC1wIGFuZCAtcHAgc3VwcG9ydDsKCWNhdXNlIC1wZyB0byBlbWl0IGFuIGVycm9yOyB1c2UgcGNydDFlbGYubyB3aXRoIC1wcAoJKEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBBZGQgX1NDT19EU19MTC4KCShDUFBfU1BFQyk6IFJlbW92ZSBDT0ZGIGNydWQ7IGFsd2F5cyBsb29rIGluIC91c3IvZ251L2luY2x1ZGUgZmlyc3QuCgkoTElOS19TUEVDKTogUmVtb3ZlIENPRkYgY3J1ZDsgdXNlIC1FIGZvciBlbnZpcm9ubWVudCBzd2l0Y2ggbm90IC1SOwoJYWRkIC16IGFsdF9yZXNvbHZlIHRvIHN1cHBvcnQgd2VhayBzeW1ib2xzIHRoZSB3YXkgR0NDIHdhbnRzIHRoZW0uCgkoTElCX1NQRUMpOiBVc2UgdGhlIHByb2ZpbGVyIGxpYnJhcmllcyBpbiAtcCBvciAtcHAgbW9kZS4KCShMSUJHQ0NfU1BFQyk6IERvbnQgdXNlIC1sZ2NjIGluIC1HIG1vZGUuCgkoQVNNX1BSRUZFUkVEX0VIX0RBVEFfRk9STUFUKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni90LXNjbzUgKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZS4KCShDUlRTVFVGRl9UX0NGTEFHU19TKTogRGVmaW5lLgoJKE1VTFRJTElCX09QVElPTlMpOiBMaWtld2lzZS4KCShNVUxUSUxJQl9ESVJOQU1FUyk6IExpa2V3aXNlLgoJKE1VTFRJTElCX01BVENIRVMpOiBMaWtld2lzZS4KCShNVUxUSUxJQl9FWFRSQV9PUFRTKTogTGlrZXdpc2UuCgkoTElCR0NDKTogTGlrZXdpc2UuCgkoSU5TVEFMTF9MSUJHQ0MpOiBMaWtld2lzZS4KCShjcnRpLm8pOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L3Qtc2NvNWdhczogUmVtb3ZlLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBVcGRhdGVkIGZvciBuZXcgT3BlblNlcnZlciBpbnN0cnVjdGlvbnMuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvbmVzdC5jOiBBbGxvdyBmYWlsdXJlIG9uIFNDTyAoLXBnIG5vdCBzdXBwb3J0ZWQpCgoyMDAzLTA0LTE5ICBLZWFuIEpvaG5zdG9uICA8amtqQHNjby5jb20+CgoJKiBmaXhpbmMvY2hlY2sudHBsOiBBbGxvdyB1c2VyIHRvIG92ZXItcmlkZSBkaWZmIHByb2dyYW0uCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IFJlbW92ZWQgZXh0cmFuZW91cyAjaWZuZGVmIFNWUjUuCgkoc2NvX21hdGgpOiBBZGRlZCB0ZXN0IGZvciBTQ08gbWF0aCBoZWFkZXIgZmlsZXMuCgkoc2NvX3JlZ3NldCk6IEFkZGVkIGNoZWNrIGZvciBjb25mbGljdHMgd2l0aCBpZWVlZnAuaC4KCShzdnI0X2Rpc2FibGVfb3B0KTogUmVtb3ZlZCBleHRyYW5lb3VzICNpZmRlZiBTVlI0LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlZAoJKiBmaXhpbmMvdGVzdHMvYmFzZS9tYXRoLmg6IEFkZGVkIHNjb19tYXRoIHRlc3RzLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zdHJpbmcuaDogTmV3IGZpbGUuCgkqIGZpeGluYy90ZXN0cy9iYXNlL3N5cy9yZWdzZXQuaDogTmV3IGZpbGUuCgoyMDAzLTA0LTE5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBoYXNoLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogUmVtb3ZlIGJhY2t1cF90by4KCSogY3BwbGV4LmMgKEJBQ0tVUCwgZ2V0X2VmZmVjdGl2ZV9jaGFyKTogRGllLgoJKF9jcHBfc2tpcF9ibG9ja19jb21tZW50KTogQXNzdW1lICcqJyBpcyBsb2NhdGlvbiBvbiBlbnRyeS4KCShjb250aW51ZXNfaWRlbnRpZmllcl9wKTogUmVzcGVjdCAtZm5vLWRvbGxhcnMtaW4taWRlbnRpZmllcnMuCgkoSUZfTkVYVF9JUyk6IFVwZGF0ZS4KCShfY3BwX2xleF9kaXJlY3QpOiBEb24ndCB1c2UgYmFja3VwX3RvOyBsb29rIGFoZWFkIGRpcmVjdGx5LgoKMjAwMy0wNC0xOSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiBNb3ZlIHRvIGEgbmV3IHNlY3Rpb24gYW5kIG9ic29sZXRlIEsrUgoJcG9ydGFiaWxpdHkgaXNzdWVzLgoKU2F0IEFwciAxOSAxNDo1NjoxNyBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJ0bGFuYWwuYyAoc3VicmVnX29mZnNldF9yZXByZXNlbnRhYmxlX3ApOiAgRml4IGNhbGwgb2YKCXN1YnJlZ19sb3dwYXJ0LgoKMjAwMy0wNC0xOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IE5ldyBtZW1iZXIgd2FybmVkX2RvbGxhci4KCSogY3BwbGV4LmMgKGNvbnRpbnVlc19pZGVudGlmaWVyX3ApOiBOZXcgZnVuY3Rpb24uCgkocGFyc2VfaWRlbnRpZmllciwgcGFyc2VfbnVtYmVyLCBwYXJzZV9zdHJpbmcpOiBSZW5hbWUgbGV4X2lkZW50aWZlciwKCWxleF9udW1iZXIgYW5kIGxleF9zdHJpbmcsIGFuZCBzaW1wbGlmeS4KCShwYXJzZV9zbG93LCB1bmVzY2FwZWRfdGVybWluYXRvcl9wKTogRGllLgoJKF9jcHBfbGV4X2RpcmVjdCk6IFVwZGF0ZS4KCjIwMDMtMDQtMTkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFByb3ZpZGUgaW5pdCBmb3Igb2xkX3N0YWNrX3BvaW50ZXJfZGVsdGEuCgoyMDAzLTA0LTE5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtZnByb2ZpbGUtYXJjcyk6IE1lbnRpb24gLWxnY292LCBsb2NraW5nIGFuZAoJZm9yayBiZWhhdmlvci4KCjIwMDMtMDQtMTkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGV4cC5jIChldmFsX3Rva2VuKTogUGVybWl0IHRydWUgYW5kIGZhbHNlIGV2ZW4gaWYgcGVkYW50aWMuCgoyMDAzLTA0LTE5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBsZXguYyAoc2tpcF93aGl0ZXNwYWNlKTogUmVhcnJhbmdlIHRvIGF2b2lkIHN0YWdlMSBJQ0UuCgoyMDAzLTA0LTE5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBmaWxlcy5jIChFTkFCTEVfVkFMR1JJTkRfQ0hFQ0tJTkcsIFZBTEdSSU5EX0RJU0NBUkQsCglNTUFQX1RIUkVTSE9MRCwgVEVTVF9USFJFU0hPTEQsIFNIT1VMRF9NTUFQKTogUmVtb3ZlLgoJKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBSZW1vdmUgZmVmY250LCBtYXBwZWQgbWVtYmVycy4KCShvcGVuX2ZpbGUsIHN0YWNrX2luY2x1ZGVfZmlsZSwgX2NwcF9wb3BfZmlsZV9idWZmZXIpOiBEaXNhYmxlIGNhY2hpbmcuCgkocmVhZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCB1c2UgbW1hcCwgdGVybWluYXRlIGJ1ZmZlcnMgaW4gJ1xyJy4KCShwdXJnZV9jYWNoZSk6IERvbid0IHVzZSBtdW5tYXAuCgkqIGNwcGhhc2guaCAoQ1BQX0JVRl9DT0xVTU4pOiBVcGRhdGUuCgkobGV4ZXJfc3RhdGUpOiBSZW1vdmUgbGV4aW5nX2NvbW1lbnQuCgkoc3RydWN0IF9jcHBfbGluZV9ub3RlKTogTmV3LgoJKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlcnMgY3VyX25vdGUsIG5vdGVzX3VzZWQsIG5vdGVzX2NhcCwKCW5leHRfbGluZSBhbmQgbmVlZF9saW5lLiAgUmVtb3ZlIGNvbF9hZGp1c3QgYW5kIHNhdmVkX2ZsYWdzLgoJKF9jcHBfcHJvY2Vzc19saW5lX25vdGVzLCBfY3BwX2NsZWFuX2xpbmUsIF9jcHBfZ2V0X2ZyZXNoX2xpbmUsCglfY3BwX3NraXBfYmxvY2tfY29tbWVudCwgc2Nhbl9vdXRfbG9naWNhbF9saW5lKTogTmV3LgoJKF9jcHBfaW5pdF9tYmNoYXIpOiBSZW1vdmUuCgkqIGNwcGluaXQuYyAoaW5pdF9saWJyYXJ5KTogUmVtb3ZlIGNhbGwgdG8gX2NwcF9pbml0X21iY2hhci4KCShjcHBfcmVhZF9tYWluX2ZpbGUpOiBTZXQgbGluZSB0byAxIGVhcmxpZXIuCgkocG9zdF9vcHRpb25zKTogLXRyYWRpdGlvbmFsLWNwcCBkb2Vzbid0IHdhbnQgdHJpZ3JhcGhzLgoJKiBjcHBsZXguYyAoTVVMVElCWVRFX0NIQVJTKTogUmVtb3ZlIGNvZGUgcHJlZGljYXRlZCBvbiB0aGlzLgoJKGFkZF9saW5lX25vdGUsIF9jcHBfY2xlYW5fbGluZSwgX2NwcF9wcm9jZXNzX2xpbmVfbm90ZXMsCglfY3BwX2dldF9mcmVzaF9saW5lKTogTmV3LgoJKGhhbmRsZV9uZXdsaW5lLCBza2lwX2VzY2FwZWRfbmV3bGluZXMsIHRyaWdyYXBoX3AsCgljb250aW51ZV9hZnRlcl9udWwsIF9jcHBfaW5pdF9tYmNoYXIpOiBSZW1vdmUuCgkoZ2V0X2VmZmVjdGl2ZV9jaGFyKTogVXBkYXRlLgoJKF9jcHBfc2tpcF9ibG9ja19jb21tZW50KTogUmVuYW1lIGZyb20gc2tpcF9ibG9ja19jb21tZW50LCBzaW1wbGlmeS4KCShza2lwX2xpbmVfY29tbWVudCk6IFNpbXBsaWZ5LgoJKHNraXBfd2hpdGVzcGFjZSwgcGFyc2VfaWRlbnRpZmllciwgcGFyc2Vfc2xvdywgcGFyc2VfbnVtYmVyLAoJcGFyc2Vfc3RyaW5nKTogVXBkYXRlLgoJKGNwcF9sZXhfZGlyZWN0KTogVXNlIGNsZWFuIGxpbmVzIGFuZCBwcm9jZXNzIGxpbmUgbm90ZXMuICBVcGRhdGUuCgkoY3BwX2ludGVycHJldF9jaGFyY29uc3QpOiBObyBNVUxUSUJZVEVfQ0hBUlMuCgkqIGNwcGxpYi5jIChwcmVwYXJlX2RpcmVjdGl2ZV90cmFkKTogQ2FsbCBzY2FuX291dF9sb2dpY2FsX2xpbmUKCWRpcmVjdGx5LgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IERvbid0IHNldCBzYXZlZF9mbGFncy4KCShydW5fZGlyZWN0aXZlLCBkZXN0cmluZ2l6ZV9hbmRfcnVuLCBjcHBfZGVmaW5lLCBjcHBfZGVmaW5lX2J1aWx0aW4sCgljcHBfdW5kZWYsIGhhbmRsZV9hc3NlcnRpb24sIGNwcF9wdXNoX2J1ZmZlcik6IFVwZGF0ZS4KCShfY3BwX3BvcF9idWZmZXIpOiBGcmVlIG5vdGVzLgoJKiBjcHBtYWNyby5jIChidWlsdGluX21hY3JvLCBwYXN0ZV90b2tlbnMpOiBcbiB0ZXJtaW5hdGUgYnVmZmVyLgoJKiBjcHBwY2guYyAoY3BwX3JlYWRfc3RhdGUpOiBcbiB0ZXJtaW5hdGUgYnVmZmVyLgoJKiBjcHB0cmFkLmMgKHNraXBfZXNjYXBlZF9uZXdsaW5lcywgaGFuZGxlX25ld2xpbmUpOiBSZW1vdmUuCgkoY29weV9jb21tZW50KTogVXNlIF9jcHBfc2tpcF9ibG9ja19jb21tZW50LgoJKHNraXBfd2hpdGVzcGFjZSwgbGV4X2lkZW50aWZpZXIsIF9jcHBfcmVhZF9sb2dpY2FsX2xpbmVfdHJhZCk6CglTaW1wbGlmeS4KCShfY3BwX292ZXJsYXlfYnVmZmVyLCBfY3BwX3JlbW92ZV9vdmVybGF5LCBwdXNoX3JlcGxhY2VtZW50X3RleHQsCglzYXZlX3JlcGxhY2VtZW50X3RleHQpOiBVcGRhdGUuCgkoc2Nhbl9vdXRfbG9naWNhbF9saW5lKTogVXBkYXRlIHRvIHVzZSBjbGVhbiBsaW5lcyBhbmQgcHJvY2VzcwoJbGluZSBub3Rlcy4KCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZS4KCjIwMDMtMDQtMTggIERvdWdsYXMgQiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIHVud2luZC1kdzItZmRlLmMgKF9fcmVnaXN0ZXJfZnJhbWVfaW5mb19iYXNlcyk6IENoZWNrIGZvcgoJbnVsbCBiZWdpbiBwYXJhbWV0ZXIgKGFzIHdlbGwgYXMgcG9pbnRlciB0byBudWxsKS4KCShfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mb19iYXNlcyk6IExpa2V3aXNlLgoKMjAwMy0wNC0xOCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGZ1bmN0aW9uLmMgKHB1cmdlX2FkZHJlc3NvZl8xKTogRm9yIEFERFJFU1NPRiwgc2VlIGlmIFNVQiBpcyBhCgloYXJkIG9yIHZpcnR1YWwgcmVnaXN0ZXIgYW5kIGNvcHkgaW50byBwc2V1ZG8gaWYgcmVwbGFjZW1lbnQgZmFpbHMuCgoJKiBjZmdjbGVhbnVwLmMgKGZsb3dfZmluZF9jcm9zc19qdW1wKTogVXNlIElOU05fUCwgbm90IGFjdGl2ZV9pbnNuX3AuCgoJKiBleHBtZWQuYyAobWFza19ydHgpOiBBdm9pZCB1bmRlZmluZWQgc2hpZnRzIGZvciBCSVRTSVpFIG9mIDAuCgoyMDAzLTA0LTE4ICBPbGl2aWVyIEhhaW5xdWUgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogTW92ZSBzcGVjaWFsIGNhc2UgZm9yIGNvbnN0cnVjdG9yIGNhbGxzCgl0byByaWdodCBwbGFjZS4gRW5zdXJlcyBjb25zdHJ1Y3RvciBjYWxscyB1c2VkIHRvIGluaXRpYWxpemUKCWFyZ3VtZW50cyBnZXQgYSBjbGVhbiBvdXRnb2luZyBhcmd1bWVudCBibG9jayBmb3IgdGhlbXNlbHZlcy4KCU1vdmUgY2hlY2sgZm9yIHN0YWNrIGRlYWxsb2NhdGlvbiBjb21wbGV0ZW5lc3MgdW50aWwgYWZ0ZXIgbGFzdAoJZGVhbGxvY2F0aW9uLiAgQWRkIHN0YWNrX3BvaW50ZXJfZGVsdGEgdG8gc2V0IG9mIHN0YXRlCgl2YXJpYWJsZXMgc2F2ZWQgYW5kIHJlc3RvcmVkIGFsb25nIHdpdGggY3VycmVudCBzdGFja19sZXZlbC4KCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogRW5zdXJlIG5vbi1jb25zdCBhY3R1YWxzCglkb24ndCBlbmQgdXAgY29uc3QgaW4gdGhlIGNhbGxlcidzIGZsb3cgYWZ0ZXIgY29udmVyc2lvbiB0byBwb3NzaWJseQoJY29uc3QgZm9ybWFsIHR5cGUuCgoyMDAzLTA0LTE4ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBUcmVhdCBhbGwgKl9NT0RfRVhQUgoJYW5kICpfRElWX0VYUFIgYXMgVFJVTkNfKl9FWFBSLgoKMjAwMy0wNC0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNmZ3J0bC5jICh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXApOiBDcmVhdGUgYSBiYXNpYyBibG9jawoJZm9yIG9ycGhhbmVkIGp1bXAgdGFibGVzLgoKMjAwMy0wNC0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlbG9hZDEuYzogUmV2ZXJ0IG15IHByZXZpb3VzIHBhdGNoIG9uIDIwMDItMDQtMTcuCgoyMDAzLTA0LTE4ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBkb2MvY29udHJpYi50ZXhpIChDb250cmlidXRvcnMpOiBQcmVmZXIgImJ1ZyBmaXgiIG92ZXIgImJ1Z2ZpeCIuCglBZGQgU2VnaGVyIEJvZXNzZW5rb29sLgoKMjAwMy0wNC0xOCAgQWxleGFuZGVyIFNvdGlyb3YgIDxzbHVuY2hvQG1pcml6bWEub3JnPgoKCVBSIGMvOTE3NwoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keSk6IERvbid0IGdhcmJhZ2UgY29sbGVjdCB0aGUgZnVuY3Rpb24KCWJvZHkgaWYgd2UgYXJlIGdvaW5nIHRvIGR1bXAgaXQgbGF0ZXIuCgoyMDAzLTA0LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKFNZTUJPTF9GTEFHX05FQVIsIFNZTUJPTF9GTEFHX1NBTUVHUCk6IFJlbW92ZS4KCShhbHBoYV9lbmRfZnVuY3Rpb24pOiBEb24ndCBzZXQgdGhlbS4KCShkZWNsX2luX3RleHRfc2VjdGlvbik6IFJlbW92ZS4KCShhbHBoYV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogUmVtb3ZlLgoJKHNhbWVncF9mdW5jdGlvbl9vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUYgTE9DQUxfUCBhbmQgRVhURVJOQUxfUC4KCShkaXJlY3RfY2FsbF9vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfREVDTCBhbmQgY29tcGFyZSBhY3R1YWwKCXNlY3Rpb25zLCByYXRoZXIgdGhhbiBkZWNsX2luX3RleHRfc2VjdGlvbiByZXN1bHRzLgoKMjAwMy0wNC0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBydGxhbmFsLmMgKHJlZ19vdmVybGFwX21lbnRpb25lZF9wKTogSGFuZGxlIFpFUk9fRVhUUkFDVAoJYW5kIFNJR05fRVhUUkFDVC4KCjIwMDMtMDQtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzc2NzUKCSogYy10eXBlY2suYyAoYnVpbGRfZXh0ZXJuYWxfcmVmKTogU2V0IHRoZSBERUNMX05PTkxPQ0FMIGZsYWcKCW9uIFZBUl9ERUNMLCBQQVJNX0RFQ0wgYW5kIEZVTkNUSU9OX0RFQ0wgZnJvbSB3aXRoaW4KCW5lc3RlZCBmdW5jdGlvbnMgaWYgdGhleSByZWZlciB0byBkZWNsYXJhdGlvbnMgZnJvbSBwYXJlbnQgZnVuY3Rpb25zLgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogRG9uJ3QgcHV0IGF1dG9tYXRpYyB2YXJpYWJsZXMgaW4gcmVnaXN0ZXJzCglpZiB0aGUgREVDTF9OT05MT0NBTCBmbGFnIGlzIHNldC4KCjIwMDMtMDQtMTggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGdjc2UuYyAoY29tcHV0ZV9sZF9tb3Rpb25fbWVtcyk6IEZvciBNRU0gZGVzdGluYXRpb25zLCBvbmx5Cgljb25zaWRlciB0aG9zZSB0byBiZSBtb3ZhYmxlIHdoZXJlIHRoZSBzb3VyY2UgbWF0Y2hlcwoJd2FudF90b19nY3NlX3AuCgkodXBkYXRlX2xkX21vdGlvbl9zdG9yZXMpOiBJbiBjb21tZW50LCByZWZlciB0bwoJY29tcHV0ZV9sZF9tb3Rpb25fbWVtcyBmb3IgdmFsaWRpdHkgb2YgcmVwbGFjZW1lbnQuCgpGcmkgQXByIDE4IDAxOjI4OjUxIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2Nvdi1kdW1wLmMgKHRhZ19zdW1tYXJ5KTogUmVtb3ZlIG1heF9zdW0KCSogZ2Nvdi1pby5oIChnY292X3N1bW1hcnksIGdjb3Zfd3JpdGVfc3VtbWFyeSwKCWdjb3ZfcmVhZF9zdW1tYXJ5KTogS2lsbCBtYXhfc3VtLgoJKiBsaWJnY292LmMgKGdjb3ZfZXhpdCk6IERvIG9uZSBwYXNzIG92ZXIgdGhlIGRhdGEuICBNYWtlIGVycm9yCgltZXNzYWdlIG1vcmUgdmVyYm9zZS4KCgkqIGVtaXQtcnRsLmMgKHN1YnJlZ19oYXJkX3JlZ25vKTogIENoZWNrIHRoYXQgcmVnaXN0ZXIgaXMKCXJlcHJlc2VudGFibGUuCgoJKiByZWxvYWQuYyAocmVsb2FkX2lubmVyX3JlZ19vZl9zdWJyZWcpOiAgV2hlbiByZWdpc3RlciBpcyBub3QKCXJlcHJlc2VudGFibGUsIHJlbG9hZCB0aGUgd2hvbGUgdGhpbmcuCgkoZmluZF9yZWxvYWRzKTogTGlrZXdzaWUuCgkqIHJ0bGFuYWwuYyAoc3VicmVnX3JlcHJlc2VudGFibGVfcCk6ICBOZXcgZnVuY3Rpb24uCgoJKiBwcm9maWxlLmMgKGNvbXB1dGVfYnJhbmNoX3Byb2JhYmlsaXRpZXMpOiAgQ2xlYW51cCBzYW5pdHkgY2hlY2tpbmc7CglhbGxvdyBuZWdhdGl2ZSBwcm9iYWJpbGl0aWVzIGZvciBlZGdlcyBmcm9tIHRoZSBjYWxsIHRvIGV4aXQuCgkoYnJhbmNoX3Byb2IpOiBEbyBub3QgYWRkIGZha2UgZWRnZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IG1heSByZXR1cm4KCXR3aWNlLgoKMjAwMy0wNC0xNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiB0b3BsZXYuYyAodGFyZ2V0X29wdGlvbnMpOiBBZGQgdmFsdWUgZmllbGQuCgkoc2V0X3RhcmdldF9zd2l0Y2gpOiBIYW5kbGUgdGFyZ2V0IG9wdGlvbnMgd2l0aAl2YWx1ZXMuCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBob3cgZml4ZWQgdnMgdmFyaWFibGUgdGFyZ2V0CglvcHRpb25zIHdvcmsuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oLCBjb25maWcvYXJjL2FyYy5oLCBjb25maWcvYXZyL2F2ci5oLAoJY29uZmlnL2M0eC9jNHguaCwgY29uZmlnL2NyaXMvYW91dC5oLCBjb25maWcvY3Jpcy9jcmlzLmgsCgljb25maWcvZDMwdi9kMzB2LmgsIGNvbmZpZy9kc3AxNnh4L2RzcDE2eHguaCwKCWNvbmZpZy9mcnYvZnJ2LmgsIGNvbmZpZy9pMzg2L2kzODYuaCwgY29uZmlnL2lhNjQvaWE2NC5oLAoJY29uZmlnL20zMnIvbTMyci5oLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmgsCgljb25maWcvbTY4ay9tNjhrLmgsIGNvbmZpZy9tODhrL204OGsuaCwgY29uZmlnL21jb3JlL21jb3JlLmgsCgljb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9tbWl4L21taXguaCwgY29uZmlnL3BhL3BhLmgsCgljb25maWcvcnM2MDAwL3JzNjAwMC5oLCBjb25maWcvcnM2MDAwL3N5c3Y0LmgsCgljb25maWcvczM5MC9zMzkwLmgsIGNvbmZpZy9zcGFyYy9zcGFyYy5oLCBjb25maWcvdjg1MC92ODUwLmg6CglBZGQgdmFsdWUgaW5pdGlhbGl6ZXIgdG8gdGFyZ2V0IG9wdGlvbnMuCgoyMDAzLTA0LTA3ICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogY3BwcGNoLmMgKGNwcF92YWxpZF9zdGF0ZSk6IFVuY29uZGl0aW9uYWxseSBpbml0aWFsaXplIG5sLgoKMjAwMy0wNC0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHJlbG9hZDEuYyAobW92ZTJhZGRfbGFzdF9jYzApOiBOZXcuCgkocmVsb2FkX2NzZV9tb3ZlMmFkZCk6IERldGVjdCBpbXBsaWNpdCBzZXRzLgoJKG1vdmUyYWRkX25vdGVfc3RvcmUpOiBOb3RpY2UgYSBzdG9yZSBpbnRvIGNjMC4KCjIwMDMtMDQtMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGMvMTAzNzUKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFByZXNlcnZlICJjb25zdCIgYW5kICJub3JldHVybiIKCWZ1bmN0aW9uIGF0dHJpYnV0ZXMuCgoyMDAzLTA0LTE3ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChUZXN0IFN1aXRlcyk6IERvY3VtZW50IHN1cHBvcnQgZm9yIHRlc3RpbmcKCWJpbmFyeSBjb21wYXRpYmlsaXR5IChtb3ZlZCBmcm9tIHRlc3RzdWl0ZS9SRUFETUUuY29tcGF0KS4KCjIwMDMtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfaW5fc21hbGxfZGF0YV9wKTogRGlzYWxsb3cgc3RyaW5ncy4KCjIwMDMtMDQtMTcgIFNpbW9uIExhdyAgPHNmbGxhd0BlbmdtYWlsLnV3YXRlcmxvby5jYT4KCgkqIGRvYy9pbmNsdWRlL2dwbC50ZXhpOiBGaXggZG91YmxlLXNwYWNpbmcgYWZ0ZXIgIk1BIiB0byBtYXRjaAoJdGhlIG9uZSBwcm92aWRlZCBieSB0aGUgRlNGLgoKMjAwMy0wNC0xNyAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL2luc3RhbGwudGV4aSAoQmluYXJpZXMpOiBVcGRhdGUgVVJMIGFuZCBsaXN0IG9mIHBsYXRmb3JtcwoJcHJvdmlkZWQgYnkgZnRwLnRoZXdyaXR0ZW53b3JkLmNvbS4KCjIwMDMtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jICh4dGVuc2FfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZS4KCShjYWxsX2luc25fb3BlcmFuZCk6IFVzZSBTWU1CT0xfUkVGX0xPQ0FMX1AuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLm1kIChjYWxsLCBjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDAzLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3Y4NTAvdjg1MC5jIChwcmludF9vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfW1pTVF1EQS4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBMaWtld2lzZS4KCShlcF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgoJKHNwZWNpYWxfc3ltYm9scmVmX29wZXJhbmQpOiBMaWtld2lzZS4KCSh2ODUwX2VuY29kZV9kYXRhX2FyZWEpOiBVc2UgU1lNQk9MX1JFRl9GTEFHUy4KCSh2ODUwX2VuY29kZV9zZWN0aW9uX2luZm8pOiBDYWxsIGRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mby4KCSh2ODUwX3N0cmlwX25hbWVfZW5jb2RpbmcpOiBSZW1vdmUuCgkqIGNvbmZpZy92ODUwL3Y4NTAuaCAoRVhUUkFfQ09OU1RSQUlOVCk6IFVzZSBTWU1CT0xfUkVGX1taU1RdREEuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IFJlbW92ZS4KCShaREFfTkFNRV9GTEFHX0NIQVIsIFpEQV9OQU1FX1ApOiBSZW1vdmUuCgkoU0RBX05BTUVfRkxBR19DSEFSLCBTREFfTkFNRV9QKTogUmVtb3ZlLgoJKFREQV9OQU1FX0ZMQUdfQ0hBUiwgVERBX05BTUVfUCk6IFJlbW92ZS4KCShFTkNPREVEX05BTUVfUCk6IFJlbW92ZS4KCShTWU1CT0xfRkxBR19aREEsIFNZTUJPTF9SRUZfWkRBX1ApOiBOZXcuCgkoU1lNQk9MX0ZMQUdfU0RBLCBTWU1CT0xfUkVGX1NEQV9QKTogTmV3LgoJKFNZTUJPTF9GTEFHX1REQSwgU1lNQk9MX1JFRl9UREFfUCk6IE5ldy4KCjIwMDMtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2VuY29kZV9zZWN0aW9uX2luZm8pOiBLaWxsLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCAoQVNNX09VVFBVVF9TWU1CT0xfUkVGKTogVXNlCglTWU1CT0xfUkVGX0ZVTkNUSU9OX1AuCgoyMDAzLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2VuY29kZV9zZWN0aW9uX2luZm8pOiBSZW1vdmUuCgkoZGF0YV9zZWdtZW50X29wZXJhbmQpOiBVc2UgU1lNQk9MX1JFRl9GVU5DVElPTl9QLgoJKHRleHRfc2VnbWVudF9vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDAzLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKGdlbl9kYXRhbGFiZWxfcmVmKTogRG9uJ3QgYWRkIFNIX0RBVEFMQUJFTF9FTkNPRElORy4KCSh0bHNfc3ltYm9saWNfb3BlcmFuZCk6IFVzZSBTWU1CT0xfUkVGX1RMU19NT0RFTC4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogVXNlIFNZTUJPTF9SRUZfTE9DQUxfUC4KCShzaF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogUmVtb3ZlLgoJKHNoX3N0cmlwX25hbWVfZW5jb2RpbmcpOiBSZW1vdmUuCgkqIGNvbmZpZy9zaC9zaC5oIChTSF9EQVRBTEFCRUxfRU5DT0RJTkcpOiBSZW1vdmUuCgkoREFUQUxBQkVMX1NZTU5BTUVfUCwgU1RSSVBfREFUQUxBQkVMX0VOQ09ESU5HKTogUmVtb3ZlLgoJKFNIX1RMU19FTkNPRElORywgVExTX1NZTU5BTUVfUCwgU1RSSVBfVExTX0VOQ09ESU5HKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9TWU1CT0xfUkVGKTogVXNlIFNZTUJPTF9SRUZfRlVOQ1RJT05fUC4KCSogY29uZmlnL3NoL3NoLm1kICgqKTogVXNlIFNZTUJPTF9SRUZfTE9DQUxfUC4KCjIwMDMtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKFNZTUJPTF9GTEFHX0FMSUdOMSk6IE5ldy4KCSh0bHNfbW9kZWxfY2hhcnMpOiBSZW1vdmUuCgkobGFybF9vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfRkxBR1MuCgkodGxzX3N5bWJvbGljX29wZXJhbmQpOiBVc2UgU1lNQk9MX1JFRl9UTFNfTU9ERUwuCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFVzZSBTWU1CT0xfUkVGX0xPQ0FMX1AuCgkoczM5MF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCShzMzkwX2VtaXRfcHJvbG9ndWUpOiBTZXQgU1lNQk9MX0ZMQUdfTE9DQUwgYXMgbmVlZGVkLgoJKHMzOTBfZnVuY3Rpb25fcHJvZmlsZXIpOiBMaWtld2lzZS4KCShzMzkwX2VuY29kZV9zZWN0aW9uX2luZm8pOiBVc2UgZGVmYXVsdF9lbmNvZGVfc2VjdGlvbl9pbmZvCglhbmQgU1lNQk9MX0ZMQUdfQUxJR04xLgoJKHMzOTBfc3RyaXBfbmFtZV9lbmNvZGluZyk6IFJlbW92ZS4KCSogY29uZmlnL3MzOTAvczM5MC5oIChBU01fT1VUUFVUX0xBQkVMUkVGKTogUmVtb3ZlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChjYWxsLCBjYWxsX3ZhbHVlKTogVXNlIFNZTUJPTF9SRUZfTE9DQUxfUC4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IFNldCBTWU1CT0xfRkxBR19MT0NBTCBhcyBuZWVkZWQuCgoyMDAzLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL25zMzJrL25zMzJrLmMgKG5zMzJrX2VuY29kZV9zZWN0aW9uX2luZm8pOiBSZW1vdmUuCgkoZ2xvYmFsX3N5bWJvbGljX3JlZmVyZW5jZV9tZW50aW9uZWRfcCk6IFVzZSBTWU1CT0xfUkVGX0xPQ0FMX1AuCgkocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogTGlrZXdpc2UuCgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaCAoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogQWRkIENMQVNTIGFyZ3VtZW50LgoJKiBjb25maWcvbnMzMmsvbnMzMmsuYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBEb24ndCBjaGVjawoJZmxhZ191bnJvbGxfbG9vcHMuCgoyMDAzLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLmMgKG1jb3JlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBEb24ndCBzZXQKCVNZTUJPTF9SRUZfRkxBRy4KCjIwMDMtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoU1lNQk9MX0ZMQUdfTUFDSF9ERVBfU0hJRlQpOiBOZXcuCgoJKiBjb25maWcvbTMyci9tMzJyLmMgKFNZTUJPTF9GTEFHX01PREVMX1NISUZUKTogTmV3LgoJKFNZTUJPTF9SRUZfTU9ERUwpOiBOZXcuCgkoTElUX05BTUVfUCk6IE1vdmUgZnJvbSBtMzJyLmguCgkobTMycl9zZWxlY3Rfc2VjdGlvbik6IFJlbW92ZS4KCShtMzJyX2VuY29kZV9zZWN0aW9uX2luZm8pOiBVc2UgU1lNQk9MX1JFRl9GTEFHUy4KCShtMzJyX3N0cmlwX25hbWVfZW5jb2RpbmcpOiBSZW1vdmUuCgkobTMycl9pbl9zbWFsbF9kYXRhX3ApOiBOZXcuCgkoc21hbGxfZGF0YV9vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfU01BTExfUC4KCShhZGRyMjRfb3BlcmFuZCk6IFVzZSBTWU1CT0xfUkVGX01PREVMLgoJKGNhbGwyNl9vcGVyYW5kKTogTGlrZXdpc2UuCgkoYWRkcjMyX29wZXJhbmQpOiBUaWR5LgoJKG0zMnJfcHJpbnRfb3BlcmFuZCk6IFVzZSBIT1NUX1dJREVfSU5UX1BSSU5UX0hFWC4KCSogY29uZmlnL20zMnIvbTMyci5oIChST0RBVEFfU0VDVElPTl9BU01fT1ApOiBSZW1vdmUuCgkoU0RBVEFfU0VDVElPTl9BU01fT1AsIFNCU1NfU0VDVElPTl9BU01fT1ApOiBSZW1vdmUuCgkoUkVBRE9OTFlfREFUQV9TRUNUSU9OX0FTTV9PUCk6IFJlbW92ZS4KCShFWFRSQV9TRUNUSU9OUywgRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBSZW1vdmUuCgkoU0RBVEFfU0VDVElPTl9GVU5DVElPTiwgU0JTU19TRUNUSU9OX0ZVTkNUSU9OKTogUmVtb3ZlLgoJKFRBUkdFVF9BU01fU0VMRUNUX1NFQ1RJT04pOiBSZW1vdmUuCgkoU0RBVEFfRkxBR19DSEFSLCBNRURJVU1fRkxBR19DSEFSLCBMQVJHRV9GTEFHX0NIQVIpOiBSZW1vdmUuCgkoU0RBVEFfTkFNRV9QLCBTTUFMTF9OQU1FX1AsIE1FRElVTV9OQU1FX1ApOiBSZW1vdmUuCgkoTEFSR0VfTkFNRV9QLCBFTkNPREVEX05BTUVfUCk6IFJlbW92ZS4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogUmVtb3ZlLgoKMjAwMy0wNC0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoaXNfcmVnZmlsZV9hZGRyZXNzKTogVXNlIFNZTUJPTF9SRUZfRlVOQ1RJT05fUC4KCShlbmNvZGVfc2VjdGlvbl9pbmZvKTogUmVtb3ZlLgoJKiBjb25maWcvaXAyay9pcDJrLXByb3Rvcy5oOiBVcGRhdGUuCgoyMDAzLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKGRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IERvbid0IHNldAoJU1lNQk9MX0ZMQUdfRVhURVJOQUwgaWYgbm90IFRSRUVfUFVCTElDLgoJKiBjb25maWcvaTM3MC9pMzcwLmMgKGkzNzBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZS4KCSogY29uZmlnL2kzNzAvaTM3MC5oIChDT05TVEFOVF9BRERSRVNTX1ApOiBVc2UgU1lNQk9MX1JFRl9FWFRFUk5BTF9QLgoJKFBSSU5UX09QRVJBTkQsIFBSSU5UX09QRVJBTkRfQUREUkVTUyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM3MC9pMzcwLm1kIChtb3ZzaSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2kzNzAvdC1pMzcwOiBBZGQgbWlzc2luZyBiYWNrc2xhc2guCgoyMDAzLTA0LTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2ludm9rZS50ZXhpIChpbmxpbmUtbGltaXQpOiBGaXggcGFzdG8uCgoyMDAzLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKFNZTUJPTF9GTEFHX0ZVTkNWRUNfRlVOQ1RJT04pOiBOZXcuCgkoc21hbGxfY2FsbF9pbnNuX29wZXJhbmQpOiBVc2UgaXQuCgkoU1lNQk9MX0ZMQUdfRUlHSFRCSVRfREFUQSk6IE5ldy4KCShoODMwMF9laWdodGJpdF9jb25zdGFudF9hZGRyZXNzX3ApOiBVc2UgaXQuCgkoU1lNQk9MX0ZMQUdfVElOWV9EQVRBKTogTmV3LgoJKGg4MzAwX3RpbnlfY29uc3RhbnRfYWRkcmVzc19wKTogVXNlIGl0LgoJKGg4MzAwX2VuY29kZV9sYWJlbCwgaDgzMDBfc3RyaXBfbmFtZV9lbmNvZGluZyk6IFJlbW92ZS4KCShoODMwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogU2V0IFNZTUJPTF9SRUZfRkxBR1MuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChUSU5ZX0RBVEFfTkFNRV9QKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBSZW1vdmUuCgoyMDAzLTA0LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuYyAoc3ltYm9sX3JlZl9zbWFsbF9kYXRhX3ApOiBSZW1vdmUuICBSZXBsYWNlCglhbGwgdXNlcnMgd2l0aCBTWU1CT0xfUkVGX1NNQUxMX1AuCgkoY29uc3Rfc21hbGxfZGF0YV9wKTogVXNlIFNZTUJPTF9SRUZfU01BTExfUC4KCShmcnZfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZS4KCShmcnZfc3RyaXBfbmFtZV9lbmNvZGluZyk6IFJlbW92ZS4KCShmcnZfaW5fc21hbGxfZGF0YV9wKTogTWVyZ2UgdGVzdHMgZnJvbSBlbmNvZGVfc2VjdGlvbl9pbmZvLgoJKGZydl9wcmludF9vcGVyYW5kKTogVXNlICdAJyBub3QgU0RBVEFfRkxBR19DSEFSLgoJKiBjb25maWcvZnJ2L2Zydi5oIChTREFUQV9GTEFHX0NIQVIpOiBSZW1vdmUuCgkoU0RBVEFfTkFNRV9QKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKTogVXNlIFNJWkUgbm90IFNEQVRBX05BTUVfUC4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogUmVtb3ZlLgoJKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IFVzZSAnQCcgbm90IFNEQVRBX0ZMQUdfQ0hBUi4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9hc21fb3V0X2NvbnN0cnVjdG9yKTogTmV3LgoJKGZydl9hc21fb3V0X2Rlc3RydWN0b3IpOiBOZXcuCgkqIGNvbmZpZy9mcnYvZnJ2LmggKENUT1JTX1NFQ1RJT05fQVNNX09QKTogTmV3LgoJKERUT1JTX1NFQ1RJT05fQVNNX09QKTogTmV3LgoJKEFTTV9PVVRQVVRfQ09OU1RSVUNUT1IpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9ERVNUUlVDVE9SKTogUmVtb3ZlLgoKMjAwMy0wNC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9jcmlzL2NyaXMuYyAoY3Jpc19nb3RsZXNzX3N5bWJvbCwgY3Jpc19nb3Rfc3ltYm9sKTogVXNlCglTWU1CT0xfUkVGX0xPQ0FMX1A7IGFib3J0IGlmIG5vdCBwaWMuCgkoY3Jpc19lbmNvZGVfc2VjdGlvbl9pbmZvKTogUmVtb3ZlLgoKMjAwMy0wNC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogUmVtb3ZlLgoJKGM0eF9UX2NvbnN0cmFpbnQpOiBVc2UgU1lNQk9MX1JFRl9GVU5DVElPTl9QLgoKCSogY29uZmlnL2M0eC9jNHguaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWNsYXJlCglmbGFnX2lubGluZV90cmVlcy4KCjIwMDMtMDQtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZS4KCShhdnJfaW5zZXJ0X2F0dHJpYnV0ZXMpOiBOZXcuCgkocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogVXNlIFNZTUJPTF9SRUZfRlVOQ1RJT05fUC4KCShhdnJfYXNzZW1ibGVfaW50ZWdlcik6IExpa2V3aXNlLgoKMjAwMy0wNC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGFyYy5jIChhcmNfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFJlbW92ZS4KCShhcmNfYXNzZW1ibGVfaW50ZWdlcik6IFVzZSBTWU1CT0xfUkVGX0ZVTkNUSU9OX1AuCgkoYXJjX3ByaW50X29wZXJhbmQsIGFyY19wcmludF9vcGVyYW5kX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogYXJjLmggKEVYVFJBX0NPTlNUUkFJTlQpOiBMaWtld2lzZS4KCjIwMDMtMDQtMTYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy1zZW1hbnRpY3MuYyAoZmluZF9yZWFjaGFibGVfbGFiZWwpOiBOZXcgZnVuY3Rpb24gdG8gZmluZCBhCglwb3RlbnRpYWxseSByZWFjaGFibGUgbGFiZWwgaW4gYW4gZXhwcmVzc2lvbi4KCShleHBhbmRfdW5yZWFjaGFibGVfaWZfc3RtdCk6IFNpbWlsYXIgdG8gZXhwYW5kX2lmX3N0bXQgYnV0Cglhc3N1bWVzIHRoZSBzdGFydCBvZiB0aGUgSUZfU1RNVCBpcyB1bnJlYWNoYWJsZSAoZGVhZCkgY29kZS4KCShleHBhbmRfdW5yZWFjaGFibGVfc3RtdCk6IFNpbWlsYXIgdG8gZXhwYW5kX3N0bXQgYnV0IGFzc3VtZXMKCXRoZSBzdGFydCBvZiB0aGUgc3RhdGVtZW50IGxpc3QgaXMgdW5yZWFjaGFibGUgKGRlYWQpIGNvZGUuCgkoZ2VucnRsX2lmX3N0bXQpOiAgSWYgdGhlIGNvbnRyb2xsaW5nIGV4cHJlc3Npb24gb2YgdGhlIElGCglpcyBjb25zdGFudCwgdXNlIGV4cGFuZF91bnJlYWNoYWJsZV9zdG10IGZvciB0aGUgVEhFTiBvciBFTFNFCgljbGF1c2UgYXMgYXBwcm9wcmlhdGUuCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogIFVzZSBleHBhbmRfdW5yZWFjaGFibGVfc3RtdCB0byBleHBhbmQKCXRoZSBib2R5IG9mIGEgU1dJVENIIHN0YXRlbWVudC4KCShleHBhbmRfc3RtdCk6IFRoZSBjb2RlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBhICJyZXR1cm4iLAoJImJyZWFrIiwgImNvbnRpbnVlIiBvciAiZ290byIgaXMgdW5yZWFjaGFibGUuCgkqIE1ha2VmaWxlLmluIChjLXNlbWFudGljcy5vKTogRGVwZW5kIHVwb24gdHJlZS1pbmxpbmUuaC4KCjIwMDMtMDQtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoTUVNX0FMSUFTX1NFVCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiBkb2MvcnRsLnRleGkgKFNwZWNpYWwgQWNjZXNzb3JzKTogTmV3IG5vZGUuCgkoU1lNQk9MX1JFRl9GTEFHKTogTm90ZSByZWxhdGlvbnNoaXAgd2l0aCBTWU1CT0xfUkVGX0ZMQUdTLgoKMjAwMy0wNC0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2Vfbm9vcF9zZXRfcCk6IFJldHVybiBmYWxzZSBpZiBtb2RlIG9mCglTRVRfREVTVCBpcyBub3QgdGhlIHNhbWUgYXMgdGhhdCByZXR1cm5lZCBieS4uLgoJKiBjc2VsaWIuaCAoY3NlbGliX3JlZ19zZXRfbW9kZSk6IC4uLiBuZXcgZnVuY3Rpb24uCgkqIGNzZWxpYi5jIChjc2VsaWJfcmVnX3NldF9tb2RlKTogRGVmaW5lIGl0LgoJKFJFR19WQUxVRVMpOiBEb2N1bWVudCBzZW1hbnRpY3Mgb2YgZmlyc3QgZWxlbWVudCBhcyBzZXQgbW9kZS4KCShjc2VsaWJfc3Vic3RfdG9fdmFsdWVzKTogU2tpcCBmaXJzdCBlbGVtZW50IGlmIEVMVCBpcyBOVUxMLgoJKGNzZWxpYl9sb29rdXApOiBMaWtld2lzZS4gIEluc2VydCBwYXN0IHRoZSBmaXJzdCBlbGVtZW50LgoJKGNzZWxpYl9pbnZhbGlkYXRlX3JlZ25vKTogTlVMTGlmeSBmaXJzdCBlbGVtZW50LgoJKGNzZWxpYl9yZWNvcmRfc2V0KTogU2V0IGZpcnN0IGVsZW1lbnQuCgoyMDAzLTA0LTE2ICBPbGl2aWVyIEhhaW5xdWUgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIHRyZWUuYyAoc2tpcF9zaW1wbGVfYXJpdGhtZXRpY3NfYXQsIHNhdmVkX2V4cHJfcCk6IE5ldyBmdW5jdGlvbnMuCgkoc2F2ZV9leHByKTogUmVwbGFjZSBsb29wIGJ5IGNhbGwgdG8gc2tpcF9zaW1wbGVfYXJpdGhtZXRpY3NfYXQuCgkqIHRyZWUuaDogQWRkIHByb3RvdHlwZXMgZm9yIHRoZSB0d28gbmV3IGZ1bmN0aW9ucy4KCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeV9vcF93aXRoX2NvbmRpdGlvbmFsX2FyZyk6IFJlcGxhY2UgdGVzdAoJdXBkYXRlcyBpbnRyb2R1Y2VkIGluIHRoZSBwcmV2aW91cyByZXZpc2lvbiBieSBjYWxsIHRvIHNhdmVkX2V4cHJfcC4KCSogc3Rvci1sYXlvdXQuYyAocHV0X3BlbmRpbmdfc2l6ZSk6IFVzZSBza2lwX3NpbXBsZV9hcml0aG1ldGljc19hdC4KCgkqIGV4cHIuYyAoc3RvcmVfZmllbGQpOiBGb3JjZSB1c2FnZSBvZiBiaXRmaWVsZCBpbnN0cnVjdGlvbnMgd2hlbgoJdGhlIGZpZWxkIHBvc2l0aW9uIHJlcXVpcmVzIGl0LCB3aGF0ZXZlciBTTE9XX1VOQUxJR05FRF9BQ0NFU1MuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQklUX0ZJRUxEX1JFRik6IGxpa2V3aXNlLgoKMjAwMy0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBtaWRkbGUtZW5kLzg4NjYKCSogY2ZndHJsLmMgKHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6IERvIG5vdCBkZWxldGUKCWp1bXB0YWJsZXMuCgoyMDAzLTA0LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChzZGF0YV9zeW1ib2xpY19vcGVyYW5kKTogVXNlCglTWU1CT0xfUkVGX1NNQUxMX1AgYW5kIFNZTUJPTF9SRUZfTE9DQUxfUC4KCSh0bHNfc3ltYm9saWNfb3BlcmFuZCk6IFVzZSBTWU1CT0xfUkVGX1RMU19NT0RFTC4KCShmdW5jdGlvbl9vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfRlVOQ1RJT05fUC4KCShpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MpOiBMaWtld2lzZS4KCShpYTY0X2Fzc2VtYmxlX2ludGVnZXIpOiBMaWtld2lzZS4KCShpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBSZW1vdmUuCgkoaWE2NF9zdHJpcF9uYW1lX2VuY29kaW5nKTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEVOQ09ERV9TRUNUSU9OX0lORk9fQ0hBUik6IFJlbW92ZS4KCSogY29uZmlnL2lhNjQvc3lzdjQuaCAoQVNNX09VVFBVVF9MQUJFTFJFRik6IERvbid0IHN0cmlwIGl0LgoKMjAwMy0wNC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChTWU1CT0xfRkxBR19ORUFSLCBTWU1CT0xfRkxBR19TQU1FR1ApOiBOZXcuCgkoc2FtZWdwX2Z1bmN0aW9uX29wZXJhbmQpOiBVc2UgU1lNQk9MX0ZMQUdfU0FNRUdQLgoJKGRpcmVjdF9jYWxsX29wZXJhbmQpOiBVc2UgU1lNQk9MX0ZMQUdfTkVBUi4KCShsb2NhbF9zeW1ib2xpY19vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfTE9DQUxfUC4KCShzbWFsbF9zeW1ib2xpY19vcGVyYW5kKTogVXNlIFNZTUJPTF9SRUZfU01BTExfUC4KCShnbG9iYWxfc3ltYm9saWNfb3BlcmFuZCk6IFNpbWlsYXJseS4KCSh0bHNfc3ltYm9saWNfb3BlcmFuZF8xKTogVXNlIFNZTUJPTF9SRUZfVExTX01PREVMLgoJKHRsc19zeW1ib2xpY19vcGVyYW5kX3R5cGUpOiBMaWtld2lzZS4KCShhbHBoYV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogVXNlIGRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mby4KCShhbHBoYV9zdHJpcF9uYW1lX2VuY29kaW5nKTogUmVtb3ZlLgoJKGdldF90bHNfZ2V0X2FkZHIpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShhbHBoYV9sZWdpdGltaXplX2FkZHJlc3MpOiAuLi4gaGVyZS4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19saWJjYWxsKTogVXNlIGluaXRfb25lX2xpYmZ1bmMuCgkoZ2V0X3NvbWVfbG9jYWxfZHluYW1pY19uYW1lXzEpOiBVc2UgU1lNQk9MX1JFRl9UTFNfTU9ERUwuCgkoYWxwaGFfaW5pdGlhbGl6ZV90cmFtcG9saW5lKTogVXNlIGluaXRfb25lX2xpYmZ1bmMuCgkoYWxwaGFfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IE1hcmsgdW51c2VkIHBhcmFtZXRlcnMuCgkoYWxwaGFfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBMaWtld2lzZS4KCShhbHBoYV9lbmRfZnVuY3Rpb24pOiBVc2UgU1lNQk9MX0ZMQUdfTkVBUiwgU1lNQk9MX0ZMQUdfU0FNRUdQLgoJKHVuaWNvc21rX3VuaXF1ZV9zZWN0aW9uKTogVXNlIGRlZmF1bHRfc3RyaXBfbmFtZV9lbmNvZGluZy4KCSh1bmljb3Nta19zc2liX25hbWUsIHVuaWNvc21rX291dHB1dF9leHRlcm5zKTogTGlrZXdpc2UuCgoyMDAzLTA0LTE2ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGQgdC1zcGUgZm9yIGVhYmlzcGUuCgoJKiBjb25maWcvcnM2MDAwL3Qtc3BlOiBOZXcuCgoyMDAzLTA0LTE2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCglSZS1hcHBseSB0aGlzIHBhdGNoOgoKCTIwMDItMDUtMTYgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCSAgKiBjb21iaW5lLmMgKGNhbnRfY29tYmluZV9pbnNuX3ApOiAgUmVlbmFibGUgY29tYmluYXRpb25zCgkgIGludm9sdmluZyBoYXJkIHJlZ3MgdW5sZXNzIENMQVNTX0xJS0VMWV9TUElMTEVEX1AuCgoyMDAzLTA0LTE2ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSLzEwMjcxCgkqIHBhLXByb3Rvcy5oIChmdW5jdGlvbl9hcmcpOiBSZW1vdmUgbGFzdCBhcmd1bWVudC4KCSogcGEuYyAoZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UuICBVc2UgQ1VNVUxBVElWRV9BUkdTIHN0cnVjdCBpbnN0ZWFkLgoJKiBwYS5oIChzdHJ1Y3QgaHBwYV9hcmdzKTogQWRkIG1lbWJlciBpbmNvbWluZy4KCShJTklUX0NVTVVMQVRJVkVfQVJHUywgSU5JVF9DVU1VTEFUSVZFX0lOQ09NSU5HX0FSR1MpOiBJbml0aWFsaXplCgltZW1iZXIgaW5jb21pbmcuCgkoRlVOQ1RJT05fQVJHKTogUmV2aXNlIGNhbGwgdG8gZnVuY3Rpb25fYXJnLgoJKEZVTkNUSU9OX0lOQ09NSU5HX0FSRyk6IERlbGV0ZS4KCjIwMDMtMDQtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW46IFVuaWZ5IHRoZSBjb2RlIHdoaWNoIGNyZWF0ZXMgc3ltbGlua3MgdG8gYQoJanVzdC1idWlsdCBhcywgbGQsIG9iamR1bXAsIGFuZCBubSB3aXRoIHRoZSBjb2RlIHRoYXQgZGV0ZWN0cwoJdGhlaXIgcHJlc2VuY2UgZm9yIHB1cnBvc2VzIG9mIGZlYXR1cmUgdGVzdHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDQtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50X2RlZik6IERvIG5vdCBjb25zdWx0CglDT05TVEFOVF9BRlRFUl9GVU5DVElPTl9QLiAgUmVtb3ZlIGFsbCBjb2RlIHByZWRpY2F0ZWQgb24gaXQuCgkoYWZ0ZXJfZnVuY3Rpb25fY29uc3RhbnRzLCBvdXRwdXRfYWZ0ZXJfZnVuY3Rpb25fY29uc3RhbnRzKTogRGVsZXRlLgoJKiBkb2MvdG0udGV4aTogRGVsZXRlIGRvY3VtZW50YXRpb24gb2YgQ09OU1RBTlRfQUZURVJfRlVOQ1RJT05fUC4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCwgY29uZmlnL21pcHMvbWlwcy5jCgkobWlwczE2X2NvbnN0YW50X2FmdGVyX2Z1bmN0aW9uX3ApOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMuaDogRGVsZXRlICNpZi0wLWVkIGRlZmluaXRpb24gb2YKCUNPTlNUQU5UX0FGVEVSX0ZVTkNUSU9OX1AuCgkqIGNvbmZpZy9kMzB2L2QzMHYuaCwgY29uZmlnL3N0b3JteTE2L3N0b3JteTE2Lmg6IFJlbW92ZQoJbWVudGlvbiBvZiBDT05TVEFOVF9BRlRFUl9GVU5DVElPTl9QIGluIGNvbW1lbnQuCgoyMDAzLTA0LTE1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHRyZWUuYyAobmV4dF9kZWNsX3VpZCk6IE1hcmsgd2l0aCBHVFkuCgkobmV4dF90eXBlX3VpZCk6IExpa2V3aXNlLgoKMjAwMy0wNC0xNSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJUFIgdGFyZ2V0Lzk1OTQ6CgkqIHNoLmMgKGJhcnJpZXJfYWxpZ24pOiBBbHNvIHJlY29nbml6ZSBzdHVmZl9kZWxheV9zbG90IGFzCglhbiBpbmRpY2F0b3IgdGhhdCBhIGJhcnJpZXIgd2FzIGNyZWF0ZWQgYnkgYnJhbmNoIHNwbGl0dGluZy4KCjIwMDMtMDQtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoaW1wbGljaXRseV9kZWNsYXJlKTogQ29weSBkZWNsYXJhdGlvbnMgdGhhdCBhcmUgZ29pbmcKCXRvIGJlIHBsYWNlZCBpbiBhIGxvY2FsIHNjb3BlLgoKMjAwMy0wNC0xNSAgSmFtZXMgQS4gTW9ycmlzb24gIDxqYTJtb3JyaUB1d2F0ZXJsb28uY2E+CgoJKiBpbnZva2UudGV4aSAoU3BlYyBGaWxlcyk6IFdyYXAgaWYtZXhpc3RzLWVsc2UgZXhhbXBsZS4KCShNQ29yZSk6IFJlbW92ZSBkdXBsaWNhdGUgQGl0ZW14IGVudHJpZXMgYW5kIEBvcGluZGV4IGVudHJpZXMuCgoyMDAzLTA0LTE1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiB1bndpbmQuaW5jIChfVW53aW5kX0JhY2t0cmFjZSk6IE5ldyBmdW5jdGlvbi4KCSogdW53aW5kLmggKF9VbndpbmRfQmFja3RyYWNlKTogRGVjbGFyZSBpdC4KCSogbGliZ2NjLXN0ZC52ZXIgKF9VbndpbmRfQmFja3RyYWNlKTogRXhwb3J0IGl0LgoKMjAwMy0wNC0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMDMzNiwgYysrLzEwNDAxCgkqIGp1bXAuYyAobmV2ZXJfcmVhY2hlZF93YXJuaW5nKTogQWxzbyBzdG9wIGxvb2tpbmcgaWYgd2UgcmVhY2ggdGhlCgliZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLgoKMjAwMy0wNC0xNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCVBSIHRhcmdldC8xMDMzOAoJUFIgYm9vdHN0cmFwLzEwMTk4CglQUiBib290c3RyYXAvMTAxNDAKCSogZml4aW5jL2dudS1yZWdleC5jIChyZWdlcnJvcik6IFVzZSBtZW1wY3B5IG5vdCBfX21lbXBjcHkuCgoyMDAzLTA0LTE1ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGkzODYubWQgKGFic3NmMl9pZisxKTogTWFrZSBjb25kaXRpb24gYWdyZWUgd2l0aCBhYnNzZjJfMSAuCgoyMDAzLTA0LTE1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcCk6IEluIG11bHRpLXdvcmQgYWRkIGNhc2VzLCBlbnN1cmUKCVhUQVJHRVQgaXMgY29waWVkIHRvIFRBUkdFVCBpZiB0aGV5IGFyZSBkaWZmZXJlbnQuCgoyMDAzLTA0LTE1ICBPbGl2aWVyIEhhaW5xdWUgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGV4Y2VwdC5jIChyZXNvbHZlX2ZpeHVwX3JlZ2lvbnMpOiBBdm9pZCBkZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlcgoJdG8gcmVnaW9uLCBwb3NzaWJsZSBhZnRlciBpbnRlZ3JhdGlvbiBvZiBmdW5jdGlvbiB3aXRoIHVucmVhY2hhYmxlCglyZWdpb25zIHRoYXQgd2VyZSBvcHRpbWl6ZWQgYXdheS4KCjIwMDMtMDQtMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRVBJTE9HVUVfVVNFUyk6IFVzZSByZWdpc3RlciAyLAoJaW5zdGVhZCBvZiBUT0NfUkVHSVNURVIgaW4gZXBpbG9ndWUgaW4KCWN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfZWhfcmV0dXJuIGZ1bmN0aW9ucy4KCjIwMDMtMDQtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEVtcHR5IFN0cnVjdHVyZXMpOiBDb3JyZWN0IGRlc2NyaXB0aW9uIG9mIEcrKydzCgloYW5kbGluZyBvZiB0aGVzZSBzdHJ1Y3R1cmVzLgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVqZWN0IGV4dGVybiByZWRlY2xhcmF0aW9ucyBvZgoJc3RhdGljIHZhcmlhYmxlcy4KCjIwMDMtMDQtMTQgIEphbmlzIEpvaG5zb24gIDxqYW5pczI4N0B1cy5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRlZmluZV9jb25zdGFudHMpOiBEZWZpbmUgY29uc3RhbnRzIGZvcgoJYWxsIFVOU1BFQyB1c2FnZSwgaW5jbHVkaW5nIG5ldyB2YWx1ZXMgZm9yIFRMUyBzdXBwb3J0LgoJKGF1eF90cnVuY2Rmc2YyLCBmY3Rpd3osIG1vdnNpX2dvdCwgbW92c2lfZ290X2ludGVybmFsLAoJbG9hZF90b2NfYWl4X3NpLCBsb2FkX3RvY19haXhfZGksIGxvYWRfdG9jX3Y0X3BpY19zaSwKCWxvYWRfdG9jX3Y0X1BJQ18xLCBsb2FkX3RvY192NF9QSUNfMWIsIGxvYWRfbWFjaG9fcGljYmFzZSwKCW1hY2hvX2NvcnJlY3RfcGljLCBibG9ja2FnZSwgbW92ZV9mcm9tX0NSX292X2JpdCwgbW92ZXNpX2Zyb21fY3IsCglzdGFja190aWUsIG1vdnNpX3RvX2NyX29uZSwgbW92c2lfdG9fY3IsIG10Y3Jmc2ksIGVoX3NldF9scl9zaSwKCWVoX3NldF9scl9kaSk6IFVzZSB0aGVtLgoJKiByczYwMDAuYzogKG10Y3JmX29wZXJhdGlvbiwgdXNlc19UT0MsIHJzNjAwMF9lbWl0X3Byb2xvZ3VlLAoJcnM2MDAwX2VtaXRfZXBpbG9ndWUpIFVzZSB0aGVtLgoKCSogcnRsLmggKFNZTUJPTF9SRUZfVExTX01PREVMKTogRml4IG1hc2sgdmFsdWUuCgoyMDAzLTA0LTE0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoYy1vcHRzLm8pOiBVc2UgY3VzdG9tIGFjdGlvbi4KCjIwMDMtMDQtMTQgIERvdWdsYXMgQiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IEZhaWwgb24gQkxLbW9kZSBtb3ZlLgoKMjAwMy0wNC0xNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF90eXBlLCBjYXNlIEFSUkFZX1RZUEUpOiBBZGQgbWlzc2luZyBjb2RlIHRvCgloYW5kbGUgInN1cGVyZmxhdCBhcnJheXMiIGluIEFkYS4KCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogRG9uJ3QgaW5saW5lIGlmIHdvdWxkCglsb3NlIC91IG9uIGEgQkxLbW9kZSBUQVJHRVQuCgoyMDAzLTA0LTE0ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGRieG91dC5jIChwcmludF9pbnRfY3N0X2JvdW5kc19pbl9vY3RhbF9wKTogTmV3IGZ1bmN0aW9uLAoJZXh0cmFjdGVkIGZyb20gZGJ4b3V0X3R5cGUuCgkoZGJ4b3V0X3JhbmdlX3R5cGUpOiBwcmludCBsYXJnZSBib3VuZHMgaW4gb2N0YWwgZm9ybWF0LgoJKGRieG91dF90eXBlKTogUmVwbGFjZSBleHRyYWN0ZWQgY29kZSBieSBjYWxsIHRvCglwcmludF9pbnRfY3N0X2JvdW5kc19pbl9vY3RhbF9wLgoKCSogZHdhcmYyb3V0LmMgKGdlbl9jb21waWxlX3VuaXRfZGllKTogRW1pdCBEV19MQU5HX0FkYTk1IGluc3RlYWQKCW9mIERXX0xBTkdfQWRhODMgZm9yIEFkYSB1bml0cy4KCjIwMDMtMDQtMTQgIE9saXZpZXIgSGFpbnF1ZSA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZXhwbG93LmMgKHJvdW5kX3B1c2gpOiBVc2UgSE9TVF9XSURFX0lOVCBpbnN0ZWFkIG9mIGludCBmb3IgdGhlCgl0ZW1wb3JhcnkgdXNlZCB0byByb3VuZCBDT05TVF9JTlQgc2l6ZXMuCgoJKiB0cmVlLmMgKGludF9maXRzX3R5cGVfcCk6IEV4dHJhY3QgZ2VuZXJpYyBjaGVja3MgZnJvbSB0aGUgY2FzZQoJb2YgY29uc3RhbnQgdHlwZSBib3VuZHMuIFJlZmluZSB0aGUgY2hlY2tzIGFnYWluc3QgY29uc3RhbnQgdHlwZQoJYm91bmRzIHRvIGFsbG93IGZvciBwb3NzaWJsZSBkZWNpc2lvbnMgYWdhaW5zdCBlYWNoIG9mIHRoZXNlIGJvdW5kcwoJd2l0aG91dCByZXF1aXJpbmcgYm90aCBib3VuZHMgdG8gYmUgY29uc3RhbnQuCgkodHJlZV9pbnRfY3N0X21zYik6IFB1dCBiYWNrLgoJKiB0cmVlLmggKHRyZWVfaW50X2NzdF9tc2IpOiBMaWtld2lzZS4KCgkqIGdsb2JhbC5jIChnbG9iYWxfY29uZmxpY3RzKTogUHJldmVudCBhbGxvY2F0aW9uIG9mIGNhbGwgY2xvYmJlcmVkCgloYXJkIHJlZ3MgdG8gcHNldWRvcyBsaXZlIGFjcm9zcyBhYm5vcm1hbCBlZGdlcywgYXMgbGF0ZXIgcGFzc2VzIGFyZQoJbm90IHJlYWR5IHRvIGhhbmRsZSB0aGVtLgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogUmVvcmRlciB0ZXN0cyBmb3IgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuCgoJKiBleHByLmMgKGhpZ2hlc3RfcG93Ml9mYWN0b3IpOiBSZXR1cm4gdW5zaWduZWQuCgkqIGV4cHIuaCAob2Zmc2V0X2FkZHJlc3MpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAob2Zmc2V0X2FkZHJlc3MpOiBQT1cyIGFyZ3VtZW50IG5vdyB1bnNpZ25lZC4KCjIwMDMtMDQtMTQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogIEV2YWx1YXRlIHRoZSBsZW5ndGhzIG9mCglzdHJpbmcgbGl0ZXJhbHMgYXQgY29tcGlsZS10aW1lLgoKMjAwMy0wNC0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiAgVHJhbnNmb3JtIChjMSAtIHgpIGNtcCBjMiwgd2hlcmUgY21wIGlzIGEKCWNvbXBhcmlzb24gb3BlcmF0aW9uIGFuZCBjMS9jMiBhcmUgZmxvYXRpbmcgcG9pbnQgY29uc3RhbnRzIGludG8KCXggc3dhcChjbXApIChjMSAtIGMyKS4KCjIwMDMtMDQtMTQgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogZ2VuYXV0b21hdGEuYyAob3V0cHV0X3RyYW5zbGF0ZV92ZWN0KTogRml4IGEgdHlwbyBpbiBsb29wCgljb25kaXRpb24uCgoyMDAzLTA0LTE0ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiB0YXJnZXQvMTAzNzcKCSogY29uZmlnL2NyaXMvY3Jpcy5tZCAoIiptb3Zfc2lkZXFpIiwgIiptb3Zfc2lkZWhpIikKCSgiKm1vdl9zaWRlc2kiLCAiKm1vdl9zaWRlcWlfbWVtIiwgIiptb3Zfc2lkZWhpX21lbSIpCgkoIiptb3Zfc2lkZXNpX21lbSIsICIqY2xlYXJfc2lkZXNpIiwgIipjbGVhcl9zaWRlaGkiKQoJKCIqY2xlYXJfc2lkZXFpIiwgIipleHRfc2lkZXFpaGkiLCAiKmV4dF9zaWRlcWlzaSIpCgkoIipleHRfc2lkZWhpc2kiLCAiKm9wX3NpZGVxaSIsICIqb3Bfc2lkZWhpIiwgIipvcF9zaWRlc2kiKQoJKCIqb3Bfc3dhcF9zaWRlcWkiLCAiKm9wX3N3YXBfc2lkZWhpIiwgIipvcF9zd2FwX3NpZGVzaSIpCgkoIipleHRvcHFpaGlfc2lkZSIsICIqZXh0b3BxaXNpX3NpZGUiLCAiKmV4dG9waGlzaV9zaWRlIikKCSgiKmV4dG9wcWloaV9zd2FwX3NpZGUiLCAiKmV4dG9wcWlzaV9zd2FwX3NpZGUiKQoJKCIqZXh0b3BoaXNpX3N3YXBfc2lkZSIsIDh0aCwgOXRoLCAxMHRoLCAxMXRoLCAxNHRoIHBlZXBob2xlcyk6CglXaGVuIG5leHQgdG8gY29uc3RyYWludCBSLCByZXBsYWNlIGNvbnN0cmFpbnQgaSB3aXRoIG4uCgpNb24gQXByIDE0IDE2OjE4OjM3IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIG9wdC8xMDAyNAoJKiBjZmdydGwuYyAoZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0KTogVXNlIHVuY2hlY2tlZF9tYWtlX2VkZ2UuCgoyMDAzLTA0LTE0ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGRvYy9jb250cmliLnRleGkgKENvbnRyaWJ1dG9ycyk6IENvcnJlY3QgbXkgZW50cnkuCgoyMDAzLTA0LTEzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUuaCAoREVDTF9CVUlMVF9JTl9OT05BTlNJKTogUmVtb3ZlLgoJKiBjLWNvbW1vbi5jIChidWlsdGluX2Z1bmN0aW9uXzIpOiBEb24ndCBzZXQgREVDTF9CVUlMVF9JTl9OT05BTlNJLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogVXNlIGludmFyaWFudCBERUNMX0JVSUxUX0lOX05PTkFOU0kKCWltcGxpZXMgREVDTF9CVUlMVF9JTiB0byBzaW1wbGlmeSBsb2dpYy4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogRG9uJ3QgZHVtcCBERUNMX0JVSUxUX0lOX05PTkFOU0kuCgoyMDAzLTA0LTEzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9GTl9TVFJJTkdfQ09OU1RfU1RSSU5HKTogTmV3IGJ1aWx0aW4gdHlwZS4KCShCVF9GTl9QVFJfU0laRV9TSVpFKTogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fTUFMTE9DLCBCVUlMVF9JTl9DQUxMT0MsIEJVSUxUX0lOX1NUUkRVUCk6CglOZXcgYnVpbHQtaW4gZnVuY3Rpb25zIGZvciBtYWxsb2MsIGNhbGxvYyBhbmQgc3RyZHVwIHJlc3BlY3RpdmVseS4KCSogY2FsbHMuYyAoc3BlY2lhbF9mdW5jdGlvbl9wKTogTm8gbmVlZCB0byBoYW5kbGUgbWFsbG9jLWxpa2UKCWZ1bmN0aW9ucyBhbnkgbG9uZ2VyLiAgRUNGX01BTExPQyBpcyBzZXQgdmlhIGJ1aWx0LWluIGF0dHJpYnV0ZXMuCgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogUHJlc2VydmUgcHVyZSBhbmQgbWFsbG9jIGF0dHJpYnV0ZXMuCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IHRoZXNlIG5ldyBidWlsdC1pbiBmdW5jdGlvbnMuCgoyMDAzLTA0LTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1jcHkpOiBBZGQgYGVuZHAnIGFyZ3VtZW50LCB1c2UgaXQuCgkoZXhwYW5kX2J1aWx0aW5fc3RwY3B5KTogTmV3LgoJKGV4cGFuZF9idWlsdGluKTogQWRkIEJVSUxUX0lOX01FTVBDUFkgJiBCVUlMVF9JTl9TVFBDUFkuCgkqIGJ1aWx0aW5zLmRlZjogQWRkIG1lbXBjcHkgJiBzdHBjcHkgc3VwcG9ydC4KCSogZG9jL2V4dGVuZC50ZXhpIChtZW1wY3B5LCBzdHBjcHkpOiBEb2N1bWVudCBuZXcgYnVpbHRpbnMuCgoyMDAzLTA0LTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogUmVwbGFjZSBvY2N1cnJlbmNlcyBvZiAiR05VIENDIiB3aXRoCgkiR0NDIi4KCSogY29uZmlnL3JzNjAwMC80MHgubWQsIGNvbmZpZy9yczYwMDAvNjAzLm1kLAoJY29uZmlnL3JzNjAwMC82eHgubWQsIGNvbmZpZy9yczYwMDAvNzQ1MC5tZCwgY29uZmlnL3JzNjAwMC83eHgubWQsCgljb25maWcvcnM2MDAwLzg1NDAubWQsIGNvbmZpZy9yczYwMDAvYWl4LmgsIGNvbmZpZy9yczYwMDAvYWl4MzEuaCwKCWNvbmZpZy9yczYwMDAvYWl4M25ld2FzLmgsIGNvbmZpZy9yczYwMDAvYWl4NDEuaCwKCWNvbmZpZy9yczYwMDAvYWl4NDMuaCwgY29uZmlnL3JzNjAwMC9haXg1MS5oLAoJY29uZmlnL3JzNjAwMC9haXg1Mi5oLCBjb25maWcvcnM2MDAwL2FsdGl2ZWMtZGVmcy5oLAoJY29uZmlnL3JzNjAwMC9hbHRpdmVjLmgsIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCwKCWNvbmZpZy9yczYwMDAvYmVvcy5oLCBjb25maWcvcnM2MDAwL2Rhcndpbi5oLAoJY29uZmlnL3JzNjAwMC9lYWJpLmgsIGNvbmZpZy9yczYwMDAvZWFiaWFsdGl2ZWMuaCwKCWNvbmZpZy9yczYwMDAvZWFiaXNpbS5oLCBjb25maWcvcnM2MDAwL2VhYmlzcGUuaCwKCWNvbmZpZy9yczYwMDAvZnJlZWJzZC5oLCBjb25maWcvcnM2MDAwL2dudS5oLAoJY29uZmlnL3JzNjAwMC9ob3N0LWRhcndpbi5jLCBjb25maWcvcnM2MDAwL2xpbnV4LmgsCgljb25maWcvcnM2MDAwL2xpbnV4NjQuaCwgY29uZmlnL3JzNjAwMC9saW51eGFsdGl2ZWMuaCwKCWNvbmZpZy9yczYwMDAvbHlueC5oLCBjb25maWcvcnM2MDAwL21hY2guaCwgY29uZmlnL3JzNjAwMC9tcGMubWQsCgljb25maWcvcnM2MDAwL25ldGJzZC5oLCBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZCwKCWNvbmZpZy9yczYwMDAvcmlvczEubWQsIGNvbmZpZy9yczYwMDAvcmlvczIubWQsCgljb25maWcvcnM2MDAwL3JzNjAwMC1jLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLW1vZGVzLmRlZiwKCWNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oLCBjb25maWcvcnM2MDAwL3JzNjAwMC5jLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuaCwgY29uZmlnL3JzNjAwMC9yczYwMDAubWQsCgljb25maWcvcnM2MDAwL3JzNjQubWQsIGNvbmZpZy9yczYwMDAvcnRlbXMuaCwgY29uZmlnL3JzNjAwMC9zcGUuaCwKCWNvbmZpZy9yczYwMDAvc3BlLm1kLCBjb25maWcvcnM2MDAwL3N5c3Y0LmgsCgljb25maWcvcnM2MDAwL3N5c3Y0bGUuaCwgY29uZmlnL3JzNjAwMC92eHdvcmtzLmgsCgljb25maWcvcnM2MDAwL3dpbmRpc3MuaCwgY29uZmlnL3JzNjAwMC94Y29mZi5oOiBMaWtld2lzZS4KCjIwMDMtMDQtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogRGVsZXRlCglzdXBwb3J0IGZvciAtbWNhbGwtYWl4IHN3aXRjaC4KCSogY29uZmlnL3JzNjAwMC9lYWJpYWl4Lmg6IERlbGV0ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAwX2FiaSk6IFJlbW92ZSBBQklfQUlYX05PREVTQy4KCShSUzYwMDBfUkVHX1NBVkUsIFJTNjAwMF9TQVZFX0FSRUEsIEZQX0FSR1NfTUFYX1JFRywKCVJFVFVSTl9BRERSRVNTX09GRlNFVCk6IFJlbW92ZSB1c2Ugb2YgQUJJX0FJWF9OT0RFU0MuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAocnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJpbnRfb3BlcmFuZCwgcnM2MDAwX3N0YWNrX2luZm8sCglkZWJ1Z19zdGFja19pbmZvLCBvdXRwdXRfZnVuY3Rpb25fcHJvZmlsZXIsCglyczYwMDBfdHJhbXBvbGluZV9zaXplLCByczYwMDBfaW5pdGlhbGlzZV90cmFtcG9saW5lKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChjYWxsLCBjYWxsX3ZhbHVlLCBjYWxsX25vbmxvY2FsX3N5c3YsCgljYWxsX2luZGlyZWN0X25vbmxvY2FsX3N5c3YsIGNhbGxfdmFsdWVfaW5kaXJlY3Rfbm9ubG9jYWxfc3lzdiwKCWNhbGxfdmFsdWVfbm9ubG9jYWxfc3lzdiwgc2liY2FsbF92YWx1ZV9ub25sb2NhbF9zeXN2LAoJc2liY2FsbF9ub25sb2NhbF9zeXN2LCBzaWJjYWxsX3ZhbHVlX2xvY2FsNjQpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC90LXBwY2dhcyAoTVVMVElMSUJfT1BUSU9OUyk6IFJlbW92ZSBtY2FsbC1haXgKCW11bHRpbGlicy4KCShNVUxUSUxJQl9ESVJOQU1FUyk6IFJlbW92ZSBtY2FsbC1haXggZGlyZWN0b3JpZXMuCgkoTVVMVElMSUJfRVhDRVBUSU9OUyk6IERlbGV0ZS4KCShNVUxUSUxJQl9NQVRDSEVTKTogUmVtb3ZlIG1jYWxsLWFpeCBtYXRjaGVzLgoKCSogZG9jL2ZyYWdtZW50cy50ZXhpOiBSZXBsYWNlIC1tY2FsbC1haXggZXhhbXBsZSB3aXRoIGFuIEFSTQoJb25lLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEZWxldGUgcG93ZXJwYy0qLWVhYmlhaXggdGFyZ2V0LgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mIG1jYWxsLWFpeCBzd2l0Y2guCgkqIGRvYy90bS50ZXhpOiBSZW1vdmUgbWNhbGwtYWl4IGZyb20gZXhhbXBsZSBDUFBfU1BFQy4KCSogY29uZmlnLmdjYzogRGVsZXRlIHBvd2VycGMtKi1lYWJpYWl4IHRhcmdldC4KCjIwMDMtMDQtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW52b2tlLnRleGk6IEZpeCB0eXBvcy4KCSogZG9jL3RtLnRleGk6IExpa2V3aXNlLgoKMjAwMy0wNC0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGRpZ2VzdF9pbml0LCBwdXNoX2luaXRfbGV2ZWwpOiBVc2UgQ09OU1RSVUNUT1JfRUxUUy4KCjIwMDMtMDQtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX2NvbnN0cnVjdG9yKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmg6IFByb3RvdHlwZSBpdC4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCwgcG9wX2luaXRfbGV2ZWwpCgkqIHByb2ZpbGUuYyAoYnVpbGRfZnVuY3Rpb25faW5mb192YWx1ZSwgYnVpbGRfZ2Nvdl9pbmZvX3ZhbHVlKQoJKGNyZWF0ZV9wcm9maWxlcik6CglVc2UgYnVpbGRfY29uc3RydWN0b3IuCgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9hcmdzX2luZm8pOiBSZW1vdmUgI2lmIDAgYmxvY2tzLgoKCSogb2JqYy9vYmpjLWFjdC5jIChidWlsZF9jb25zdHJ1Y3Rvcik6CglSZW5hbWUgb2JqY19idWlsZF9jb25zdHJ1Y3Rvci4gVXNlIGJ1aWxkX2NvbnN0cnVjdG9yLgoJKGJ1aWxkX29iamNfc3RyaW5nX29iamVjdCwgb2JqY19hZGRfc3RhdGljX2luc3RhbmNlKQoJKGluaXRfZGVmX2xpc3QsIGluaXRfb2JqY19zeW10YWIsIGluaXRfbW9kdWxlX2Rlc2NyaXB0b3IpCgkoZ2VuZXJhdGVfc3RhdGljX3JlZmVyZW5jZXMsIGJ1aWxkX3NlbGVjdG9yX3RyYW5zbGF0aW9uX3RhYmxlKQoJKGJ1aWxkX2Rlc2NyaXB0b3JfdGFibGVfaW5pdGlhbGl6ZXIsIGdlbmVyYXRlX2Rlc2NyaXB0b3JfdGFibGUpCgkoYnVpbGRfcHJvdG9jb2xfaW5pdGlhbGl6ZXIsIGJ1aWxkX2l2YXJfbGlzdF9pbml0aWFsaXplcikKCShnZW5lcmF0ZV9pdmFyc19saXN0LCBidWlsZF9kaXNwYXRjaF90YWJsZV9pbml0aWFsaXplcikKCShnZW5lcmF0ZV9kaXNwYXRjaF90YWJsZSwgZ2VuZXJhdGVfcHJvdG9jb2xfbGlzdCkKCShidWlsZF9jYXRlZ29yeV9pbml0aWFsaXplciwgYnVpbGRfc2hhcmVkX3N0cnVjdHVyZV9pbml0aWFsaXplcik6CglVcGRhdGUgdG8gbWF0Y2guCgoyMDAzLTA0LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW50bC5oOiAjZGVmaW5lIGdjY19nZXR0ZXh0X3dpZHRoIHRvIHN0cmxlbiB3aGVuICFFTkFCTEVfTkxTLgoKMjAwMy0wNC0xMiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLXByb3Rvcy5oCgkobTY4aGMxMV9lcV9jb21wYXJlX29wZXJhdG9yKTogRGVjbGFyZQoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKFBSRURJQ0FURV9DT0RFUyk6IFJlZ2lzdGVyIG5ldyBwcmVkaWNhdGUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9lcV9jb21wYXJlX29wZXJhdG9yKTogTmV3IHByZWRpY2F0ZQoJKGRfcmVnaXN0ZXJfb3BlcmFuZCk6IENoZWNrIHRoZSBvcGVyYW5kIG1vZGUuCgkoaGFyZF9hZGRyX3JlZ19vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDAzLTA0LTEyICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQgKCJkZWNyZW1lbnRfYW5kX2JyYW5jaF91bnRpbF96ZXJvIik6IE5ldwoJcGF0dGVybiBmb3IgZGJjYy9pYmNjIGdlbmVyYXRpb24gZm9yIDY4SEMxMi4KCSgiZG9sb29wX2VuZCIpOiBOZXcgcGF0dGVybi4KCSgibTY4aGMxMl9kYmNjX2RlY19oaSIpOiBOZXcgcGF0dGVybiBmb3IgZGJlcS9kYm5lLgoJKCJtNjhoYzEyX2RiY2NfaW5jX2hpIik6IE5ldyBwYXR0ZXJuIGZvciBpYmVxL2libmUuCgkoIm02OGhjMTJfZGJjY19kZWNfcWkiKTogTmV3IHBhdHRlcm4uCgkoIm02OGhjMTJfZGJjY19pbmNfcWkiKTogTmV3IHBhdHRlcm4uCgkoc3BsaXQpOiBBZGQgc3BsaXQgZm9yIHRoZSBhYm92ZSB3aGVuIHdlIGNhbid0IHVzZSBkYmNjL2liY2MgZHVlIHRvCglyZWxvYWRpbmcuCgkocGVlcGhvbGUyKTogQWRkIHBlZXBob2xlMiB0byBnZW5lcmF0ZSB0aGUgYWJvdmUgd2hlbiBwb3NzaWJsZS4KCjIwMDMtMDQtMTIgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCAoImJpdGNtcHFpIiBzcGxpdCk6IE5vIG5lZWQgdG8gdGVzdCB0aGUKCW1vZGUgb2Ygb3BlcmFuZCAwLgoJKHBlZXBob2xlMiBvcHRpbWl6ZSBjb25zdCBsb2FkKTogTGlrZXdpc2UgZm9yIG9wZXJhbmQgMi4KCSgiKnJvdGxoaTNfd2l0aF9jYXJyeSIpOiBDaGFuZ2UgcGF0dGVybiB0byBhIGNvbnN0IDEgcm90YXRlIHdoaWNoCgljbG9iYmVycyBDQ19SRUdOVU0uCgkoIipyb3RyaGkzX3dpdGhfY2FycnkiKTogTGlrZXdpc2UuCgkoYXNoaWZ0OkRJIDEgc3BsaXQpOiBVcGRhdGUgcGF0dGVybiB0byBjcmVhdGUgdGhlIGFib3ZlIHJvdGF0ZS4KCShsc2hpZnRydDpESSAxIHNwbGl0KTogTGlrZXdpc2UuCgoyMDAzLTA0LTEyICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQgKFNPRlRfWl9SRUdOVU0pOiBOZXcgY29uc3RhbnQuCgkoInRzdHFpX3pfdXNlZCIgc3BsaXQpOiBVc2UgaXQuCgkoImNtcGhpX3pfdXNlZCIpOiBMaWtld2lzZS4KCSgiYml0Y21wcWlfel91c2VkIik6IExpa2V3aXNlOyBhbHNvIHVzZSBTUF9SRUdOVU0gY29uc3RhbnQuCgkoImNtcHFpX3pfdXNlZCIpOiBMaWtld2lzZS4KCjIwMDMtMDQtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzc5MTAKCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9tYXJrX2RsbGltcG9ydCk6IEZpeCB0aGlua28uCgoyMDAzLTA0LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3Igd2NoYXIuaCwgbWJzdG93Y3MsIGFuZCB3Y3N3aWR0aC4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGludGwuYyAoZ2NjX2dldHRleHRfd2lkdGgpOiBOZXcgZnVuY3Rpb24uCgkqIGludGwuaDogUHJvdG90eXBlIGl0LgoKMjAwMy0wNC0xMiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEZpeCAtbW5vbWlubWF4IG9wdGlvbjsKCXJlY29nbml6ZSAtbW5vcmVsYXguCgkocmVnX2NsYXNzKTogQWRkIFpfT1JfU19SRUdTIHRvIHJlcHJlc2VudCBzb2Z0IHJlZ2lzdGVycyB3aXRoIFoKCShSRUdfQ0xBU1NfTkFNRVMpOiBBZGQgaXRzIG5hbWUuCgkoUkVHX0NMQVNTX0NPTlRFTlRTKTogRGVmaW5lIGl0cyBjb250ZW50LgoKMjAwMy0wNC0xMiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9sYXJpdGguYXNtIChtZW1jcHkpOiBVc2UgQVJHIG1hY3JvIHRvIGFjY2VzcyBzdGFjawoJcGFyYW1ldGVycyBzbyB0aGF0IG9mZnNldHMgYXJlIHZhbGlkIGZvciBmYXIgZGVmaW5pdGlvbi4KCShfX211bHNpMyk6IExpa2V3aXNlIGFuZCB1c2UgcmV0IHRvIHJldHVybi4KCShfX19hZGRkaTMsIF9fX3N1YmRpMywgX19fbm90ZGkyLCApOiBEb24ndCB1c2UgaXQgdG8gc2F2ZSB0aGUgcmVzdWx0LgoKMjAwMy0wNC0xMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhc2hfY29uc3RhbnQpOiBTa2lwICcwJyBmaWVsZHMuCgoyMDAzLTA0LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIG1rbGliZ2NjLmluIChsaWJnY2Mtc3RhZ2Utc3RhcnQpOiBGb3IgZXZlcnkgbXVsdGlsaWIgIGRpcmVjdG9yeQoJY29udGFpbmluZyBhIGxpYmdjYy5hLCBtb3ZlIGxpYiogdG8gdGhlIGNvcnJlc3BvbmRpbmcgc3RhZ2UgZGlyLgoKCSogTWFrZWZpbGUuaW4gKHN0YWdlMS1zdGFydCwgc3RhZ2UyLXN0YXJ0LCBzdGFnZTMtc3RhcnQsCglzdGFnZTQtc3RhcnQpOiBNb3ZlICQoU1BFQ1MpIHRvIHNwZWNzIGluIHN0YWdlIGRpci4KCSh1bnN0YWdlMSB1bnN0YWdlMiB1bnN0YWdlMyB1bnN0YWdlNCk6IE1vdmUgc3BlY3MgaW4gc3RhZ2UgZGlyCgliYWNrIGFzICQoU1BFQ1MpLgoKCSogbWtsaWJnY2MuaW4gKGxpYmdjYy1zdGFnZS1zdGFydCk6IE1vdmUgaW50byB0aGUgc3RhZ2UgZGlyZWN0b3J5CglvYmplY3QgZmlsZXMgZnJvbSB0aGUgbm9uLWxpYmdjYy8gbXVsdGlsaWIgZGlyZWN0b3JpZXMgYXMgd2VsbC4KCjIwMDMtMDQtMTEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogcHJvZmlsZS5jIChyZWFkX2NvdW50c19maWxlKTogSW5pdGlhbGlzZSAnY2hlY2tzdW0nLgoKCSogZW1pdC1ydGwuYyAoZ2VuX3J0eCk6IFJlYWxseSBjb3JyZWN0IHR5cG8uCgoJUFIgYysrLzkzOTMKCSogZG9jL2ludm9rZS50ZXhpIChEZWJ1Z2dpbmcgT3B0aW9ucyk6IERvY3VtZW50IC1mcmFuZG9tLXNlZWQuCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIGdldHRpbWVvZmRheS4KCSogdHJlZS5jIChmbGFnX3JhbmRvbV9zZWVkKTogRGVmaW5lLgoJKGRlZmF1bHRfZmxhZ19yYW5kb21fc2VlZCk6IE5ldy4KCShhcHBlbmRfcmFuZG9tX2NoYXJzKTogVXNlIGZsYWdfcmFuZG9tX3NlZWQgcmF0aGVyIHRoYW4gdHJ5aW5nCgl0byBhY3F1aXJlIHJhbmRvbW5lc3MgaGVyZS4KCSogdHJlZS5oIChkZWZhdWx0X2ZsYWdfcmFuZG9tX3NlZWQpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAoZGlzcGxheV9oZWxwKTogQWRkIC1mcmFuZG9tLXNlZWQgYW5kIC1mc3RhY2stbGltaXQtKgoJZGVzY3JpcHRpb25zLgoJKGRlY29kZV9mX29wdGlvbik6IEhhbmRsZSAtZnJhbmRvbS1zZWVkLgoJKHByaW50X3N3aXRjaF92YWx1ZXMpOiBDYWxsIGRlZmF1bHRfZmxhZ19yYW5kb21fc2VlZC4KCSogZmxhZ3MuaCAoZmxhZ19yYW5kb21fc2VlZCk6IERlY2xhcmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWcvYWxwaGEvdC1jcnRmbTogVXNlIC1mcmFuZG9tLXNlZWQuCgoJKiBkb2MvZXh0ZW5kLnRleGkgKEVtcHR5IFN0cnVjdHVyZXMpOiBOZXcuCgoJKiBjLXBjaC5jOiBJbmNsdWRlIGZsYWdzLmguICBBZGQgY29tbWVudHMgdG8gcm91dGluZXMuCgkoc3RydWN0IGNfcGNoX3ZhbGlkaXR5KTogTmV3LgoJKGdldF9pZGVudCk6IFVwZGF0ZSBQQ0ggZmlsZSB2ZXJzaW9uIG51bWJlci4KCShwY2hfaW5pdCk6IE91dHB1dCBjdXJyZW50IGRlYnVnZ2luZyB0eXBlLgoJKGNfY29tbW9uX3ZhbGlkX3BjaCk6IENoZWNrIGRlYnVnZ2luZyB0eXBlLgoJKiBNYWtlZmlsZS5pbiAoYy1wY2gubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIGZsYWdzLmggKGRlYnVnX3R5cGVfbmFtZXMpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAoZGVidWdfdHlwZV9uYW1lcyk6IE1vdmUgb3V0IG9mIGRlY29kZV9nX29wdGlvbi4KCjIwMDMtMDQtMTEgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX3J0eCk6IEZpeCB0eXBvcy4KCjIwMDMtMDQtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fcnR4KTogWmVybyAnMCcgZmllbGRzLgoKMjAwMy0wNC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjKysvMTAyMDIKCSogZXhwci5jIChleHBhbmRfZXhwcik6IFVzZSBDT01QTEVURV9PUl9VTkJPVU5EX0FSUkFZX1RZUEVfUAoJbm90IENPTVBMRVRFX1RZUEVfUCBmb3IgcmUtaW52b2tpbmcgbGF5b3V0X2RlY2wuCgoyMDAzLTA0LTExICBTaW1vbiBMYXcgIDxzZmxsYXdAZW5nbWFpbC51d2F0ZXJsb28uY2E+CgoJKiBkb2MvYnVncmVwb3J0LnRleGk6IEZpeCBwYXJhZ3JhcGggYnJlYWtpbmcgYmV0d2VlbiBzZWN0aW9ucwoJaW4gcHJlcGFyYXRpb24gZm9yIFRlWGluZm8ncyBwYXJhZ3JhcGggaW5kZW50YXRpb24gZml4ZXMuCgkqIGRvYy9leHRlbmQudGV4aTogRGl0dG8uCgkqIGRvYy9pbnZva2UudGV4aTogRGl0dG8uCgkqIGRvYy9vYmpjLnRleGk6IERpdHRvLgoJKiBkb2MvZ2Nvdi50ZXhpOiBXcmFwICdnY292JyBpbiBAY29tbWFuZHt9LgoJKiBkb2MvaW52b2tlLnRleGkgKERhcndpbiBPcHRpb25zKTogQWRkIGEgcHJlYW1ibGUuCgoyMDAzLTA0LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh0bHNfbW9kZWxfY2hhcnMpOiBSZW1vdmUuCgkoaXg4Nl9lbmNvZGVfc2VjdGlvbl9pbmZvLCBpeDg2X3N0cmlwX25hbWVfZW5jb2RpbmcpOiBSZW1vdmUuCgkobG9jYWxfc3ltYm9saWNfb3BlcmFuZCk6IFVzZSBTWU1CT0xfUkVGX0xPQ0FMX1AuCgkodGxzX3N5bWJvbGljX29wZXJhbmQpOiBVc2UgU1lNQk9MX1JFRl9UTFNfTU9ERUwuCgkodGxzX3N5bWJvbGljX29wZXJhbmRfMSk6IExpa2V3aXNlLgoJKGxlZ2l0aW1hdGVfcGljX2FkZHJlc3NfZGlzcF9wKTogVXNlIFNZTUJPTF9SRUZfTE9DQUxfUC4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfRU5DT0RFX1NFQ1RJT05fSU5GTyk6IFJlbW92ZS4KCShUQVJHRVRfU1RSSVBfTkFNRV9FTkNPRElORywgQVNNX09VVFBVVF9MQUJFTFJFRik6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogUmVwbGFjZQoJYml0cyAiY29waWVkIGZyb20gaTM4Ni5oIiB3aXRoIGRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mby4KCjIwMDMtMDQtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBydGwuZGVmIChTWU1CT0xfUkVGKTogQWRkIHR3byAwIGZpZWxkcy4KCSogZ2VuZ3R5cGUuYyAoYWRqdXN0X2ZpZWxkX3J0eF9kZWYpOiBIYW5kbGUgdGhlbS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IFByaW50IHRoZW0uCgkqIHJ0bC5oIChTWU1CT0xfUkVGX0RFQ0wsIFNZTUJPTF9SRUZfRkxBR1MpOiBOZXcuCgkoU1lNQk9MX0ZMQUdfRlVOQ1RJT04sIFNZTUJPTF9SRUZfRlVOQ1RJT05fUCk6IE5ldy4KCShTWU1CT0xfRkxBR19MT0NBTCwgU1lNQk9MX1JFRl9MT0NBTF9QKTogTmV3LgoJKFNZTUJPTF9GTEFHX1NNQUxMLCBTWU1CT0xfUkVGX1NNQUxMX1ApOiBOZXcuCgkoU1lNQk9MX0ZMQUdfVExTX1NISUZULCBTWU1CT0xfUkVGX1RMU19NT0RFTCk6IE5ldy4KCShTWU1CT0xfRkxBR19FWFRFUk5BTCwgU1lNQk9MX1JFRl9FWFRFUk5BTF9QKTogTmV3LgoJKFNZTUJPTF9GTEFHX01BQ0hfREVQKTogTmV3LgoJKiBvcHRhYnMuYyAoaW5pdF9vbmVfbGliZnVuYyk6IFphcCBmYWtlIFNZTUJPTF9SRUZfREVDTC4KCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBTZXQgU1lNQk9MX1JFRl9ERUNMLgoJKGFzc2VtYmxlX3N0YXRpY19zcGFjZSk6IFNldCBTWU1CT0xfUkVGX0ZMQUdTLgoJKGFzc2VtYmxlX3RyYW1wb2xpbmVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShvdXRwdXRfY29uc3RhbnRfZGVmLCBmb3JjZV9jb25zdF9tZW0pOiBMaWtld2lzZS4KCShkZWZhdWx0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBOZXcuCgkqIG91dHB1dC5oOiBEZWNsYXJlIGl0LgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9FTkNPREVfU0VDVElPTl9JTkZPKTogVXNlIGl0LgoKMjAwMy0wNC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGxpYmZ1bmNzLmggKExUSV9zZXRiaXRzLCBMVElfZ2Nvdl9mbHVzaCwgTFRJX2djb3ZfaW5pdCk6IE5ldy4KCShzZXRiaXRzX2xpYmZ1bmMsIGdjb3ZfZmx1c2hfbGliZnVuYywgZ2Nvdl9pbml0X2xpYmZ1bmMpOiBOZXcuCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgdGhlbS4KCShpbml0X2xpYmZ1bmNzKTogVXNlIGluaXRfb25lX2xpYmZ1bmMuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogVXNlIGdjb3ZfZmx1c2hfbGliZnVuYy4KCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IFVzZSBzZXRiaXRzX2xpYmZ1bmMuCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9tYWluX2Z1bmN0aW9uKTogVXNlIGluaXRfb25lX2xpYmZ1bmMuCgkqIHByb2ZpbGUuYyAoY3JlYXRlX3Byb2ZpbGVyKTogVXNlIGdjb3ZfaW5pdF9saWJmdW5jIGFuZCBERUNMX1JUTC4KCjIwMDMtMDQtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvYy10cmVlLnRleGkgKEZ1bmN0aW9ucyk6IFJlbW92ZSBERUNMX1JFQUxfQ09OVEVYVAoJZG9jdW1lbnRhdGlvbjsgYWRkIERFQ0xfRlJJRU5EX0NPTlRFWFQuCgoyMDAzLTA0LTExICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogZG9jL2luc3RhbGwudGV4aSAoaHBwYSk6IFVwZGF0ZSBsaW5rcyBmb3IgSFAtVVggcGF0Y2hlcy4gIFJldmlzZQoJbm90ZXMgb24gbGlua2VyIHNlbGVjdGlvbiBhbmQgY29uZmlndXJhdGlvbiBmb3IgNjQtYml0IEhQLVVYIHBvcnQuCgkqIGRvYy9pbnZva2UudGV4aSAoaHBwYSk6IFJlbW92ZSBocHBhIHRleHQgZnJvbSBkZXNjcmlwdGlvbiBmb3IKCS1mZnVuY3Rpb24tc2VjdGlvbnMgYW5kIC1mZGF0YS1zZWN0aW9ucy4gIERvY3VtZW50IC1zdGF0aWMsIC1ub2xpYmRsZAoJYW5kIC10aHJlYWRzIG9wdGlvbnMuCgoJKiBwYS1ocHV4MTAuaCAoTElCX1NQRUMpOiBBZGQgbGluayBvcHRpb25zIHRvIHJlc29sdmUgZGVwZW5kZW5jeSBvZgoJbGliYy5hIG9uIGxpYmRsZC5zbCB3aGVuIC1zdGF0aWMgaXMgc3BlY2lmaWVkIGFuZCAtbm9saWJkbGQgaXMgbm90CglzcGVjaWZpZWQuCgkqIHBhNjQtaHB1eC5oIChMSUJfU1BFQyk6IExpa2V3aXNlLgoJKiBwYS1ocHV4MTEuaCAoTElCX1NQRUMpOiBMaWtld2lzZS4KCShMSU5LX1NQRUMpOiBBZGQgX19nY2NfcGx0X2NhbGwgYXMgYW4gdW5kZWZpbmVkIHN5bWJvbCB3aGVuIC1zaGFyZWQKCWlzIG5vdCBzcGVjaWZpZWQuCgoyMDAzLTA0LTExICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2Rhcndpbi1jLmMgKGRhcndpbl9wcmFnbWFfdW51c2VkKTogVXNlIGxvb2t1cF9uYW1lLAoJbm90IElERU5USUZJRVJfTE9DQUxfVkFMVUUuCgoyMDAzLTA0LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMvMTAyMDEKCSogZXhwci5jIChleHBhbmRfZXhwcik6IE1vdmUgREVDTF9SVEwgZnJvYmJpbmcgLi4uCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogLi4uIGhlcmUuCgoyMDAzLTA0LTExICBKYW1lcyBBLiBNb3JyaXNvbiA8amEybW9ycmlAdXdhdGVybG9vLmNhPgoKCSogZG9jL2ludm9rZS50ZXhpOiBFbGltaW5hdGUgZXh0cmEgd2hpdGUtc3BhY2UgY2F1c2VkIGJ5CglAZ2Njb3B0bGlzdHsgb24gaXRzIG93biBsaW5lLgoJKiBkb2MvaW52b2tlLnRleGk6IEVuc3VyZWQgdGhlcmUgYXJlIHR3byBzcGFjZXMgYmV0d2VlbiBlYWNoIG9wdGlvbi4KCSogZG9jL2ludm9rZS50ZXhpOiBSZS13cmFwcGVkIG9wdGlvbiBsaW5lcyB0aGF0IHdlcmUgdG9vIHdpZGUuCglBZGRlZCBAZ29sIHRvIG9wdGlvbnMgdGhhdCBkaWRuJ3QgaGF2ZSB0aGVtLgoKMjAwMy0wNC0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChsb29wLWluaXQubyk6IERvIG5vdCBkZXBlbmQgb24gZ2Nvdi1pby5oLAoJZ2Nvdi1pb3YuaC4KCglTaW1wbGlmeSBpbnRlcmZhY2UgdG8gZ2NvdiByZWFkaW5nIGFuZCB3cml0aW5nLgoJKiBnY292LWlvLmggKGdjb3ZfZmlsZSwgZ2Nvdl9wb3NpdGlvbiwgZ2Nvdl9sZW5ndGgsIGdjb3ZfYnVmZmVyLAoJZ2Nvdl9hbGxvYywgZ2Nvdl9tb2RpZmllZCwgZ2Nvdl9lcnJvcmVkKTogTW92ZSBpbnRvIC4uLgoJKHN0cnVjdCBnY292X3ZhciBnY292X3Zhcik6IC4uLiB0aGlzIHN0YXRpYyBzdHJ1Y3R1cmUuCgkoZ2Nvdl93cml0ZV91bnNpZ25lZCwgZ2Nvdl93cml0ZV9jb3VudGVyLCBnY292X3dyaXRlX3N0cmluZyk6CglSZXR1cm4gdm9pZC4KCShnY292X3JlYWRfdW5zaWduZWQsIGdjb3ZfcmVhZF9jb3V0ZXIsIGdjb3ZfcmVhZF9zdHJpbmcpOiBSZXR1cm4KCXJlYWQgb2JqZWN0LgoJKGdjb3ZfcmVhZF9ieXRlcywgZ2Nvdl93cml0ZV9ieXRlcyk6IFNldCBlcnJvciBmbGFnIG9uIGVycm9yLgoJKGdjb3ZfcmVzZXJ2ZV9sZW5ndGgpOiBSZW1vdmUuCgkoZ2Nvdl93cml0ZV90YWcpOiBOZXcuCgkoZ2Nvdl93cml0ZV9sZW5ndGgpOiBBZGp1c3QuCgkoZ2Nvdl9yZWFkX3N1bW1hcnksIGdjb3Zfd3JpdGVfc3VtbWFyeSk6IEFkanVzdC4KCShnY292X2VvZiwgZ2Nvdl9vayk6IFJlbmFtZSB0byAuLi4KCShnY292X2lzX2VvZiwgZ2Nvdl9pc19lcnJvcik6IC4uLiBoZXJlLiBSZXR1cm4gZXJyb3IgY29kZS4KCShnY292X3NhdmVfcG9zaXRpb24sIGdjb3ZfcmVzeW5jKTogUmVuYW1lIHRvIC4uLgoJKGdjb3ZfcG9zaXRpb24sIGdjb3Zfc2Vlayk6IC4uLiBoZXJlLgoJKGdjb3Zfc2tpcCwgZ2Nvdl9za2lwX3N0cmluZyk6IFJlbW92ZS4KCShnY292X2Vycm9yKTogUmVtb3ZlLgoJKGdjb3Zfb3BlbiwgZ2Nvdl9jbG9zZSk6IEFkanVzdC4KCSogZ2Nvdi5jIChmaW5kX3NvdXJjZSk6IFRha2UgY29uc3QgY2hhciAqLCBjb3B5IGl0IG9uIGFsbG9jYXRpb24uCgkocmVhZF9ncmFwaF9maWxlKTogQWRqdXN0LgoJKHJlYWRfY291bnRfZmlsZSk6IEFkanVzdC4KCSogbGliZ2Nvdi5jIChnY292X2V4aXQpOiBBZGp1c3QuCgkqIGdjb3YtZHVtcC5jICh0YWdfZnVuY3Rpb24sIHRhZ19ibG9ja3MsIHRhZ19hcmNzLCB0YWdfbGluZXMsCgl0YWdfYXJjX2NvdW50cywgdGFnX3N1bW1hcnkpOiBSZXR1cm4gdm9pZC4gQWRqdXN0LgoJKHN0cnVjdCB0YWdfZm9ybWF0KTogQWRqdXN0IHByb2MgbWVtYmVyLgoJKGR1bXBfZmlsZSk6IEFkanVzdCBnY292IGNhbGxzLgoKMjAwMy0wNC0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogUGFzcyBCVUlMRF9MSUJFUlRZIGFzIExJQkVSVFkgdG8KCW1rZml4aW5jLnNoLgoJKiBmaXhpbmMvbWtmaXhpbmMuc2ggKGRlZnMpOiBBZGQgTElCRVJUWS4KCSogY29uZmlndXJlLmluIChTVE1QX0ZJWElOQywgU1RNUF9GSVhQUk9UTyk6IERvbid0IGRpc2FibGUgb24KCWJ1aWxkICE9IGhvc3Qgc3lzcm9vdGVkIGJ1aWxkcy4KCSogY29uZmlndXJlLmluIChTWVNURU1fSEVBREVSX0RJUik6IE1ha2Ugc3VyZSBpdCBjb250YWlucwoJVEFSR0VUX1NZU1RFTV9ST09UIGV2ZW4gb24gc3lzcm9vdGVkIG5hdGl2ZXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDMtMDQtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBBZGQgc2hhZG93ZWRfdGFncyBhbmQKCWZ1bmN0aW9uX2JvZHk7IHJlbW92ZSB0aGlzX2Jsb2NrLCB0YWdfdHJhbnNwYXJlbnQsIGFuZAoJc3ViYmxvY2tzX3RhZ190cmFuc3BhcmVudDsgdXBkYXRlIGNvbW1lbnRzLgoJKGNsZWFyX2JpbmRpbmdfbGV2ZWwsIGxvb2t1cF90YWdfcmV2ZXJzZSk6IEtpbGwuCgkobWFrZV9iaW5kaW5nX2xldmVsKTogVXNlIGdnY19hbGxvY19jbGVhcmVkIG9yIG1lbXNldC4KCShsb29rdXBfdGFnKTogUmVtb3ZlIHN0cnVjdCBiaW5kaW5nX2xldmVsKiBwYXJhbWV0ZXIuICBBbGwKCWNhbGxlcnMgY2hhbmdlZC4gSnVzdCBsb29rIGF0IElERU5USUZJRVJfVEFHX1ZBTFVFLCBhbmQKCWN1cnJlbnRfYmluZGluZ19sZXZlbC0+dGFncyBpZiBhc2tlZCBmb3IgdGhpc2xldmVsX29ubHkgb3IgaWYKCXdlIG1pZ2h0IGhhdmUgdG8gZGlhZ25vc2UgInN0cnVjdCBmb287IHVuaW9uIGZvbzsiCgkocHVzaGxldmVsKTogSWdub3JlIGFyZ3VtZW50LiAgRG8gbm90IHB1c2ggYW5vdGhlciBiaW5kaW5nCglsZXZlbCBvbiB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBwYXJhbWV0ZXJzIHRvIHRoZSB0b3AgbGV2ZWwKCW9mIHRoZSBmdW5jdGlvbiBib2R5OyBqdXN0IHR3ZWFrIHRoZSBmbGFncyBhbmQgcHJvY2VlZC4KCShwb3BsZXZlbCk6IE92ZXJoYXVsLiAgQ2xlYXIgSURFTlRJRklFUl9UQUdfVkFMVUVzOyBvbiBleGl0aW5nCglhIGZ1bmN0aW9uIGJvZHksIHNlcGFyYXRlIHRoZSBwYXJhbWV0ZXIgbGlzdCBmcm9tIHRoZQoJdG9wLWxldmVsIGxvY2FsIHZhcmlhYmxlcy4KCShzZXRfYmxvY2spOiBEbyBub3RoaW5nLgoJKHB1c2h0YWcpOiBTZXQgSURFTlRJRklFUl9UQUdfVkFMVUUgYW5kIGFkZCBhbiBlbnRyeSB0bwoJc2hhZG93ZWRfdGFncyBpZiBuZWNlc3NhcnkuCgkod2Fybl9pZl9zaGFkb3dpbmcpOiBOdWtlIHRoZSBzcGVjaWFsIGNhc2UgZm9yIGxvY2FsIHNoYWRvd2luZwoJcGFyYW1ldGVyLgoJKHB1c2hkZWNsKTogRG8gbm90IGNyZWF0ZSBhIHNoYWRvdyBlbnRyeSBpZiB3ZSBhcmUgcmVwbGFjaW5nCglhbiBvbGRlciBkZWNsIGluIHRoZSBzYW1lIGJpbmRpbmcgbGV2ZWwuCgkocHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwpOiBUd2VhayBmb3IgbmV3IHdheSBvZiBpbmRpY2F0aW5nCglmdW5jdGlvbiBzY29wZS4KCShzaGFkb3dfdGFnX3dhcm5lZCk6IFVzZSBUWVBFX05BTUUsIG5vdAlsb29rdXBfdGFnX3JldmVyc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBzZXQgc3ViYmxvY2tzX3RhZ190cmFuc3BhcmVudC4KCShmaW5pc2hfZnVuY3Rpb24pOiBGaXggdXAgdGhlIGJpbmRpbmdfbGV2ZWwgc3RhY2sgZm9yIHRvdGFsbHkKCWVtcHR5IGZ1bmN0aW9ucy4gIE90aGVyd2lzZSwgZG9uJ3QgY2FsbCBwb3BsZXZlbC4KCgkqIGMtY29tbW9uLmMgKHNoYWRvd193YXJuaW5nKTogTUFOREFUT1JZIGFyZ3VtZW50IGlzIG5vIGxvbmdlcgoJbmVjZXNzYXJ5LiAgQWx3YXlzIHVzZSBwbGFpbiB3YXJuaW5nLgoJKiBjLWNvbW1vbi5oOiBVcGRhdGUgdG8gbWF0Y2guCgoJKiBjZmdsYXlvdXQuYyAoc2NvcGVfdG9faW5zbnNfaW5pdGlhbGl6ZSk6IENsZWFyIGJsb2NrIHdoZW4gd2UKCWhpdCB0aGUgRlVOQ1RJT05fREVDTC4KCSogZnVuY3Rpb24uYzogRG8gbm90IGNyZWF0ZSBjeWNsaWMgdHJlZSBzdHJ1Y3R1cmUuCgoyMDAzLTA0LTEwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLmggKHN0cnVjdCBsYW5nX2lkZW50aWZpZXIpOiBSZXBsYWNlIGdsb2JhbF92YWx1ZSwKCWxvY2FsX3ZhbHVlIG1lbWJlcnMgd2l0aCBzeW1ib2xfdmFsdWUsIHRhZ192YWx1ZS4gIEtpbGwKCWltcGxpY2l0X2RlY2wgYW5kIGxpbWJvX3ZhbHVlLgoJKElERU5USUZJRVJfR0xPQkFMX1ZBTFVFLCBJREVOVElGSUVSX0xPQ0FMX1ZBTFVFLAoJSURFTlRJRklFUl9MSU1CT19WQUxVRSwgSURFTlRJRklFUl9JTVBMSUNJVF9ERUNMLAoJQ19NSVNTSU5HX1BST1RPVFlQRV9XQVJORUQpOiBLaWxsLgoJKElERU5USUZJRVJfU1lNQk9MX1ZBTFVFLCBJREVOVElGSUVSX1RBR19WQUxVRSwKCUNfREVDTF9JTVBMSUNJVCwgQ19ERUNMX0lTTlRfUFJPVE9UWVBFKTogTmV3LgoJKENfREVDTF9BTlRJQ0lQQVRFRCk6IFJlbmFtZSB0byBDX0RFQ0xfSU5WSVNJQkxFLgoJKGltcGxpY2l0X2RlY2xfd2FybmluZywgbG9va3VwX25hbWVfY3VycmVudF9sZXZlbCwKCXJlY29yZF9mdW5jdGlvbl9zY29wZV9zaGFkb3cpOiBEb24ndCBwcm90b3R5cGUuCgkocHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwpOiBQcm90b3R5cGUuCgoJKiBjLWRlY2wuYyAodHJ1bHlfbG9jYWxfZXh0ZXJuYWxzKTogTmV3IHZhcmlhYmxlLgoJKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogQWRqdXN0IGNvbW1lbnRhcnkuCgkoZ2V0X2Z1bmN0aW9uX2JpbmRpbmdfbGV2ZWwsIGNsZWFyX2xpbWJvX3ZhbHVlcywKCXJlY29yZF9mdW5jdGlvbl9zY29wZV9zaGFkb3cpOiBLaWxsLgoJKGxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwsIGltcGxpY2l0X2RlY2xfd2FybmluZyk6IEFyZQlub3cgc3RhdGljLgoJKGFueV9leHRlcm5hbF9kZWNsLCByZWNvcmRfZXh0ZXJuYWxfZGVjbCk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGNsb25lX3VuZGVybHlpbmcgdHlwZSk6IFNwbGl0IG91dCBvZiBwdXNoZGVjbC4KCShjX3ByaW50X2lkZW50aWZpZXIpOiBVcGRhdGUgdG8gbWF0Y2ggY2hhbmdlcyB0byBzdHJ1Y3QKCWxhbmdfaWRlbnRpZmllci4KCShwb3BsZXZlbCk6IERlbGV0ZSAjaWYgMCBibG9jay4gIE1ha2UgZXh0ZXJuYWxzIGludmlzaWJsZQoJaW5zdGVhZCBvZiBjbGVhcmluZyB0aGVpciBJREVOVElGSUVSX1NZTUJPTF9WQUxVRXMuICBEb24ndAoJY2FsbCBjbGVhcl9saW1ib192YWx1ZXMuICBSZWZlciB0byBJREVOVElGSUVSX1NZTUJPTF9WQUxVRSBub3QKCUlERU5USUZJRVJfR0xPQkFMX1ZBTFVFIG9yIElERU5USUZJRVJfTE9DQUxfVkFMVUUuCgkoZHVwbGljYXRlLWRlY2xzKTogRm9yIHJlYWwgcGFybSBkZWNsIGFmdGVyIGEgZm9yd2FyZCBkZWNsLAoJc2V0IFRSRUVfQVNNX1dSSVRURU4gaGVyZS4gIEFsbG93IHZvaWQgZm9vKC4uLikgZm9sbG93ZWQgYnkKCWZvbyguLi4pIHsgfSB3aXRoIG9ubHkgYSB3YXJuaW5nLiAgU2F5IHdoZXRoZXIgYSBwcmV2aW91cwoJZGVjbGFyYXRpb24gd2FzIGltcGxpY2l0LgoJKHdhcm5faWZfc2hhZG93aW5nKTogTm93IGhhbmRsZXMgYWxsIHNoYWRvd2luZywgbm90IGp1c3QKCWxvY2FsLW92ZXItbG9jYWwuICBDbGFyaWZ5IGNvbW1lbnRzLgoJKHB1c2hkZWNsKTogUmV3cml0dGVuLiAgVGhlcmUgaXMgbm8gbG9uZ2VyIGEgZGlzdGluY3Rpb24KCWJldHdlZW4gZ2xvYmFsIGFuZCBsb2NhbCBzeW1ib2wgdmFsdWVzOyB0aGV5J3JlIGFsbAoJSURFTlRJRklFUl9TWU1CT0xfVkFMVUUuICBDYWxsIHJlY29yZF9leHRlcm5hbF9kZWNsIG9uIGFsbAoJREVDTF9FWFRFUk5BTCBkZWNscywgYW5kIHVzZSBhbnlfZXh0ZXJuYWxfZGVjbCB0byBjaGVjawoJYWdhaW5zdCBwcmV2aW91cyBleHRlcm5hbHMuICBLaWxsICNpZiAwIGJsb2Nrcy4gIERvbid0Cgl0b2xlcmF0ZSBlcnJvcl9tYXJrX25vZGUgYmVpbmcgTlVMTC4KCShwdXNoZGVjbF90b3BfbGV2ZWwpOiBIYW5kbGUgb25seSB0aG9zZSBjYXNlcyB3aGljaAoJT2JqZWN0aXZlIEMgKHRoZSBvbmx5IHVzZXIpIG5lZWRzLgoJKHB1c2hkZWNsX2Z1bmN0aW9uX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IENyZWF0ZSBvcmRpbmFyeSBkZWNscyB3aXRoCglDX0RFQ0xfSU1QTElDSVQgc2V0LiAgUmVjeWNsZSBvbGQgZGVjbHMsIGhvd2V2ZXIgdGhleSBnb3QKCWNyZWF0ZWQuCgkobG9va3VwX25hbWUpOiBJdCdzIGFsd2F5cyBJREVOVElGSUVSX1NZTUJPTF9WQUxVRS4gUmV0dXJuIDAKCWZvciBDX0RFQ0xfSU5WSVNJQkxFIHN5bWJvbHMuCgkobG9va3VwX25hbWVfY3VycmVudF9sZXZlbCk6IExpa2V3aXNlLiAgVXNlIGNoYWluX21lbWJlci4KCShjX21ha2VfZm5hbWVfZGVjbCk6IERvbid0IG11Y2sgd2l0aCBERUNMX0NPTlRFWFQuCglVc2UgcHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwuCgkoYnVpbHRpbl9mdW5jdGlvbik6IFVzZSBDX0RFQ0xfSU5WSVNJQkxFLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgbXVjayB3aXRoIElERU5USUZJRVJfSU1QTElDSVRfREVDTC4KCVVzZSBDX0RFQ0xfSVNOVF9QUk9UT1RZUEUgYW5kIENfREVDTF9JTVBMSUNJVC4KCShzdG9yZV9wYXJtX2RlY2xzKTogSXQncyBJREVOVElGSUVSX1NZTUJPTF9WQUxVRSBub3cuCgkoaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUpOiBTYW1lLiAgTXVzdCBzY2FuCglnbG9iYWxfYmluZGluZ19sZXZlbCBpbiBleHRyZW1pcy4KCgkqIGMtdHlwZWNrLmMgKHVuZGVjbGFyZWRfdmFyaWFibGUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLCBzcGxpdAoJZnJvbSBidWlsZF9leHRlcm5hbF9yZWYuCgkoYnVpbGRfZXh0ZXJuYWxfcmVmKTogVXNlIERFQ0xfQ09OVEVYVCwgbm90CglJREVOVElGSUVSX0xPQ0FMX1ZBTFVFLCB0byBkZWNpZGUgd2hldGhlciBhIGxvY2FsIGhpZGVzCglhbiBpbnN0YW5jZSB2YXJpYWJsZS4gIFJlc3RydWN0dXJlIGZvciBjbGFyaXR5LgoJKiBvYmpjL29iamMtYWN0LmM6IFVzZSBpZGVudGlmaWVyX2dsb2JhbF92YWx1ZSwgbm90CglJREVOVElGSUVSX0dMT0JBTF9WQUxVRS4KCjIwMDMtMDQtMDggIEpvbmF0aGFuIFdha2VseSAgPHJlZGlAZ2NjLmdudS5vcmc+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKFRlbXBsYXRlIEluc3RhbnRpYXRpb24pOiBSZWZlciB0byBJU08gc3RhbmRhcmQsCglub3QgV29ya2luZyBQYXBlci4KCSogZG9jL2ludm9rZS50ZXhpIChDKysgRGlhbGVjdCBPcHRpb25zKTogU2FtZS4KCjIwMDMtMDQtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKHRyZWVfb3BlcmFuZF9jaGVja19mYWlsZWQpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAoVFJFRV9PUEVSQU5EX0NIRUNLLCBUUkVFX09QRVJBTkRfQ0hFQ0tfQ09ERSwKCVRSRUVfUlRMX09QRVJBTkRfQ0hFQ0spOiBOZXcgY2hlY2tpbmcgbWFjcm9zLgoJKFRSRUVfT1BFUkFORCwgU0FWRV9FWFBSX0NPTlRFWFQsIFNBVkVfRVhQUl9SVEwsCglSVExfRVhQUl9TRVFVRU5DRSwgUlRMX0VYUFJfUlRMLCBXSVRIX0NMRUFOVVBfRVhQUl9SVEwsCglDT05TVFJVQ1RPUl9FTFRTLCBMQUJFTEVEX0JMT0NLX0xBQkVMLCBMQUJFTEVEX0JMT0NLX0JPRFksCglFWElUX0JMT0NLX1JFVFVSTiwgTE9PUF9FWFBSX0JPRFksIEVYUFJfV0ZMX05PREUsCglFWFBSX1dGTF9GSUxFTkFNRV9OT0RFLCBFWFBSX1dGTF9GSUxFTkFNRSwgVEFSR0VUX0VYUFJfU0xPVCwKCVRBUkdFVF9FWFBSX0lOSVRJQUwsIFRBUkdFVF9FWFBSX0NMRUFOVVApOiBVc2UgdGhlIG5ldwoJY2hlY2tpbmcgbWFjcm9zLgoKVGh1IEFwciAxMCAyMzo1MjozMCBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBpbmxpbmUtYXNtLzg4MDMKCSogZnVuY3Rpb24uYyAoaW5zdGFudGF0ZV92aXJ0dWFsX3JlZ3MpOiAgVmVyaWZ5IHRoYXQgYWxsIEFTTSBzdGF0ZW1lbnRzCgltYXRjaCBhZnRlciB0aGUgdmlydXRhbCByZWdzIGluc3RhbnRpYXRpb24uCgoyMDAzLTA0LTEwICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGlhNjQtcHJvdG9zLmggKGFkZHA0X29wdGltaXplX29rKTogTmV3LgoJKiBpYTY0LmMgKGFkZHA0X29wdGltaXplX29rKTogTmV3LgoJKiBpYTY0Lm1kICgqcHRyX2V4dGVuZF9wbHVzXzEpOiBVc2UgYWRkcDRfb3B0aW1pemVfb2suCgkoKnB0cl9leHRlbmRfcGx1c18yKTogRGl0dG8uCgoyMDAzLTA0LTEwICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQpOiBFeHRlbmQgb2Zmc2V0X3J0eCB3aXRoIGNvbnZlcnRfdG9fbW9kZQoJbm90IHdpdGggY29udmVydF9tZW1vcnlfYWRkcmVzcy4KCShzdG9yZV9jb25zdHJ1Y3Rvcik6IERpdHRvLCBhbmQgc2FtZSBmb3IgY29weV9zaXplX3J0eC4KCShleHBhbmRfZXhwcik6IERpdHRvLgoKMjAwMy0wNC0xMCAgRG91Z2xhcyBCIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X21zX2JpdGZpZWxkX2xheW91dF9wKTogRml4IGZvcm1hdHRpbmcuCgoyMDAzLTA0LTEwICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS9saWIyZnVuY3MuUyAoX194dGVuc2Ffc3luY19jYWNoZXMpOiBGbHVzaCBkYXRhIGNhY2hlCglldmVuIGlmIGl0IGlzIGNvbmZpZ3VyZWQgdG8gYmUgd3JpdGUtdGhyb3VnaC4KCjIwMDMtMDQtMTAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGFybF9vcGVyYW5kKTogRG8gbm90IGFsbG93IHN5bWJvbHMKCW1hcmtlZCB3aXRoICdAJy4KCShzMzkwX2VuY29kZV9zZWN0aW9uX2luZm8pOiBNYXJrIHN5bWJvbHMgd2l0aCBmb3JjZWQgMS1ieXRlCglhbGlnbm1lbnQgd2l0aCAnQCcuCgkoczM5MF9zdHJpcF9uYW1lX2VuY29kaW5nKTogU3RyaXAgJ0AnLgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBIYW5kbGUgc3ltYm9scyB0aGF0IGFyZSBub3QgdmFsaWQKCUxBUkwgb3BlcmFuZHMgaW4gNjQtYml0IG1vZGUuCgoyMDAzLTA0LTEwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtaW5saW5lLmMgKGlubGluYWJsZV9mdW5jdGlvbl9wKTogRGlzYWJsZSBpbmxpbmluZyBmb3IKCXN5bmNocm9uaXplZCBtZXRob2RzLgoKMjAwMy0wNC0wOSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogYy1jb21tb24uaCAobGFuZ19zdGF0ZW1lbnRfY29kZV9wKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKHN0YXRlbWVudF9jb2RlX3ApOiBEaXR0by4KCShjX2NvbW1vbl9zdG10X2NvZGVzKTogRGVmaW5lOyBsaXN0IG9mIGMtY29tbW9uIHN0YXRlbWVudCBjb2Rlcy4KCShzdGF0ZW1lbnRfY29kZV9wKTogTmV3IGV4dGVybiBkZWNsYXJhdGlvbi4KCShTVEFURU1FTlRfQ09ERV9QKTogRGVmaW5lLgoJKElOSVRfU1RBVEVNRU5UX0NPREVTKTogRGVmaW5lLgoJKiBjLWNvbW1vbi5jIChzdGF0ZW1lbnRfY29kZV9wKTogS2lsbCB0aGUgZnVuY3Rpb24sIGRlY2xhcmUKCWFzIGFuIGFycmF5IG9mIGJvb2xzIGluc3RlYWQuCgkobGFuZ19zdGF0ZW1lbnRfY29kZV9wKTogUmVtb3ZlLgoJKHdhbGtfc3RtdF90cmVlKTogVXNlIFNUQVRFTUVOVF9DT0RFX1Agbm90IHN0YXRlbWVudF9jb2RlX3AuCgkoY19zYWZlX2Zyb21fcCk6IERpdHRvLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfb2JqY19jb21tb25faW5pdCk6IFVzZSBJTklUX1NUQVRFTUVOVF9DT0RFUwoJdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGVtZW50X2NvZGVfcCBhcnJheS4KCSogdHJlZS1pbmxpbmUuYyAod2Fsa190cmVlKTogVXNlIFNUQVRFTUVOVF9DT0RFX1AgaW5zdGVhZCBvZgoJc3RhdGVtZW50X2NvZGVfcC4KCShjb3B5X3RyZWVfcik6IERpdHRvLgoJKiBjcC9jcC10cmVlLmggKGNwX3N0bXRfY29kZXMpOiBEZWZpbmU7IGxpc3Qgb2YgQysrIHNwZWNpZmljCglzdGF0ZW1lbnQgdHJlZSBjb2Rlcy4KCSogY3AvbGV4LmMgKGN4eF9pbml0KTogQWRkIG1pc3NpbmcgcHJpbnQgbGluZSBicmVhay4gIFVzZQoJSU5JVF9TVEFURU1FTlRfQ09ERVMgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGVtZW50X2NvZGVfcCBhcnJheS4KCSogY3AvcGFyc2VyLmMgKGNwX3BhcnNlcl9zdGF0ZW1lbnQpOiBVc2UgU1RBVEVNRU5UX0NPREVfUAoJaW5zdGVhZCBvZiBzdGF0ZW1lbnRfY29kZV9wLgoJKiBjcC9wdC5jICh0c3Vic3RfZXhwcik6IERpdHRvLgoJKiBjcC90cmVlLmMgKHZlcmlmeV9zdG10X3RyZWVfcik6IERpdHRvLgoJKGNwX3N0YXRlbWVudF9jb2RlX3ApOiBSZW1vdmUuCgkoaW5pdF90cmVlKTogRG9uJ3Qgc2V0IGxhbmdfc3RhdGVtZW50X2NvZGVfcCwgaXQncyBnb25lLgoKMjAwMy0wNC0wOSAgRGFuIE5pY29sYWVzY3UgIDxkYW5uQGljcy51Y2kuZWR1PgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiByZWdyZW5hbWUuYyAoc3RydWN0IGR1X2NoYWluKTogVXNlIGEgYml0ZmllbGQgZm9yIHJlZ19jbGFzcy4KCSogY3NlLmMgKHN0cnVjdCBxdHlfdGFibGVfZWxlbSwgc3RydWN0IHRhYmxlX2VsdCwgc3RydWN0IHNldCk6CglVc2UgYml0ZmllbGRzIGZvciBmaWVsZHMgaG9sZGluZyBlbnVtIHJ0eF9jb2RlIG9yCgllbnVtIG1hY2hpbmVfbW9kZSB2YWx1ZXMuICBBZGQgY29tbWVudHMgZXhwbGFpbmluZyBzaXplIGNob2ljZXMuCgoyMDAzLTA0LTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcC1iaXQuYyAodW5wYWNrX2QpOiBIYW5kbGUgcGFpciBvZiBkb3VibGVzIHdpdGgKCWRpZmZlcmVudCBzaWducyBjb3JyZWN0bHkuCgoyMDAzLTA0LTA5ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIHNjaGVkLWRlcHMuYyAocmVnX3BlbmRpbmdfYmFycmllcl9tb2RlKTogTmV3IGVudW1lcmF0aW9uLgoJKHJlZ19wZW5kaW5nX2JhcnJpZXIpOiBNYWtlIGl0IG9mIHRoZSBlbnVtZXJhdGlvbiB0eXBlLgoJKHNjaGVkX2FuYWx5emVfMik6IERlZmluZSB0aGUgYmFycmllciBhcyBNT1ZFX0JBUlJJRVIgb3IKCVRSVUVfQkFSUklFUi4KCShzY2hlZF9hbmFseXplKTogRGl0dG8uCgkoc2NoZWRfYW5hbHl6ZV9pbnNuKTogRGl0dG8uICBVc2UgYW50aS1kZXBlbmRlbmNpZXMgZm9yCglNT1ZFX0JBUlJJRVIgYW5kIHRydWUtZGVwZW5kZW5jaWVzIGFzIFRSVUVfQkFSUklFUi4KCShpbml0X2RlcHNfZ2xvYmFsKTogSW5pdGlhbGl6ZSB0aGUgYmFycmllciBhcyBOT19CQVJSSUVSLgoKMjAwMy0wNC0wOSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlzc3VlX25vcHNfYW5kX2luc24pOiBBZGQgbmV3IHBhcmFtZXRlci4KCUNoZWNrIHRoYXQgYXNtIGluc24gc3RhcnRzIG9uIGEgbmV3IGN5Y2xlLiAgQWRkIG5vcHMgYWZ0ZXIgYXNtCglpbnNuIHRvIGVuZCBidW5kbGUuCgkoYnVuZGxpbmcpOiBNb3ZlIGluc24gdHlwZSBldmFsdWF0aW9uIGZyb20gdGhlIGxvb3AuICBDYWxsCglpc3N1ZV9ub3BzX2FuZF9pbnNuIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIuICBJZ25vcmUgY2hhbmdpbmcKCXBvc2l0aW9uIGZvciBub3BzIGFmdGVyIGFzbSBpbnNuLgoKMjAwMy0wNC0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBvcHRhYnMuYzogQ29tbWVudCB0aGF0IGdlbl9hZGQyX2luc24gYW5kIG90aGVycyBtYXkgYWN0dWFsbHkKCXJldHVybiBlbWl0dGVkIGluc25zLCBpZiB0aGUgZ2VuIGZ1bmN0aW9ucyB0dXJuIG91dCB0byByZXR1cm4KCWVtaXR0ZWQgaW5zbnMuCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NzZV9tb3ZlMmFkZCk6IENvcGUgd2l0aCBlbWl0dGVkIGluc25zIGZyb20KCWdlbl9hZGQyX2luc24uCgoyMDAzLTA0LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChtb3ZlX29wZXJhbmQpOiBBbGxvdyBzeW1ib2xpY19vcGVyYW5kLAoJYnV0IG5vdCB0bHNfc3ltYm9saWNfb3BlcmFuZC4KCShpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MpOiBSZW1vdmUgc2NyYXRjaCBvcGVyYW5kLgoJKGlhNjRfZXhwYW5kX3Rsc19hZGRyZXNzKTogU3BsaXQgb3V0IGZyb20gaWE2NF9leHBhbmRfbW92ZS4KCShpYTY0X2V4cGFuZF9tb3ZlKTogU3BsaXQgc3ltYm9saWNzIG9ubHkgYWZ0ZXIgcmVsb2FkLgoJKGlhNjRfZW1pdF9jb25kX21vdmUpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92c2lfc3ltYm9saWMsIG1vdmRpX3N5bWJvbGljKTogUmVtb3ZlLgoJKHN5bWJvbGljIHNwbGl0dGVyKTogQWNjZXB0IFNJbW9kZSBvcGVyYW5kcyB0b28uCgkoY21vdmUgc3BsaXR0ZXIpOiBVc2UgaWE2NF9lbWl0X2NvbmRfbW92ZS4KCjIwMDMtMDQtMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBOb3RlIHRoYXQgQVJNIHRvb2xjaGFpbnMgbmVlZCBiaW51dGlscyAyLjEzIG9yCgluZXdlci4KCSogY29uZmlnL2FybS9lbGYuaCAoU1VCVEFSR0VUX0FTTV9GTE9BVF9TUEVDKTogUGFzcyAtbWZwdT1zb2Z0ZnBhCglpbnN0ZWFkIG9mIC1tbm8tZnB1LgoJKiBjb25maWcvYXJtL3NlbWkuaCAoQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS94c2NhbGUtZWxmLmggKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IExpa2V3aXNlLAoJYnV0IG9ubHkgaWYgLW1zb2Z0LWZsb2F0IGlzIHNwZWNpZmllZCBwYXNzLiAgT3RoZXJ3aXNlIHBhc3MKCS1tZnB1PXNvZnR2ZnAuCgoyMDAzLTA0LTA5ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2YpOiBVc2UgZnJlZV9JTlNOX0xJU1Rfbm9kZSBpbnN0ZWFkIG9mCglmcmVlX0VYUFJfTElTVF9ub2RlLgoKMjAwMy0wNC0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiAgVXNlICJmb2xkIiBmb2xsb3dpbmcgYnVpbGQgaW4gbW9yZSBwbGFjZXMuCglPcHRpbWl6ZSBzcXJ0KHgpKnNxcnQoeCkgYXMgeCwgcG93KHgseSkqcG93KHoseSkgYXMgcG93KHgqeix5KSwKCXBvdyh4LHkpKnBvdyh4LHopIGFzIHBvdyh4LHkreikgYW5kIHgvcG93KHkseikgYXMgeCpwb3coeSwteikuCgoyMDAzLTA0LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbik6ICBDb25zdGFudCBmb2xkIGV4cHJlc3Npb25zIGFzIHgqMC41CglpbnN0ZWFkIG9mIHgvMi4wLiAgT3B0aW1pemUgc3FydChwb3coeCx5KSkgYXMgcG93KHgseSowLjUpLAoJbG9nKHBvdyh4LHkpKSBhcyB5KmxvZyh4KSwgcG93KGV4cCh4KSx5KSBhcyBleHAoeCp5KSwKCXBvdyhzcXJ0KHgpLHkpIGFzIHBvdyh4LHkqMC41KSBhbmQgcG93KHBvdyh4LHkpLHopIGFzIHBvdyh4LHkqeikuCglEZWxldGUgZnVuY3Rpb24gc2NvcGUgImZjb2RlIiB2YXJpYWJsZSB0byBhdm9pZCBzaGFkb3dpbmcuCgoyMDAzLTA0LTA4ICBLZXZpbiBCdWV0dG5lciAgPGtldmluYkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKERXQVJGX0FSQU5HRVNfSEVBREVSX1NJWkUsIERXQVJGX0FSQU5HRVNfUEFEX1NJWkUpOgoJVGFrZSBpbnRvIGFjY291bnQgRFdBUkZfSU5JVElBTF9MRU5HVEhfU0laRS4KCjIwMDMtMDQtMDggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogcmVvcmcuYyAoZmlsbF9zbG90c19mcm9tX3RocmVhZCk6IFdoZW4gY29uc2lkZXJpbmcgY2hhbmdpbmcgdGhlCglpbnNuIGZvbGxvd2luZyBhIHJlZy10by1yZWcgY29weSBpbnNuIHRvIHVzZSB0aGUgc291cmNlIHJlZyBvZiB0aGUKCWNvcHksIGJhaWwgb3V0IGlmIHRoZXJlJ3Mgb3ZlcmxhcCBiZXR3ZWVuIHRoZSByZWdpc3RlcnMuCgoyMDAzLTA0LTA4ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBmdW5jdGlvbi5jIChwb3N0cG9uZWRfaW5zbnMpOiBOZXcuCgkocHVyZ2VfYWRkcmVzc29mXzEpOiBQb3N0cG9uZSBwcm9jZXNzaW5nIG9mIGluc25zIGlmIGFkZHJlc3NvZnMKCWFyZSBub3QgcHV0IGludG8gc3RhY2suCgkocHVyZ2VfYWRkcmVzc29mKTogUHJvY2VzcyBwb3N0cG9uZWQgaW5zbnMuCgoyMDAzLTA0LTA4ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmggKE5PUk1BTF9NT0RFKTogSWYgaW50ZXJydXB0IGhhbmRsZXIgYW5kIFRBUkdFVF9GTU9WRCwKCXRoaXMgaXMgRlBfTU9ERV9ET1VCTEUgLgoJKiBzaC5jIChyYS5oKTogI2luY2x1ZGUuCgkocHVzaF9yZWdzKTogQWRkIHNlY29uZCBwYXJhbWV0ZXIuICBDaGFuZ2VkIGFsbCBjYWxsZXJzLgoJSWYgbmVjZXNzYXJ5LCBzZXQgZnBzY3IgYmVmb3JlIHNhdmluZyBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuCgkoY2FsY19saXZlX3JlZ3MpOiBJZiBpbnRlcnJ1cHQgaGFuZGxlciBhbmQgVEFSR0VUX0ZNT1ZELCBhbHdheXMKCWRvIHNhdmVzIC8gcmVzdG9yZXMgd2l0aCBTWiA9PSAxLgoJKHNoX2V4cGFuZF9wcm9sb2d1ZSk6IElmIGludGVycnVwdCBoYW5kbGVyLCBkb24ndCB1c2UgZ2VuX3RvZ2dsZV9zei4KCShzaF9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4gIEZvciBUQVJHRVRfRk1PVkQsIGlmIGZsb2F0aW5nIHBvaW50CglyZWdpc3RlcnMgYXJlIGJlaW5nIHJlc3RvcmVkLCByZXN0b3JlIEZQU0NSIG9ubHkgYWZ0ZXIgcmVzdG9yaW5nIHRoZW0uCgoyMDAzLTA0LTA4ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaW5pdF9idWlsdGlucyk6IFNldCBvcGFxdWUgdHlwZXMKCXJlZ2FyZGxlc3Mgb2YgYXJjaGl0ZWN0dXJlLgoJKHNwZV9pbml0X2J1aWx0aW5zKTogQ2hhbmdlIFYyU0kgYW5kIFYyU0YgdHlwZXMgdG8gb3BhcXVlIHR5cGVzLgoKMjAwMy0wNC0wOCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5jIChwdXNoX3JlZ3MsIGNhbGNfbGl2ZV9yZWdzKTogUmV0dXJuIGludC4gIFRha2Ugc2luZ2xlCglIQVJEX1JFR19TRVQgKiBwYXJhbWV0ZXIuICBDaGFuZ2VkIGFsbCBjYWxsZXJzLgoKVHVlIEFwciAgOCAxMToxMjowNyBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAobGVnaXRpbWF0ZV9waWNfYWRkcmVzc19kaXNwX3ApOiBEbyBub3QgYWNjZXB0IFBMVVMgaW4gdGhlCglHT1RPRkYgb3BlcmFuZC4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTW92ZSBwbHVzIG91dHNpZGUgdGhlIHVuc3BlYy4KCSogaTM4Ni5jIChsZWdpdGltYXRlX2NvbnN0YW50X3ApOiAgQ2hlY2sgKENPTlNUIChQTFVTIChVTlNQRUMgLi4uCglmb3IgdmFsaWRpdHkuCgoyMDAzLTA0LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2Nvdi1pby5oIChnY292X3NhdmVfcG9zaXRpb24pOiBSZW1vdmUgX19pbmxpbmVfXyBmcm9tCglkZWNsYXJhdGlvbi4KCjIwMDMtMDQtMDcgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFVzZSBAY29tbWFuZCBhbmQgQHNhbXAgZm9yIHNpbmdsZS0gYW5kCgltdWx0aS13b3JkIGNvbW1hbmRzIHJlc3BlY3RpdmVseS4KCSogZG9jL21ha2VmaWxlLnRleGk6IExpa2V3aXNlLgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogTGlrZXdpc2UuCgoyMDAzLTA0LTA3ICBDaHJpc3RpYW4gRWhyaGFyZHQgIDxlaHJoYXJkdEBtYXRoZW1hdGlrLnVuaS11bG0uZGU+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjLzk1MTYKCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IFJlYXJyYW5nZSB0byBhdm9pZCBkZWVwIHJlY3Vyc2lvbiBpbgoJZmF2b3Igb2YgbG9vcGluZyBhbmQgdGFpbCByZWN1cnNpb24gZm9yIFRSRUVfTElTVCBhbmQgYmlub3BzLgoKMjAwMy0wNC0wOCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogbG9vcC5oIChSRUdOT19GSVJTVF9MVUlELCBSRUdOT19MQVNUX0xVSUQpOiBQcm92aWRlIGRlZmF1bHRzCglmb3IgaW5zbnMgd2l0aG91dCBsdWlkLgoKMjAwMy0wNC0wNyAgR2xlbiBOYWthbXVyYSAgPGdsZW5AaW1vZHVsby5jb20+CgoJUFIgb3B0Lzg2MzQKCSogZXhwbG93LmMgKG1heWJlX3NldF91bmNoYW5naW5nKTogRG9uJ3QgZmxhZyBub24tc3RhdGljIGNvbnN0CglhZ2dyZWdhdGUgdHlwZSBpbml0aWFsaXplcnMgd2l0aCBSVFhfVU5DSEFOR0lOR19QLgoKMjAwMy0wNC0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBvcHQvODYzNAoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IERvbid0IHRyeSBhcml0aG1ldGljcyBmb3IKCXVuY2hhbmdpbmcgbWVtb3JpZXMuCgoyMDAzLTA0LTA3ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChUZXN0IFN1aXRlcyk6IERvY3VtZW50IHRlc3Rpbmcgc3VwcG9ydCBmb3IKCWdjb3YgYW5kIHByb2ZpbGUtZGlyZWN0ZWQgb3B0aW1pemF0aW9uczsgZGVzY3JpYmUgZ2NjLm1pc2MtdGVzdHMuCgpNb24gQXByICA3IDIyOjE5OjU5IENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRhcmdldC8xMDA3NwoJKiBpMzg2Lm1kIChtb3ZzaV8xLCBtb3ZzaV9ub2ludGVydW5pdF8xKTogIEZpeCBTU0VNT1YgYWx0ZXJuYXRpdmUuCgoyMDAzLTA0LTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL3J0bC50ZXhpIChDb21wYXJpc29uIG9wZXJhdGlvbnMpOiBVcGRhdGUgdG8KCXJlY29yZCB0aGUgYWxsb3dlZCBjb21wYXJpc29uIG1vZGVzLgoKMjAwMy0wNC0wNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2NvbW1vbl9pbml0X2J1aWx0aW5zKTogUmVuYW1lIGFsbAoJVjJTSV90eXBlX25vZGUgdG8gb3BhcXVlX1YyU0lfdHlwZV9ub2RlLiAgUmVuYW1lIGFsbAoJVjJTRl90eXBlX25vZGUgdG8gb3BhcXVlX1YyU0ZfdHlwZV9ub2RlLgoJKHJzNjAwMF9pbml0X2J1aWx0aW5zKTogRGVmaW5lIG9wYXF1ZV9WMlNJX3R5cGVfbm9kZSBhbmQKCW9wYXF1ZV9WMlNGX3R5cGVfbm9kZS4KCShpc19ldjY0X29wYXF1ZV90eXBlKTogVGhlIHR5cGVzIG9wYXF1ZV9WMlNJX3R5cGVfbm9kZSBhbmQKCW9wYXF1ZV9WMlNGX3R5cGVfbm9kZSBhcmUgb3BhcXVlIHR5cGVzLgoKMjAwMy0wNC0wNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBnY3NlLmMgKHJlcGxhY2Vfc3RvcmVfaW5zbik6IFVzZSBzaW5nbGVfc2V0LgoKMjAwMy0wNC0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglDaGFuZ2UgZ2NvdiBmaWxlIGludGVyZmFjZSB0byBzaW5nbGUgZmlsZSBhdCBhIHRpbWUuCgkqIGdjb3YtaW8uaDogUmVwbGFjZSBJTl9MSUJHQ0MxIHdpdGggSU5fTElCR0NPVi4gVXNlIElOX0dDT1YuCglDb252ZXJ0IHRvIEM4OSBwcm90b3R5cGVzLgoJKGdjb3ZfZmlsZSwgZ2Nvdl9sZW5ndGgsIGdjb3ZfcG9zaXRpb24sIGdjb3ZfYnVmZmVyLCBnY292X2FsbG9jLAoJZ2Nvdl9lcnJvciwgZ2Nvdl9tb2RpZmllZCk6IE5ldyBzdGF0aWMgdmFyaWFibGVzLgoJKGdjb3Zfb3BlbiwgZ2Nvdl9jbG9zZSwgZ2Nvdl9yZWFkX2J5dGVzLCBnY292X3dyaXRlX2J5dGVzKTogTmV3CglmdW5jdGlvbnMuCgkoZ2Nvdl93cml0ZV91bnNpZ25lZCwgZ2Nvdl93cml0ZV9jb3VudGVyLCBnY292X3dyaXRlX3N0cmluZywKCWdjb3ZfcmVhZF91bnNpZ25lZCwgZ2Nvdl9yZWFkX2NvdW50ZXIsIGdjb3ZfcmVhZF9zdHJpbmcpOiBBZGp1c3QuCgkoZ2Nvdl9yZWFkX3N1bW1hcnksIGdjb3Zfd3JpdGVfc3VtbWFyeSk6IEFkanVzdC4KCShnY292X3NhdmVfcG9zaXRpb24sIGdjb3ZfcmVzZXJ2ZV9sZW5ndGgsIGdjb3Zfd3JpdGVfbGVuZ3RoKToKCUFkanVzdC4KCShnY292X3Jlc3luYywgZ2Nvdl9za2lwLCBnY292X3NraXBfc3RyaW5nKTogQWRqdXN0LgoJKGRhX2ZpbGVfb3BlbiwgZGFfZmlsZV9jbG9zZSwgZGFfZmlsZV9lb2YsIGRhX2ZpbGVfZXJyb3IpOiBSZW1vdmUuCgkoZGFfZmlsZV9wb3NpdGlvbiwgZGFfZmlsZV9zZWVrLCBkYV9maWxlX3dyaXRlLCBkYV9maWxlX3JlYWQpOgoJUmVtb3ZlLgoJKGdjb3ZfZXJyb3IsIGdjb3ZfZW9mLCBnY292X29rLCBnY292X3RpbWUpOiBOZXcgZnVuY3Rpb25zLgoJKiBnY292LmMgKGdjb3ZfdHlwZSk6IERvbid0IHR5cGVkZWYgaGVyZS4KCShJTl9HQ09WKTogI2RlZmluZQoJKHJlYWRfZ3JhcGhfZmlsZSwgcmVhZF9jb3VudF9maWxlKTogQWRqdXN0LgoJKiBnY292LWR1bXAuYyAoZ2Nvdl90eXBlKTogRG9uJ3QgdHlwZWRlZiBoZXJlLgoJKElOX0dDT1YpOiAjZGVmaW5lLgoJKHRhZ19mdW5jdGlvbiwgdGFnX2Jsb2NrcywgdGFnX2FyY3MsIHRhZ19saW5lcywgdGFnX2FyY19jb3VudHMpOgoJUmVtb3ZlIEZJTEUgcGFyYW1ldGVyLCBhZGp1c3QuCgkoc3RydWN0IHRhZ19mb3JtYXQpOiBBZGp1c3QgcHJvYyBtZW1iZXIuCgkoZHVtcF9maWxlKTogQWRqdXN0LgoJKiBsaWJnY292LmMgKElOX0xJQkdDT1YpOiAjZGVmaW5lLgoJKGdjb3ZfZXhpdCk6IEFkanVzdC4KCSogbG9vcC1pbml0LmM6IERvbid0ICNpbmNsdWRlIGdjb3YtaW8uaAoJKiBwcm9maWxlLmMgKHN0cnVjdCBjb3VudHNfZW50cnkpOiBOZXcgc3RydWN0dXJlIHRvIGhvbGQgY291bnRlcgoJdmFsdWVzLgoJKHN0cnVjdCBzZWN0aW9uX3JlZmVyZW5jZSwgc3RydWN0IGRhX2luZGV4X2VudHJ5KTogUmVtb3ZlLgoJKGJiZ19maWxlLCBkYV9maWxlKTogUmVtb3ZlLgoJKGh0YWJfY291bnRzX2luZGV4X2hhc2gsIGh0YWJfY291bnRzX2luZGV4X2VxLAoJaHRhYl9jb3VudHNfaW5kZXhfZGVsKTogUmVwbGFjZSB3aXRoIC4uLgoJKGh0YWJfY291bnRzX2VudHJ5X2hhc2gsIGh0YWJfY291bnRzX2VudHJ5X2VxLAoJaHRhYl9jb3VudHNfZW50cnlfZGVsKTogLi4uIHRoZXNlLgoJKGNsZWFudXBfY291bnRzX2luZGV4LCBpbmRleF9jb3VudHNfZmlsZSk6IFJlbW92ZS4KCShyZWFkX2NvdW50c19maWxlKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9leGVjX2NvdW50cyk6IEFkanVzdC4KCShjb21wdXRlX2JyYW5jaF9wcm9iYWJpbGl0aWVzKTogRG9uJ3QgZnJlZSB0aGUgZXhlYyBjb3VudHMgaGVyZS4KCShicmFuY2hfcHJvYik6IEFkanVzdC4KCShpbml0X2JyYW5jaF9wcm9iKTogQWRqdXN0LgoJKGVuZF9icmFuY2hfcHJvYik6IEFkanVzdC4KCjIwMDMtMDQtMDcgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zKTogRG9jdW1lbnQKCS1tZmxvYXQtZ3Bycy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IERlbGV0ZSByczYwMDBfZnBycy4KCURlY2xhcmUgcnM2MDAwX2Zsb2F0X2dwcnMuCglEZWNsYXJlIHJzNjAwMF9mbG9hdF9ncHJzX3N0cmluZy4KCShyczYwMDBfcGFyc2VfZmxvYXRfZ3Byc19vcHRpb24pOiBOZXcuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBHZW5lcmljaXplIHJzNjAwMF9wYXJzZV8qIGNhbGxzIHRvIHVzZQoJcnM2MDAwX3BhcnNlX3llc19ub19vcHRpb24uCglDaGFuZ2UgY2hlY2sgZm9yIGNwdT04NTQwLCB0byB1c2UgVEFSR0VUX0U1MDAuCgkocnM2MDAwX3BhcnNlX2lzZWxfb3B0aW9uKTogRGVsZXRlLgoJKHJzNjAwMF9wYXJzZV9zcGVfb3B0aW9uKTogRGVsZXRlLgoJKHJzNjAwMF9wYXJzZV92cnNhdmVfb3B0aW9uKTogRGVsZXRlLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogUmVuYW1lIHJzNjAwMF9mcHJzIHRvIHJzNjAwMF9mbG9hdF9ncHJzLgoJRGVmaW5lIHJzNjAwMF9mbG9hdF9ncHJzX3N0cmluZy4KCShUQVJHRVRfT1BUSU9OUyk6IEFkZCByczYwMDBfZmxvYXRfZ3BycyBvcHRpb24uCgoJKiBjb25maWcvcnM2MDAwL2VhYmkuaCAoVEFSR0VUX0ZQUlMpOiBDaGFuZ2UgdG8gdXNlIHJzNjAwMF9mbG9hdF9ncHJzLgoKCSogY29uZmlnL3JzNjAwMC9lYWJpc3BlLmg6IFNldCByczYwMDBfZmxvYXRfZ3Bycy4KCk1vbiBBcHIgIDcgMTQ6MzY6MjQgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgb3B0LzEwMDI0CgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X3JlZGlyZWN0X2VkZ2UpOgoJUmVkaXJlY3QgYW55IGJyYW5jaCBlZGdlcyB1bmlmaWVkIHdpdGggdGhlIGZhbGx0aHJ1IG9uZS4KCSogY2ZncnRsLmMgKGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdCk6ICBEbyBub3Qgc3BlY2lhbAoJY2FzZSBmYWxsdGhydSBlZGdlcyB3aGVuIGNhbGxlZCB2aWEgY2ZnbGF5b3V0LmMKCjIwMDMtMDQtMDcgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogYy10eXBlY2suYyAob3V0cHV0X2luaXRfZWxlbWVudCk6IENoZWNrIGZvciB0eXBlID09IGVycm9yX21hcmtfbm9kZS4KCjIwMDMtMDQtMDcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCp6ZXJvX2V4dGVuZHFpc2kyX2g4MzAwaHMpOiBBbHdheXMKCXNwbGl0LgoJKGEgc3BsaXR0ZXIpOiBEbyB6ZXJvLWV4dGVuc2lvbiB2aWEgSEltb2RlLgoKMjAwMy0wNC0wNyAgSmFtZXMgQS4gTW9ycmlzb24gPGphMm1vcnJpQHV3YXRlcmxvby5jYT4KCgkqIGRvYy9pbnZva2UudGV4aTogRWxpbWluYXRlIGV4dHJhIHdoaXRlLXNwYWNlIGNhdXNlZCBieQoJQGdjY29wdGxpc3R7IG9uIGl0cyBvd24gbGluZS4KCSogZG9jL2ludm9rZS50ZXhpOiBFbnN1cmVkIHRoZXJlIGFyZSB0d28gc3BhY2VzIGJldHdlZW4gZWFjaCBvcHRpb24uCgkqIGRvYy9pbnZva2UudGV4aTogUmUtd3JhcHBlZCBvcHRpb24gbGluZXMgdGhhdCB3ZXJlIHRvbyB3aWRlLgoJQWRkZWQgQGdvbCB0byBvcHRpb25zIHRoYXQgZGlkbid0IGhhdmUgdGhlbS4KCjIwMDMtMDQtMDcgIEphbWVzIEEgTW9ycmlzb24gPGphMm1vcnJpQHN0dWRlbnQubWF0aC51d2F0ZXJsb28uY2E+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKERhcndpbiBQcmFnbWFzKTogRml4IHNwZWxsaW5nIG9mIE1hYyBPUy4KCjIwMDMtMDQtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKHRyZWVfc2l6ZSk6IEZvciBhbGwgJ2MnIGFuZCAneCcgbm9kZXMsIGxvb2sgZGlyZWN0bHkKCWF0IHRoZSBzaXplcyBvZiB0aGUgcmVsZXZhbnQgc3RydWN0dXJlcywgcmF0aGVyIHRoYW4gcmVseWluZwoJb24gVFJFRV9DT0RFX0xFTkdUSC4gIENhbGwgbGFuZ19ob29rcy50cmVlX3NpemUgdG8gZ2V0IHRoZQoJc2l6ZXMgb2YgYW55IHN1Y2ggd2UgZG9uJ3Qga25vdyBhYm91dC4gIFVzZQoJbGFuZ19ob29rcy5pZGVudGlmaWVyX3NpemUgZm9yIElERU5USUZJRVJfTk9ERS4KCgkoaW5pdGlhbGl6ZXJfemVyb3ApOiBVc2UgQ09OU1RSVUNUT1JfRUxUUy4KCSogdHJlZS5kZWY6IFVwZGF0ZSBjb21tZW50YXJ5LiAgTWFrZSBmb3VydGggZWxlbWVudCBvZgoJdGhlIGRlZmluaXRpb24gZm9yIGFsbCAnYycgYW5kICd4JyBub2RlcyB6ZXJvLgoKCSogbGFuZ2hvb2tzLmg6IE5ldyBob29rLCB0cmVlX3NpemUgLyBMQU5HX0hPT0tTX1RSRUVfU0laRS4KCSogbGFuZ2hvb2tzLWRlZi5oOiBVcGRhdGUgdG8gbWF0Y2guCgkqIGxhbmdob29rcy5jOiBOZXcgZGVmYXVsdCwgbGhkX3RyZWVfc2l6ZS4KCgkqIGMtY29tbW9uLmRlZiAoU1JDTE9DKTogS2lsbC4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19wb3N0Zml4X2V4cHJlc3Npb24gW2Nhc2UgU1JDTE9DXSk6CglSZW1vdmUgZW50aXJlbHkgLSB3YXMgYWxyZWFkeSAjaWYtZWQgb3V0LgoKCjIwMDMtMDQtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBta2xpYmdjYy5pbjogVXNlIGEgaGVyZSBkb2N1bWVudCB0byBhdm9pZCBydW5uaW5nIGFmb3VsIG9mCglzaGVsbHMgdGhhdCBnZW5lcmF0ZSBjb250cm9sLUEgZnJvbSAiZWNobyBcMSIuCgoyMDAzLTA0LTA2ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucyk6IERvY3VtZW50IC1tc3BlCglvcHRpb24uCgoJKiBjb25maWcvcnM2MDAwL2VhYmlzcGUuaCAoU1VCU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBTZXQKCXJzNjAwMF9zcGUuCgoJKiBjb25maWcvcnM2MDAwL2VhYmkuaCAoVEFSR0VUX0U1MDApOiBEZWZpbmUuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChUQVJHRVRfRTUwMCk6IERlZmluZS4KCShUQVJHRVRfT1BUSU9OUyk6IEFkZCBzcGU9IG9wdGlvbi4KCURlY2xhcmUgcnM2MDAwX3NwZSBhbmQgcnM2MDAwX3NwZV9zdHJpbmcgZXh0ZXJuLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYnJhbmNoX3Bvc2l0aXZlX2NvbXBhcmlzb25fb3BlcmF0b3IpOgoJQ2hhbmdlIFRBUkdFVF9TUEUgdG8gVEFSR0VUX0U1MDAuCgkoY2NyX2JpdCk6IENoYW5nZSBUQVJHRVRfU1BFIHRvIFRBUkdFVF9FNTAwLiAgQ2hlY2sgZm9yCgkhVEFSR0VUX0ZQUlMuCgkocHJpbnRfb3BlcmFuZCk6IFNhbWUuCgkocnM2MDAwX2dlbmVyYXRlX2NvbXBhcmUpOiBTYW1lLgoJKG91dHB1dF9jYnJhbmNoKTogU2FtZS4KCShyczYwMDBfc3BlKTogRGVjbGFyZS4KCShyczYwMDBfc3BlX3N0cmluZyk6IERlY2xhcmUuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBDYWxsIHJzNjAwMF9wYXJzZV9zcGVfb3B0aW9uLgoJKHJzNjAwMF9wYXJzZV9zcGVfb3B0aW9uKTogTmV3LgoKMjAwMy0wNC0wNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogaGFzaHRhYmxlLmMgKGdjY19vYnN0YWNrX2luaXQpOiBEZWxldGUgdGhpcyBmdW5jdGlvbgoJYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBpdC4KCSogaGFzaHRhYmxlLmg6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGJpdG1hcC5jIChiaXRtYXBfZWxlbWVudF9hbGxvY2F0ZSk6IENsZWFudXAgcmVkdW5kYW50CglkZWZpbmVzLiAgQ2xlYW51cCBzb21lIHVubmVjZXNzYXJ5IHdoaXRlc3BhY2UuCgkqIGRlZmF1bHRzLmggKG9ic3RhY2tfY2h1bmtfYWxsb2MpOiBSZWRlZmluZSB3aXRoCglhcHByb3ByaWF0ZSBjYXN0cyBmb3IgbGliaWJlcnR5IG9ic3RhY2tzLgoJKG9ic3RhY2tfY2h1bmtfZnJlZSk6IERpdHRvLgoJKE9CU1RBQ0tfQ0hVTktfU0laRSk6IERlZmluZSwgZGVmYXVsdCB0byAwLgoJKGdjY19vYnN0YWNrX2luaXQpOiBEZWZpbmUgYXMgYSBjYWxsIHRvIF9vYnN0YWNrX2JlZ2luLgoJKiB0cmVlLmMgKHByaW50X29ic3RhY2tfc3RhdGlzdGljcyk6IERlbGV0ZSB0aGlzIHVudXNlZAoJZnVuY3Rpb24uCgkqIHRyZWUuaCAob2JzdGFjayk6IERvbid0IGZvcndhcmQtZGVjbGFyZS4KCShwcmludF9vYnN0YWNrX3N0YXRpc3RpY3MpOiBEZWxldGUgcHJvdG90eXBlLgoJKHByaW50X29ic3RhY2tfbmFtZSk6IERpdHRvLgoJKGdjY19vYnN0YWNrX2luaXQpOiBEaXR0by4KCSogcnRsLmggKGdjY19vYnN0YWNrX2luaXQpOiBEaXR0by4KCSogamF2YS9qdi1zY2FuLmMgKGdjY19vYnN0YWNrX2luaXQpOiBEZWxldGUgdGhpcwoJZnVuY3Rpb24sIGl0cyBwcm90b3R5cGUgYW5kIHJlbGF0ZWQgZGVmaW5lcy4KCSogamF2YS9qdmdlbm1haW4uYyAoZ2NjX29ic3RhY2tfaW5pdCk6IERlbGV0ZSB0aGlzCglmdW5jdGlvbiwgYW5kIHJlbGF0ZWQgZGVmaW5lcy4KCSogamF2YS9wYXJzZS1zY2FuLnkgKG9ic3RhY2tfY2h1bmtfYWxsb2MpOiBEb24ndCBkZWZpbmUuCgkob2JzdGFja19jaHVua19mcmVlKTogRGl0dG8KCjIwMDMtMDQtMDYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF9oYW5kbGVfcGNoKTogTW92ZSBwcm90b3R5cGUgb3V0IGZyb20KCSNpZiBkZWZpbmVkIERCWF9ERUJVR0dJTkdfSU5GTy4KCjIwMDMtMDQtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY292LmMgKHN0cnVjdCBhcmNfaW5mbyk6IFJlcGxhY2UgbG9jYWxfc3BhbiB3aXRoIGN5Y2xlLgoJKHN0cnVjdCBibG9ja19pbmZvKTogUmVwbGFjZSB1LnNwYW4gd2l0aCB1LmN5Y2xlLiBBZGQgaXNfY2FsbF9yZXR1cm4uCgkoc29sdmVfZmxvd19ncmFwaCk6IFNldCBpc19jYWxsX3JldHVybi4KCShhZGRfbGluZV9jb3VudHMpOiBBZGp1c3QuIEluIGJsb2NrIG1vZGUsIGJsb2NrcyBhdHRhY2ggdG8gbGFzdCBsaW5lLgoJKGFjY3VtdWxhdGVfbGluZV9jb3VudHMpOiBGaW5kIGdyYXBoIGN5Y2xlcywgbm90IHNwYW5uaW5nIHRyZWUuCgkob3V0cHV0X2JyYW5jaF9jb3VudCk6IEFkanVzdC4KCShvdXRwdXRfbGluZXMpOiBBZGp1c3QuCgkqIGRvYy9nY292LnRleGk6IFVwZGF0ZS4KCjIwMDMtMDQtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCp6ZXJvX2V4dGVuZHFpc2kyX2g4MzAwaHMpOiBDaGFuZ2UKCXRoZSBzZWNvbmQgYWx0ZXJuYXRpdmUgdG8gIiMiLgoKMjAwMy0wNC0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChzaW5nbGVfb25lX29wZXJhbmQpOiBVc2UgR0VUX01PREVfTUFTSy4KCShzaW5nbGVfemVyb19vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDAzLTA0LTA1ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIE1ha2VmaWxlLmluIChkZi5vKTogIERlcGVuZCBvbiBhbGxvYy1wb29sLmgsIG5vdCBvYnN0YWNrLmguCgkqIGRmLmM6IEluY2x1ZGUgYWxsb2MtcG9vbC5oLCBub3Qgb2JzdGFjay5oLgoJKGRmX3JlZl9vYnN0YWNrKTogUmVtb3ZlLgoJKGRmX3JlZl9wb29sLCBkZl9saW5rX3Bvb2wpOiBBZGQgcG9vbHMuCgkoZGZfYWxsb2MpOiBJbml0IHRoZSBuZXcgcG9vbHMuCgkoZGZfZnJlZSk6IEFuZCBmcmVlIHRoZW0uCgkoZGZfbGlua19jcmVhdGUpOiBVc2UgdGhlIHBvb2xzLgoJKGRmX3JlZl9jcmVhdGUpOiBEaXR0by4KCjIwMDMtMDQtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBzaW1wbGlmeS1ydHguYzogRml4IGZvcm1hdHRpbmcuCgoyMDAzLTA0LTA1ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChhZGRyc19va19mb3JfcXVhZF9wZWVwKTogQWxsb3cgYWRkcjIKCXJlZyB3aXRoIHJlZzEgPT0gcmVnMiBhbmQgb2Zmc2V0MSA9IC04LgoKMjAwMy0wNC0wNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3J0eF9jb3N0cyk6IEhhbHZlIFBvd2VyNAoJbXVsdGlwbHkgY29zdHMuICBDb3JyZWN0IFBvd2VyNCBkaXZpZGUgY29zdHMuCgkqIGNvbmZpZy9yczYwMDAvcG93ZXI0Lm1kOiBSZXN0b3JlIG11bHRpcGx5IGFuZCBGUCBsYXRlbmN5LgoKMjAwMy0wNC0wNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogYWxpYXMuYyAoZmluZF9iYXNlX3Rlcm0pOiBFeHBvcnQuCgkqIHJ0bC5oIChmaW5kX2Jhc2VfdGVybSk6IERlY2xhcmUuCgkqIGdjc2UuYyAoZmluZF9tb3ZlYWJsZV9zdG9yZSk6IFRlc3QgZm9yIGZsYWdfbm9uX2NhbGxfZXhjZXB0aW9ucwoJaW5zdGVhZCBvZiBmbGFnX2V4Y2VwdGlvbnMuICBNb3ZlIHRlc3QgZm9yIHBhcmFtZXRlciBwYXNzaW5nIC4uLgoJKHN0b3JlX2tpbGxlZF9pbl9pbnNuKTogLi4uIGhlcmUuCgoyMDAzLTA0LTA1ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJUFIgYm9vdHN0cmFwLzEwMjY3CgkqIGRvYy9pbnN0YWxsLnRleGkgKCotKi1zb2xhcmlzMik6IC9iaW4va3NoIGlzIG5vdCBqdXN0IHJlY29tbWVuZGVkCglmb3IgY29uZmlndXJpbmcuCgoyMDAzLTA0LTA0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRieG91dC5jIChzY29wZV9sYWJlbG5vKTogQWRkIEdUWS4KCShoYXZlX3VzZWRfZXh0ZW5zaW9ucyk6IEFkZCBHVFkuCgkoc291cmNlX2xhYmVsX251bWJlcik6IEFkZCBHVFkuCgkobGFzdGZpbGUpOiBBZGQgR1RZLgoJKGxhc3RmaWxlX2lzX2Jhc2UpOiBOZXcuCgkoYmFzZV9pbnB1dF9maWxlKTogTmV3LgoJKGRieG91dF9oYW5kbGVfcGNoKTogTmV3LgoJKGRieF9kZWJ1Z19ob29rcyk6IEFkZCBoYW5kbGVfcGNoLgoJKHhjb2ZmX2RlYnVnX2hvb2tzKTogTGlrZXdpc2UuCgkoZGJ4b3V0X2Z1bmN0aW9uX2VuZCk6IFJlbW92ZSBzY29wZV9sYWJlbG5vLgoJKGRieG91dF9pbml0KTogU2V0IGJhc2VfaW5wdXRfZmlsZS4KCShkYnhvdXRfaGFuZGxlX3BjaCk6IE5ldy4KCShkYnhvdXRfc291cmNlX2ZpbGUpOiBIb25vdXIgbGFzdGZpbGVfaXNfYmFzZS4KCSogZHdhcmZvdXQuYyAoZHdhcmZfZGVidWdfaG9va3MpOiBBZGQgZHVtbXkgaGFuZGxlX3BjaC4KCSogc2Rib3V0LmMgKHNkYl9kZWJ1Z19ob29rcyk6IEFkZCBkdW1teSBoYW5kbGVfcGNoLgoJKiB2bXNkYmdvdXQuYyAodm1zZGJnX2RlYnVnX2hvb2tzKTogQWRkIGR1bW15IGhhbmRsZV9wY2guCgkqIGR3YXJmMm91dC5jIChkd2FyZjJfZGVidWdfaG9va3MpOiBBZGQgZHVtbXkgaGFuZGxlX3BjaC4KCSogZGVidWcuYyAoZG9fbm90aGluZ19kZWJ1Z19ob29rcyk6IEFkZCBkdW1teSBoYW5kbGVfcGNoLgoJKiBkZWJ1Zy5oIChzdHJ1Y3QgZ2NjX2RlYnVnX2hvb2tzKTogQWRkIGhhbmRsZV9wY2guCgkqIGMtcGNoLmMgKHBjaF9pbml0KTogRG9uJ3QgY2FsbCBzdGFydF9zb3VyY2VfZmlsZSwgYnV0IGRvIGNhbGwKCWhhbmRsZV9wY2guCgkoY19jb21tb25fd3JpdGVfcGNoKTogQ2FsbCBoYW5kbGVfcGNoLgoJKGNfY29tbW9uX3JlYWRfcGNoKTogRG9uJ3QgY2FsbCBzdGFydF9zb3VyY2VfZmlsZSwKCW9yIGVuZF9zb3VyY2VfZmlsZS4KCkZyaSBBcHIgIDQgMTc6NDM6NTIgMjAwMyAgT2xpdmllciBIYWlucXVlIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBlbWl0LXJ0bC5jIChnZXRfbWVtX2F0dHJzKTogQWRqdXN0IGFsaWdubWVudCB0ZXN0cyBkZXRlcm1pbmluZwoJdXNlIG9mIGRlZmF1bHQgYXR0cmlidXRlcyB0byBhZ3JlZSBNRU1fQUxJR04gbWFjcm8uCgpGcmkgQXByICA0IDE3OjMzOjI0IDIwMDMgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlKTogV2hlbiBwcmludGluZyB0eXBlIGluZGV4IG9mIHJhbmdlIHR5cGUKCXdob3NlIGJvdW5kcyBhcmUgcHJpbnRlZCBpbiBvY3RhbCBmb3JtYXQsIHByaW50IHR5cGUgb2YgcGFyZW50IHR5cGUgaWYKCWl0IGV4aXN0cyBzbyBlbnVtZXJhdGVkIHR5cGUgZGVzY3JpcHRpb25zIGFyZSBub3QgdHJhbnNmb3JtZWQKCWludG8gdW5zaWduZWQgdHlwZXMuCgoyMDAzLTA0LTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBBZGQgYSBwcm90b3R5cGUgZm9yCgljb21wdXRlX2Ffc2hpZnRfY2MuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChzaGlmdF9vbmUpOiBVcGRhdGUgdGhlIENDIHN0YXR1cy4KCShzaGlmdF90d28pOiBMaWtld2lzZS4KCShvdXRwdXRfYV9zaGlmdF9jYyk6IFNldCBjY19pbmxpbmUgYW5kIGNjX3NwZWNpYWwuCgkoY29tcHV0ZV9hX3NoaWZ0X2NjKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKHNoaWZ0IGluc25zKTogVXNlIGNvbXB1dGVfYV9zaGlmdF9jYy4KCjIwMDMtMDQtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBGaXggMDMtMzAgY2hhbmdlOyBkbyBjaGVjayBpbnNuIG5vbi1udWxsLgoKMjAwMy0wNC0wNCAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGJzZF9zdGRpb19hdHRyc19jb25mbGljdCk6IE5ldy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVidWlsdC4KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3RkaW8uaDogUmVnZW5lcmF0ZWQuCgoyMDAzLTA0LTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2Nvdi5jIChhY2N1bXVsYXRlX2xpbmVfY291bnRzKTogRml4IHNwYW4gdHJlZSBtZXJnZSBidWcuCgpGcmkgQXByICA0IDE1OjU4OjUyIDIwMDMgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guaCAoQUNUVUFMX05PUk1BTF9NT0RFKTogTmV3IG1hY3JvLCBicm9rZW4gb3V0IG9mCgkoTk9STUFMX01PREUpLgoJKiBzaC5jIChmcHNjcl9zZXRfZnJvbV9tZW0pOiBVc2UgQUNUVUFMX05PUk1BTF9NT0RFLgoKMjAwMy0wNC0wNCAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL2NvbnRyaWIudGV4aSAoQ29udHJpYnV0b3JzKTogQWRkIGVudHJpZXMgZm9yIFdvbGZnYW5nCglCYW5nZXJ0aCwgREogRGVsb3JpZSwgQ2hyaXN0aWFuIEVocmhhcmR0LCBDaHJpc3RvcGhlciBGYXlsb3IsCglOYXRoYW5hZWwgTmVyb2RlLCBEaWVnbyBOb3ZpbGxvLCBIYXJ0bXV0IFBlbm5lciwgVm9sa2VyIFJlaWNoZWx0LAoJRGFubnkgU21pdGgsIGFuZCBVbHJpY2ggV2VpZ2FuZC4KCVVwZGF0ZSBLcmlhbmcgTGVyZHN1d2FuYWtpaiBhbmQgZml4IGEgdHlwbyBpbiBKYW5pcyBKb2huc29uJ3MKCWVudHJ5LgoKMjAwMy0wNC0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWJpLmg6IFJldmVydCBwcmV2aW91cyBkZWx0YS4KCSogY29uZmlnL3NwYXJjL3NvbDItZ2FzLWJpLmggKEFTX1NQQVJDNjRfRkxBRyk6IFByZXBlbmQgLVRTTwoKMjAwMy0wNC0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy92ODUwL3Y4NTAuYyAoZXhwYW5kX3Byb2xvZ3VlKTogT25seSB1c2UgcmVnaXN0ZXIgc2F2ZQoJaGVscGVyIGZ1bmN0aW9ucyBpZiBsb25nIGNhbGxzIGFyZSBub3QgYmVpbmcgdXNlZC4KCUFkZCBhIGNsb2JiZXIgb2YgcjExIGlkIHVzaW5nIGxvbmcgY2FsbHMuCgkocGF0dGVybl9pc19va19mb3JfcHJvbG9ndWUpOiBBY2NvdW50IGZvciB0aGUgZXh0cmEgY2xvYmJlci4KCShjb25zdHJ1Y3Rfc2F2ZV9qYXJsKTogTGlrZXdpc2UuCgkqIGNvbmZpZy92ODUwL3Y4NTAubWQgKHByb2xvZyBwYXR0ZXJuKTogRG8gbm90IHVzZSB0aGlzIHBhdHRlcm4KCWZvciB2ODUwZSdzLgoKMjAwMy0wNC0wNCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogQXZvaWQgc3ludGF4IGVycm9yIGluIGxhc3QgY2hhbmdlCgl3aGVuIFBDQ19CSVRGSUVMRF9UWVBFX01BVFRFUlMgaXMgZGVmaW5lZCBidXQgbm90CglFTVBUWV9GSUVMRF9CT1VOREFSWS4KCjIwMDMtMDQtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMvMTAxNzUKCSoganVtcC5jIChuZXZlcl9yZWFjaGVkX3dhcm5pbmcpOiBSZXZlcnQgcGF0Y2ggb2YgMjAwMi0xMS0wMi4KCUxvb2sgYmFja3dhcmRzIGZvciBhIGxpbmUgbm90ZS4KCjIwMDMtMDQtMDMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBEZWZlciBzd2l0Y2ggcHJvY2Vzc2luZy4KCjIwMDMtMDQtMDMgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCSogY3BwcGNoLmMgKHJlc2V0X2h0KTogUmVtb3ZlLgoJKGNwcF9yZWFkX3N0YXRlKTogUmVtb3ZlIGxvb3AgdG8gcmVzZXQgaGFzaHRhYmxlIGlkZW50aWZpZXJzLgoJKiBnZ2MtY29tbW9uLmMgKGd0X3BjaF9zYXZlKTogQWRkIGNhbGwgdG8gZ3RfcGNoX2ZpeHVwX3N0cmluZ3Bvb2wKCWFmdGVyIHBjaCBmaWxlIGlzIHdyaXR0ZW4uCgkqIGdnYy5oIChndF9wY2hfZml4dXBfc3RyaW5ncG9vbCk6IERlY2xhcmUuCgkqIHN0cmluZ3Bvb2wuYyAoaHRfY29weV9hbmRfY2xlYXIpOiBEZWZpbmUuICBDYWxsYmFjay4gIENvcHkKCWhhc2hub2RlJ3MgdmFsdWUgdG8gYW5vdGhlciBoYXNodGFibGUsIHRoZW4gY2xlYXIgdGhlIG9yaWdpbmFsLgoJKHNhdmVkX2lkZW50X2hhc2gpOiBEZWZpbmUuCgkoZ3RfcGNoX3NhdmVfc3RyaW5ncG9vbCk6IENyZWF0ZSBzYXZlZF9pZGVudF9oYXNoLCB1c2UgaXQgdG8KCXN0b3JlIGRlZmluaXRpb25zIGluIGlkZW50X2hhc2gsIGFuZCBjbGVhciBpZGVudF9oYXNoLgoJKGd0X3BjaF9maXh1cF9zdHJpbmdwb29sKTogRGVmaW5lLiAgUmVzdG9yZSBkZWZpbml0aW9ucyBmcm9tCglzYXZlZF9pZGVudF9oYXNoIHRvIGlkZW50X2hhc2gsIHRoZW4gZGVzdHJveSBzYXZlZF9pZGVudF9oYXNoLgoKVGh1IEFwciAgMyAyMjoyNzo0MCBDRVNUIDIwMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ3J0bC5jICh1cGRhdGVfYmJfZm9yX2luc24pOiBEbyBub3Qgc2V0IGJsb2NrIGZvciBiYXJyaWVycy4KCjIwMDMtMDQtMDMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEwMTU3CgkqIGdjc2UuYyAoY2FuX2NvcHlfcCk6IFJlbmFtZSBpdCB0byBjYW5fY29weS4KCShjYW5fY29weV9pbml0X3ApOiBSZW1vdmUuCgkoY29tcHV0ZV9jYW5fY29weSk6IFVzZSBjYW5fY29weSBpbnN0ZWFkIG9mIGNhbl9jb3B5X3AuCgkoY2FuX2NvcHlfcCk6IE5ldyBleHBvcnRlZCBmdW5jdGlvbi4gQ2FsbCBjb21wdXRlX2Nhbl9jb3B5LgoJKGhhc2hfc2Nhbl9zZXQpOiBVc2UgaXQuCgkoZ2NzZV9tYWluKTogRG9uJ3QgY2FsbCBjb21wdXRlX2Nhbl9jb3B5LgoJKGJ5cGFzc19qdW1wcyk6IERvbid0IGNhbGwgY29tcHV0ZV9jYW5fY29weS4KCSogcnRsLmggKGNhbl9jb3B5X3ApOiBEZWNsYXJlLgoJKiBsb29wLmMgKHNjYW5fbG9vcCk6IERvbid0IG1vdmUgdGhlIHNvdXJjZSBhbmQgYWRkIGEgcmVnLXRvLXJlZwoJY29weSBpZiB0aGUgbW9kZSBkb2Vzbid0IHN1cHBvcnQgY29weSBvcGVyYXRpb25zLgoKMjAwMy0wNC0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAodW5zdHJhcCk6IEFsc28gcmVtb3ZlIHN0YWdlX2xhc3QuCgoJKiBkd2FyZjJvdXQuYyAobG9va3VwX2ZpbGVuYW1lKTogRG9uJ3QgY2hlY2sgZm9yICI8aW50ZXJuYWw+Ii4KCShkd2FyZjJvdXRfc291cmNlX2xpbmUpOiBEb24ndCBkbyBhbnl0aGluZyBpZiBsaW5lPT0wLgoKCSogc3Rvci1sYXlvdXQuYyAoZG9fdHlwZV9hbGlnbik6IE5ldyBmbiwgc3BsaXQgb3V0IGZyb20uLi4KCShsYXlvdXRfZGVjbCk6IC4uLmhlcmUuICBEbyBhbGwgYWxpZ25tZW50IGNhbGN1bGF0aW9ucyBmb3IKCUZJRUxEX0RFQ0xzIGhlcmUuCgkodXBkYXRlX2FsaWdubWVudF9mb3JfZmllbGQpOiBOb3QgaGVyZS4KCShzdGFydF9yZWNvcmRfbGF5b3V0LCBkZWJ1Z19ybGkpOiBSZW1vdmUgdW5wYWRkZWRfYWxpZ24uCgkqIHRyZWUuaCAoc3RydWN0IHJlY29yZF9sYXlvdXRfaW5mb19zKTogUmVtb3ZlIHVucGFkZGVkX2FsaWduLgoJKiBjLWRlY2wuYyAoZmluaXNoX2VudW0pOiBEb24ndCBzZXQgREVDTF9TSVpFLCBERUNMX0FMSUdOCglvciBERUNMX01PREUgb24gdGhlIENPTlNUX0RFQ0xzLgoJKGZpbmlzaF9zdHJ1Y3QpOiBEb24ndCBtZXNzIHdpdGggREVDTF9BTElHTi4KClRodSBBcHIgIDMgMTg6NTc6MTkgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKHByaW50X29wZXJhbmQpOiBEbyBub3QgYnlwYXNzIG91dHB1dF9hZGRyX2NvbnN0IGF0IGZsYWdfcGljLgoKVGh1IEFwciAgMyAxNzowODowOSAyMDAzICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmMgKHNoX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogUmV0dXJuIDAgaWYgdGhlIGN1cnJlbnQKCWZ1bmN0aW9uIGlzIGFuIGludGVycnVwdCBoYW5kbGVyLgoKCSogc2guYyAoc2hfZXhwYW5kX2VwaWxvZ3VlKTogQXZvaWQgY2xhc2ggb2YgdGVtcCByZWdpc3RlciBmb3IKCXJlc3RvcmluZyB0YXJnZXQgcmVnaXN0ZXJzIHdpdGggRUhfUkVUVVJOX1NUQUNLQURKX1JUWDsgdXNlCgltdWx0aXBsZSByZWdpc3RlcnMgaW4gcm91bmQtcm9iaW4gZmFzaGlvbi4KCjIwMDMtMDQtMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbmd0eXBlLWxleC5sIChJV09SRCk6IEFkZCBDSEFSX0JJVEZJRUxELgoJKiBzeXN0ZW0uaCAoQ0hBUl9CSVRGSUVMRCk6IE5ldy4KCjIwMDMtMDQtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGEgcGVlcGhvbGUyKTogR2VuZXJhbGl6ZSB0byBhY2NlcHQgR1QKCWFuZCBMRS4KCShhbm90aGVyIHBlZXBob2xlMik6IExpa2V3aXNlLgoKMjAwMy0wNC0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWJpLmggKEFTTV9DUFU2NF9ERUZBVUxUX1NQRUMpOiBBZGQgLVRTTy4KCShERUZfQVJDSDY0X1NQRUMpOiBMaWtld2lzZS4KClRodSBBcHIgIDMgMDk6NTM6NDAgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGNvbnN0YW50X2FkZHJlc3NfcCk6IFVzZSBsZWdpdGltYXRlX2NvbnN0YW50X3AuCgkobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBEbyBub3QgdXNlIENPTlNUQU5UX0FERFJFU1NfUC4KCjIwMDMtMDQtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IEFkZCBhIHByb3RvdHlwZSBmb3IKCWd0bGVfb3BlcmF0b3IuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChndGxlX29wZXJhdG9yKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGFuIGVudHJ5IGZvcgoJZ3RsZV9vcGVyYXRvci4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IEdlbmVyYWxpemUgdG8gYWNjZXB0IEdUCglhbmQgTEUuCgoyMDAzLTA0LTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogbGliZ2NjLXN0ZC52ZXIgKF9VbndpbmRfR2V0Q0ZBKTogTmV3LgoJKiB1bndpbmQtZHcyLmMgKF9VbndpbmRfR2V0Q0ZBKTogTmV3LgoJKiB1bndpbmQtbGlidW53aW5kLmMgKF9VbndpbmRfR2V0Q0ZBKTogTmV3LgoJKiB1bndpbmQtc2psai5jIChfVW53aW5kX0dldENGQSk6IE5ldy4KCSogdW53aW5kLmg6IERlY2xhcmUgaXQuCgpUaHUgQXByICAzIDAwOjMxOjIxIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGlubGluZS1hc20vODA4OAoJKiBpMzg2LmMgKGl4ODZfaGFyZF9yZWdub19tb2RlX29rKTogIFJldHVybiAwIGZvciBNTVgvU1NFIHJlZ2lzdGVycwoJd2hlbiBNTVgvU1NFIGlzIG5vdCBhdmFpbGFibGUuCgoyMDAzLTA0LTAyICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFNwZWNpZmljKTogVXBkYXRlIHBvaW50ZXJzIHRvIGFwcGxlLmNvbS4KClRodSBBcHIgIDMgMDA6MTg6NDkgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiAgRGlzYWJsZSByZWQgem9uZSBieSBkZWZhdWx0IG9uIGkzODYuCgkoY29tcHV0ZV9mcmFtZV9sYXlvdXQsIGl4ODZfZm9yY2VfdG9fbWVtb3J5LCBpeDg2X2ZyZWVfZnJvbV9tZW1vcnkpOgoJRG8gbm90IHRlc3QgVEFSR0VUXzY0QklUIHRvZ2V0aGVyIHdpdGggVEFSR0VUX1JFRF9aT05FCgoyMDAzLTA0LTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IFRpZ2h0ZW4gdGhlIGNvbmRpdGlvbi4KCjIwMDMtMDQtMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBsb25nbG9uZy5oICh1bXVsX3BwbW0pIFthbHBoYV06IFVzZSBfX2J1aWx0aW5fYWxwaGFfdW11bGguCgoyMDAzLTA0LTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IE5ldy4KCjIwMDMtMDQtMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoc2psal9maW5kX2RpcmVjdGx5X3JlYWNoYWJsZV9yZWdpb25zKTogUmVjb2duaXplIHdoZW4KCW11c3Qtbm90LXRocm93IHJlZ2lvbiBoYXMgYmVlbiBkZWxldGVkLgoKMjAwMy0wNC0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfY2FsbF9mcmFtZV9pbmZvKTogSWdub3JlIGZkZS0+bm90aHJvdyBhcyBhbgoJb3B0aW1pemF0aW9uIHdoZW4gZmxhZ19leGNlcHRpb25zIG5vdCBlbmFibGVkLgoKMjAwMy0wNC0wMiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jCgkoVEFSR0VUX1NDSEVEX0ZJUlNUX0NZQ0xFX01VTFRJUEFTU19ERkFfTE9PS0FIRUFEKTogUmVkZWZpbmUgdGhlCgltYWNyb3MuCgkocnM2MDAwX2lzc3VlX3JhdGUpOiBBZGQgY2FzZSBmb3IgODU0MC4KCShyczYwMDBfdXNlX3NjaGVkX2xvb2thaGVhZCk6IE5ldyBmdW5jdGlvbi4KCgkqIGNvbmZpZy9yczYwMDAvODU0MC5tZDogUmVuYW1lIFNJVSB1bml0cyBpbnRvIFNVIG9uZXMgYW5kIE1JVQoJdW5pdHMgaW50byBNVSBvbmVzLgoJKHBwYzg1NDBfYnJhbmNoLCBwcGM4NTQwX2NyX2xvZ2ljYWwpOiBBZGQgb25lIGN5Y2xlIGluIHRoZQoJcmVzZXJ2YXRpb24gYmVmb3JlIHJldGlyZW1lbnQuCgkocHBjODU0MF9tdWx0aXBseSwgcHBjODU0MF9sb2FkLCBwcGM4NTQwX3N0b3JlLAoJcHBjODU0MF9zaW1wbGVfZmxvYXQsIHBwYzg1NDBfdmVjdG9yX2xvYWQsIHBwYzg1NDBfdmVjdG9yX3N0b3JlKToKCVJlbW92ZSBhZGRpdGlvbmFsIGN5Y2xlIGluIHRoZSByZXNlcnZhdGlvbiBiZWZvcmUgcmV0aXJlbWVudC4KCShwcGM4NTQwX21mY3IsIHBwYzg1NDBfbXRjcmYsIHBwYzg1NDBfbXRqbXByKTogQWRkIG1pc3NlZAoJcmVzZXJ2YXRpb24gb2YgcHBjODU0MF9pc3N1ZS4KCjIwMDMtMDQtMDIgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiByZWFsLmMgKGRlY29kZV9pZWVlX3NpbmdsZSk6IEZpeCBkZWNvZGluZyBvZiBTTmFOIGJpdC4KCjIwMDMtMDQtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoY29udmVydF9mcm9tX2VoX3JlZ2lvbl9yYW5nZXNfMSk6IFNtYXNoIFJFR19FSF9SRUdJT04KCW5vdGVzIGZvciBub3Rocm93IGNhbGxzIGlmIGZsYWdfZm9yY2VkX3Vud2luZF9leGNlcHRpb25zLgoJKGJ1aWxkX3Bvc3RfbGFuZGluZ19wYWRzKTogTWluZCBmbGFnX2ZvcmNlZF91bndpbmRfZXhjZXB0aW9ucy4KCShzamxqX2ZpbmRfZGlyZWN0bHlfcmVhY2hhYmxlX3JlZ2lvbnMpOiBMaWtld2lzZS4KCShyZWFjaGFibGVfaGFuZGxlcnMpOiBMaWtld2lzZS4KCShjYW5fdGhyb3dfZXh0ZXJuYWwpOiBMaWtld2lzZS4KCShjb2xsZWN0X29uZV9hY3Rpb25fY2hhaW4pOiBSZWNvcmQgY2xlYW51cHMgYWZ0ZXIgY2F0Y2gtYWxsIGFuZAoJbXVzdC1ub3QtdGhyb3cgaWYgZmxhZ19mb3JjZWRfdW53aW5kX2V4Y2VwdGlvbnMuCgkqIGZsYWdzLmggKGZsYWdfZm9yY2VkX3Vud2luZF9leGNlcHRpb25zKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKGZsYWdfZm9yY2VkX3Vud2luZF9leGNlcHRpb25zKTogTmV3LgoJKGxhbmdfaW5kZXBlbmRlbnRfb3B0aW9ucyk6IEFkZCBpdC4KCSogZG9jL2ludm9rZS50ZXh0OiBBZGQgaXQuCgoyMDAzLTA0LTAxICBEYXZpZCBNb3NiZXJnZXIgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvY3J0aS5hc206IENsZWFuIHVwIHRyYWlsaW5nIHdoaXRlc3BhY2UuCglSZW1vdmUgdHJhaWxpbmcgaGFzaGVzICgjKSBmcm9tIGlkZW50aWZpZXJzLgoKCSogY29uZmlnL2lhNjQvY3J0bi5hc206IERpdHRvLgoKCSogY29uZmlnL2lhNjQvY3J0ZW5kLmFzbTogUmVtb3ZlIHRyYWlsaW5nIGhhc2hlcyAoIykgZnJvbQoJaWRlbnRpZmllcnMuCgkoX19kb19nbG9iYWxfY3RvcnNfYXV4KTogQWxpZ24gdG8gMzItYnl0ZSBib3VuZGFyeS4gIEFkZCB1bndpbmQKCWRpcmVjdGl2ZXMuICBEcm9wIGV4cGxpY2l0IGJ1bmRsaW5nLS0taXQganVzdCBtYWtlcyB0aGUgY29kZQoJaGFyZGVyIHRvIHJlYWQuICBEb24ndCBzYXZlL3Jlc3RvcmUgZ3AgbmVlZGxlc3NseS4KCgkqIGNvbmZpZy9pYTY0L2NydGJlZ2luLmFzbTogUmVtb3ZlIHRyYWlsaW5nIGhhc2hlcyAoIykgZnJvbQoJaWRlbnRpZmllcnMgKHRoZXkncmUgb25seSBuZWVkZWQgaWYgdGhlIGlkZW50aWZpZXIgd291bGQgY2xhc2gKCXdpdGggYSByZWdpc3RlciBuYW1lIG90aGVyd2lzZSkuCgkoX19kb19nbG9iYWxfZHRvcnNfYXV4KTogQWxpZ24gdG8gMzItYnl0ZSBib3VuZGFyeS4gQWRkIHVud2luZAoJZGlyZWN0aXZlcy4gIERyb3AgZXhwbGljaXQgYnVuZGxpbmctLS1pdCBqdXN0IG1ha2VzIHRoZSBjb2RlCgloYXJkZXIgdG8gcmVhZC4KCShfX2RvX2p2X3JlZ2lzdGVyX2NsYXNzZXMpOiBEaXR0by4KCSguZmluaV9hcnJheSk6IFJlbW92ZSAicHJvZ2JpdHMiIChuZXdlcgoJYXNzZW1ibGVycyBkb24ndCBsaWtlIHdyb25nIHNlY3Rpb24tdHlwZXMpLgoJKC5pbml0X2FycmF5KTogRGl0dG8uCgoyMDAzLTA0LTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBmb3J0cmFuLzk5NzQKCSogZ2NzZS5jIChyZWdfa2lsbGVkX29uX2VkZ2UpOiBOZXcgZnVuY3Rpb24gdG8gdGVzdCB3aGV0aGVyIHRoZQoJZ2l2ZW4gcmVnIGlzIG92ZXJ3cml0dGVuIGJ5IGFueSBpbnN0cnVjdGlvbiBxdWV1ZWQgb24gYW4gZWRnZS4KCShieXBhc3NfYmxvY2spOiBJZ25vcmUgc3Vic3RpdHV0aW9ucyBraWxsZWQgb24gaW5jb21pbmcgZWRnZXMuCglEb24ndCBieXBhc3Mgb3V0Z29pbmcgZWRnZXMgdGhhdCBoYXZlIHF1ZXVlZCBpbnN0cnVjdGlvbnMuCgoyMDAzLTA0LTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHJlYWwuaCAoRVhQX0JJVFMpOiBNYWtlIHJvb20gZm9yLi4uCgkoc3RydWN0IHJlYWxfdmFsdWUpOiAuLi4gYWRkZWQgY2Fub25pY2FsIGJpdC4KCShzdHJ1Y3QgcmVhbF9mb3JtYXQpOiBBZGRlZCBwbmFuLgoJKG1pcHNfc2luZ2xlX2Zvcm1hdCwgbWlwc19kb3VibGVfZm9ybWF0LCBtaXBzX2V4dGVuZGVkX2Zvcm1hdCwKCW1pcHNfcXVhZF9mb3JtYXQpOiBOZXcuCgkqIHJlYWwuYzogQ29weSBwIHRvIHBuYW4gaW4gYWxsIGZvcm1hdHMuCgkoZ2V0X2Nhbm9uaWNhbF9xbmFuLCBnZXRfY2Fub25pY2FsX3NuYW4pOiBTZXQgY2Fub25pY2FsIGJpdC4KCShyZWFsX25hbik6IFVzZSBwbmFuIHRvIGNvbXB1dGUgc2lnbmlmaWNhbmQncyBzaGlmdC4KCShyZWFsX2lkZW50aWNhbCk6IERpc3JlZ2FyZCBzaWduaWZpY2FuZCBpbiBjYW5vbmljYWwKCU5hTnMuCgkocmVhbF9oYXNoKTogTGlrZXdpc2UuICBUYWtlIHNpZ25hbGxpbmcgaW50byBhY2NvdW50LgoJKGVuY29kZV9pZWVlX3NpbmdsZSwgZW5jb2RlX2llZWVfZG91YmxlLCBlbmNvZGVfaWVlZV9xdWFkKToKCURpc3JlZ2FyZCBzaWduaWZpY2FuZCBiaXRzIGluIGNhbm9uaWNhbCBOYU5zLiAgU2V0IGFsbCBiaXRzIG9mCgljYW5vbmljYWwgTmFOIGlmICFxbmFuX21zYl9zZXQuCgkoZW5jb2RlX2libV9leHRlbmRlZCwgZGVjb2RlX2libV9leHRlbmRlZCk6IExpa2V3aXNlLiAgVXNlCglxbmFuX21zYl9zZXQgdG8gdGVsbCB0aGUgYmFzZSBkb3VibGUgZm9ybWF0LgoJKGlibV9leHRlbmRlZF9mb3JtYXQpOiBVc2UgNTMgYXMgcG5hbi4KCShtaXBzX3NpbmdsZV9mb3JtYXQsIG1pcHNfZG91YmxlX2Zvcm1hdCwgbWlwc19leHRlbmRlZF9mb3JtYXQsCgltaXBzX3F1YWRfZm9ybWF0KTogQ29waWVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgaWVlZS9pYm0KCWZvcm1hdHMsIHdpdGggcW5hbl9tc2Jfc2V0IGZhbHNlLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChNSVBTX1RGTU9ERV9GT1JNQVQpOiBVc2UgbWlwc19leHRlbmRlZF9mb3JtYXQuCgkqIGNvbmZpZy9taXBzL2xpbnV4NjQuaCAoTUlQU19URk1PREVfRk9STUFUKTogVXNlIG1pcHNfcXVhZF9mb3JtYXQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBtaXBzX3NpbmdsZV9mb3JtYXQKCWFuZCBtaXBzX2RvdWJsZV9mb3JtYXQuICBEZWZhdWx0IFRGbW9kZSB0byBtaXBzX3F1YWRfZm9ybWF0LgoJKiBjb25maWcvbWlwcy90LWxpbnV4NjQgKHRwLWJpdC5jKTogRGVmaW5lIFFVSUVUX05BTl9ORUdBVEVELgoJKiBjb25maWcvbWlwcy90LWlyaXg2OiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvdC1taXBzIChmcC1iaXQuYywgZHAtYml0LmMpOiBMaWtld2lzZS4KCSogY29uZmlnL2ZwLWJpdC5jIChwYWNrX2QsIHVucGFja19kKTogT2JleSBpdC4KCjIwMDMtMDQtMDEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogdW53aW5kLWR3Mi1mZGUtZGFyd2luLmMgKERFU1RSVUNUT1JfTUFZX0JFX0NBTExFRF9MSVZFKTogTmV3LgoJKGxpdmVfaW1hZ2VfZGVzdHJ1Y3Rvcik6IFJlc2V0IGltYWdlIHRvIGluaXRpYWwgc3RhdGUuCgkoZXhhbWluZV9vYmplY3RzKTogU2V0IERFU1RSVUNUT1JfTUFZX0JFX0NBTExFRF9MSVZFLgoKMjAwMy0wNC0wMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChpbnB1dF9vcGVyYW5kKTogQWNjZXB0IGJhcmUKCUNPTlNUQU5UX1BfUlRYIG9wZXJhbmRzLgoKMjAwMy0wNC0wMSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2NzZS5jIChzdHJ1Y3QgbHNfZXhwcik6IEFkZGVkIHBhdHRlcm5fcmVncyBmaWVsZC4KCShsZHN0X2VudHJ5KTogSW5pdGlhbGl6ZSBpdC4KCShleHRyYWN0X21lbnRpb25lZF9yZWdzLCBleHRyYWN0X21lbnRpb25lZF9yZWdzX2hlbHBlcik6IE5ldy4KCShzdG9yZV9vcHNfb2spOiBVc2UgcmVncyBwcmVjb21wdXRlZCBieSB0aGVtLgoJKGZpbmRfbG9hZHMsIHN0b3JlX2tpbGxlZF9pbl9pbnNuLCBsb2FkX2tpbGxzX3N0b3JlKTogQ2hhbmdlIHJldHVybgoJdHlwZSB0byBib29sLgoJKHN0b3JlX2tpbGxlZF9iZWZvcmUsIHN0b3JlX2tpbGxlZF9hZnRlcik6IFRha2UgcG9zaXRpb24gb2YgcmVnaXN0ZXIKCXNldCBpbiBhY2NvdW50LgoJKHJlZ19zZXRfaW5mbyk6IFN0b3JlIHBvc2l0aW9uIG9mIHRoZSBzZXR0ZXIuCgkoZ2NzZV9tYWluKTogRW5hYmxlIHN0b3JlIG1vdGlvbi4KCShtZW1zX2NvbmZsaWN0X2Zvcl9nY3NlX3ApOiBFbmFibGUgbG9hZCBtb3Rpb24gb2Ygbm9uLXN5bWJvbCBtZW1zLgoJKHByZV9pbnNlcnRfY29weV9pbnNuLCB1cGRhdGVfbGRfbW90aW9uX3N0b3JlcywgaW5zZXJ0X3N0b3JlKTogUHJldmVudCBydGwKCXNoYXJpbmcuCgkoc2ltcGxlX21lbSk6IEVuYWJsZSBzdG9yZSBtb3Rpb24gb2Ygbm9uLXN5bWJvbCBtZW1zLgoJKHJlZ3ZlYyk6IFR5cGUgY2hhbmdlZC4KCShMQVNUX0FWQUlMX0NIRUNLX0ZBSUxVUkUpOiBOZXcuCgkoY29tcHV0ZV9zdG9yZV90YWJsZV9jdXJyZW50X2luc24pOiBOZXcuCgkoYnVpbGRfc3RvcmVfdmVjdG9ycyk6IENvbXB1dGF0aW9uIG9mIGF2YWlsYWJpbGl0eSBhbmQgYW50aWNpcGF0YWJpbGl0eQoJbW92ZWQgLi4uCgkoY29tcHV0ZV9zdG9yZV90YWJsZSwgZmluZF9tb3ZlYWJsZV9zdG9yZSk6IC4uLiBoZXJlLgoJKGRlbGV0ZV9zdG9yZSk6IFJlbW92ZSBzZW5zZWxlc3MgY29tbWVudC4KCShzdG9yZV9tb3Rpb24pOiBSZW9yZ2FuaXplLgoKMjAwMy0wNC0wMSAgS2V2aW4gQnVldHRuZXIgIDxrZXZpbmJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFByb3ZpZGUgbWFwcGluZ3MgZm9yCglISV9SRUdOVU0gYW5kIExPX1JFR05VTS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNRF9EQlhfRklSU1QpOiBEZWZpbmUuCgoyMDAzLTA0LTAxICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBjb21iaW5lLmMgKG1lcmdlX291dGVyX29wcyk6IEZpeCB0eXBvLgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9vbmVfb25seSk6IFJldmVydCAyMDAzLTAzLTA5IHBhdGNoLgoKMjAwMy0wNC0wMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC97NDB4Lm1kLDYwMy5tZCw2eHgubWQsNzQ1MC5tZCw3eHgubWQsbXBjLm1kLAoJcG93ZXI0Lm1kLHJpb3MxLm1kLHJpb3MyLm1kLHJzNjQubWR9OiBDaGFuZ2UgbXVsdF9jb21wYXJlIHRvCglpbXVsX2NvbXBhcmUuICBBZGQgbG11bF9jb21wYXJlLgoJKiBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZDogQnVtcCBzb21lIGxhdGVuY2llcy4gIE1vZGVsIGV4dHJhIGN5Y2xlCglpbiBzZWNvbmQgcGFpciBvZiBkaXNwYXRjaCBzbG90cy4gIE1vZGVsIHN0b3JlcyBtb3JlIGFjY3VyYXRlbHkuCglUd2VhayBtdWx0aXBseSBtb2RlbC4gIEFkZCBieXBhc3NlcyBmb3IgQ1IgaW5zdHJ1Y3Rpb25zIGRlcGVuZGVudAoJb24gY29tcGxpY2F0ZWQgY29tcGFyZXMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtdWxzaTMpOiBOYW1lIGltdWxfY29tcGFyZSBwYXR0ZXJucy4KCShtdWxkaTMpOiBBZGQgbG11bF9jb21wYXJlIHBhdHRlcm5zLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmFyaWFibGVfaXNzdWUpOiBNb3ZlIEZQTE9BRF9VWAoJYW5kIEZQU1RPUkVfVVggdG8gc3BsaXQgaW5zdHJ1Y3Rpb25zIGFuZCBhZGQgQ09NUEFSRSwKCURFTEFZRURfQ09NUEFSRSwgSU1VTF9DT01QQVJFLCBMTVVMX0NPTVBBUkUsIElESVYsIExESVYuCgkocnM2MDAwX2FkanVzdF9jb3N0KTogQWRkIElNVUxfQ09NUEFSRSBhbmQgTE1VTF9DT01QQVJFLgoJKHJzNjAwMF9ydHhfY29zdHMpOiBTZXBhcmF0ZSBQT1dFUjQgbXVsdGlwbHkgY2FzZS4KCjIwMDMtMDQtMDEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9maXh1cF9jbG9iYmVyZWRfcmV0dXJuX3JlZyk6CglEbyBub3RoaW5nIGlmIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyB3YXMgbm90IHVzZWQuCgpUdWUgQXByICAxIDE4OjE4OjIzIENFU1QgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAodGVzdCBwYXR0ZXJucyk6ICBBbGxvdyBtZW1vcnkgb3BlcmFuZCBpbiBvcGVyYW5kMS4KCjIwMDMtMDQtMDEgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHRlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvc2ltZC0zLmM6IE5ldy4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBIYW5kbGUgVkVDVE9SX0NTVC4KCShjb25zdF92ZWN0b3JfZnJvbV90cmVlKTogTmV3LgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudCk6IEhhbmRsZSBWRUNUT1JfQ1NULgoKCSogYy10eXBlY2suYyAoZGlnZXN0X2luaXQpOiBCdWlsZCBhIHZlY3RvciBjb25zdGFudCBmcm9tIGEKCVZFQ1RPUl9UWVBFLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogUmVtb3ZlIHByb3RvdHlwZSBmb3IKCWVhc3lfdmVjdG9yX2NvbnN0YW50LgoJKGVhc3lfdmVjdG9yX2NvbnN0YW50KTogQWRkIG1vZGUgcGFyYW1ldGVyLiAgUmV3cml0ZSB0byBoYW5kbGUKCW1vcmUgZWFzeSBjb25zdGFudHMuCgkocnM2MDAwX2VtaXRfbW92ZSk6IFBhc3MgbW9kZSB0byBlYXN5X3ZlY3Rvcl9jb25zdGFudC4KCUNhbGwgZW1pdF9lYXN5X3ZlY3Rvcl9pbnNuIGZvciBTUEUgVjJTSSB2ZWN0b3IgY29uc3RhbnQgbW92ZXMuCgkoZW1pdF9lYXN5X3ZlY3Rvcl9pbnNuKTogTmV3LgoJKGVhc3lfdmVjdG9yX3NhbWUpOiBOZXcuCgkoRUFTWV9WRUNUT1JfMTUpOiBOZXcgbWFjcm8uCgkoRUFTWV9WRUNUT1JfMTVfQUREX1NFTEYpOiBOZXcgbWFjcm8uCgkoYmRlc2NfMmFyZyk6IFJlbmFtZSB0byB4b3J2MnNpMy4KCShlYXN5X3ZlY3Rvcl9jb25zdGFudF9hZGRfc2VsZik6IE5ldy4KCShpbnB1dF9vcGVyYW5kKTogQWxsb3cgdmVjdG9yIGNvbnN0YW50cy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZAoJZWFzeV92ZWN0b3JfY29uc3RhbnQsIGVhc3lfdmVjdG9yX2NvbnN0YW50X2FkZF9zZWxmLgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBBZGQgJ1cnLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IEFkZCBwcm90b3R5cGUgZm9yCgllYXN5X3ZlY3Rvcl9jb25zdGFudCwgZW1pdF9lYXN5X3ZlY3Rvcl9pbnNuLgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kICh4b3J2OGhpMyk6IE5ldy4KCSh4b3J2MTZxaTMpOiBOZXcuCglSZW1vdmUgYWxsIF9jb25zdDAgcGF0dGVybnMuCgkobW92djRzaV9pbnRlcm5hbCk6IFJld3JpdGUgdG8gdXNlIGNvZGUuICBBZGQgdmVjdG9yIGNvbnN0YW50IHRvCgl2ZWN0b3IgYWx0ZXJuYXRpdmUuICBBZGQgc3BsaXR0ZXIuCgkobW92djhoaV9pbnRlcm5hbCk6IFNhbWUuCgkobW92djE2cWlfaW50ZXJuYWwpOiBTYW1lLgoJKG1vdnY0c2ZfaW50ZXJuYWwpOiBTYW1lLgoJQ2hhbmdlIHRoZSB1bnNwZWNzIGZvciB2c3BsdGlzKiB0byB1c2UgY29uc3RhbnRzLgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCJ4b3J2NGhpMyIpOiBOZXcuCgkoInNwZV9ldnhvciIpOiBSZW5hbWUgdG8geG9ydjJzaTMuCgkoInhvcnYxZGkzIik6IE5ldy4KCVJlbW92ZSBhbGwgX2NvbnN0MCBwYXR0ZXJucy4KCShtb3Z2MnNpX2ludGVybmFsKTogUmV3cml0ZSB0byB1c2UgY29kZS4gIEFkZCB2ZWN0b3IgY29uc3RhbnQgdG8KCWFsdGVybmF0aXZlcy4gIEFkZCBzcGxpdHRlci4KCShtb3Z2NGhpX2ludGVybmFsKTogQWRkIHZlY3RvciBjb25zdGFudCB0byBhbHRlcm5hdGl2ZXMuCgkobW92djFkaV9pbnRlcm5hbCk6IFNhbWUuCgkobW92djJzZl9pbnRlcm5hbCk6IFNhbWUuCgoyMDAzLTAzLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvOTkzNgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDbGVhciBTQVZFX0VYUFJfQ09OVEVYVCBmb3IKCXZhcmlhYmx5LXNpemVkIGFycmF5cyBpbiBwYXJhbWV0ZXJzLgoJKHNldF9zYXZlX2V4cHJfY29udGV4dCk6IE5ldyBmdW5jdGlvbi4KCShjX2V4cGFuZF9ib2R5KTogVXNlIGl0LCB2aWEgd2Fsa190cmVlLgoKMjAwMy0wMy0zMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGNhbl9jb21iaW5lX3ApOiBBbGxvdyBaRVJPX0VYVFJBQ1QgYW5kIFNUUklDVF9MT1dfUEFSVC4KCShjb21iaW5hYmxlX2kzcGF0KTogUmVtb3ZlIGNhbGwgdG8gZXhwYW5kX2ZpZWxkX2Fzc2lnbm1lbnQgYW5kCgkjaWYgMCdkIGNvZGUuCgoyMDAzLTAzLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMDI3OAoJKiBjLWNvbW1vbi5jIChmaW5pc2hfbGFiZWxfYWRkcmVzc19leHByKTogSGFuZGxlIHRoZQoJZXJyb3JfbWFya19ub2RlLgoKMjAwMy0wMy0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlYWwuYyAocmVhbF9pZGVudGljYWwpOiBSZW9yZyBzbyBhcyB0byBub3QgY29tcGFyZQoJc2lnbmFsbGluZyBmb3Igbm9ybWFscy4KCjIwMDMtMDMtMzEgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChoYXJkX3JlZ19vcGVyYW5kKTogQ2hlY2sgdGhlIG1vZGUuCgoyMDAzLTAzLTMxICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9nZW5fbW92aGkpOiBEb24ndCByZWx5IG9uIFJFR19XQVNfMAoJbm90ZXMgYXMgdGhleSBhcmUgYm9nZ3VzLgoJKG02OGhjMTFfZ2VuX21vdnFpKTogTGlrZXdpc2UuCgoyMDAzLTAzLTMxICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAoZXhwYW5kX3Byb2xvZ3VlKTogRm9yIGFuIGludGVycnVwdCBoYW5kbGVyCglzYXZlIHRoZSBzb2Z0IHJlZ2lzdGVycyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciBzbyB0aGF0IGdkYiBjYW4gdW53aW5kCgl0aGUgZnJhbWUgbW9yZSBlYXNpbHkuCgkoZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UgaW4gb3Bwb3NpdGUgb3JkZXI7IGFsbG93IHRvIHVzZSBYIHJlZ2lzdGVyCglhcyBzY3JhdGNoIGlmIHRoZSByZXR1cm4gdmFsdWUgaXMgYnkgcmVmZXJlbmNlLgoKMjAwMy0wMy0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xMDE0NQoJKiBzdG9yLWxheW91dC5jICh1cGRhdGVfYWxpZ25tZW50X2Zvcl9maWVsZCk6IFJlc3BlY3QKCURFQ0xfVVNFUl9BTElHTiBmb3IgemVyby1sZW5ndGggYml0ZmllbGRzLCB0b28uCgkqIGMtZGVjbC5jIChmaW5pc2hfc3RydWN0KTogRG9uJ3Qgc2V0IERFQ0xfQUxJR04gZm9yIG5vcm1hbAoJZmllbGRzLgoKMjAwMy0wMy0zMSAgTWF0dCBBdXN0ZXJuICA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiBjcHBwY2guYyAoc3RydWN0IGNwcF9zYXZlZHN0YXRlKTogQWRkIGRlZnMgYW5kIG5fZGVmcyBtZW1iZXJzLgoJKGNvdW50X2RlZnMpOiBLZWVwIHRyYWNrIG9mIG51bWJlciBvZiBkZWZzIGFzIHdlbGwgYXMgdG90YWwgc2l6ZS4KCSh3cml0ZV9kZWZzKTogUHV0IGV2ZXJ5IGRlZmluaXRpb24gaW4gY3BwX3NhdmVkc3RhdGUncyBkZWZzIGFycmF5LgoJKGNvbXBfaGFzaG5vZGUpOiBEZWZpbmUuICBDb21wYXJpc29uIGZ1bmN0aW9uIGZvciBxc29ydC4KCShjcHBfd3JpdGVfcGNoX2RlcHMpOiBTb3J0IGRlZmluaXRpb25zIGJlZm9yZSB3cml0aW5nIHRoZW0uCgkoc3RydWN0IGh0X25vZGVfbGlzdCk6IERlZmluZS4gTGlrZSBjcHBfc2F2ZWRzdGF0ZSBidXQgc2ltcGxlci4KCShjb2xsZWN0X2h0X25vZGVzKTogRGVmaW5lLgoJKGNwcF92YWxpZF9zdGF0ZSk6IFdoZW4gdmVyaWZ5aW5nIHRoYXQgdW5kZWZpbmVkIGlkZW50aWZpZXJzIGluCgl0aGUgcGNoIGZpbGUgYXJlIHN0aWxsIHVuZGVmaW5lZCwgcmVhZCBhIHNvcnRlZCBsaXN0IG9mIHVuZGVmaW5lZAoJaWRlbnRpZmllcnMsIGNvbGxlY3QgYWxsIGRlZmluZWQgaWRlbnRpZmllcnMgaW50byBhIHNvcnRlZCBsaXN0LAoJYW5kIHdhbGsgdGhyb3VnaCBib3RoIGxpc3RzIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIG1hdGNoLgoKMjAwMy0wMy0zMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoYSBwZWVwaG9sZTIpOiBOZXcuCgoyMDAzLTAzLTMxICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9GTFRfRVZBTF9NRVRIT0QpOiBDaGFuZ2UgMSBpbnRvIDAuCgoyMDAzLTAzLTMxICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa29mZmllLm5sPgoKCVBSIHRhcmdldC8xMDE3NwoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChIQVJEX1JFR05PX1JFTkFNRV9PSyk6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoY29tcHV0ZV92cnNhdmVfbWFzayk6IERvbid0IG1hcmsKCWFsbCBjYWxsLWNsb2JiZXJlZCByZWdpc3RlcnMgYXMgdXNlZC4KCjIwMDMtMDMtMzEgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIGNwcGV4cC5jIChjcHBfY2xhc3NpZnlfbnVtYmVyKTogQWNjZXB0ICcuJyBhZnRlciAiMHgiLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL2NwcC9jOTktaGV4ZmxvYXQtMy5jOiBOZXcgZmlsZS4KCjIwMDMtMDMtMzEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY292LmM6IEFkZCAtYSAmIC11IG9wdGlvbnMuCgkoc3RydWN0IGFyY19pbmZvKTogQWRkIGxvY2FsX3NwYW4sIGlzX2NhbGxfbm9uX3JldHVybiwKCWlzX25vbmxvY2FsX3JldHVybiwgaXNfdW5jb25kaXRpb25hbCBmbGFncywgcmVtb3ZlIGlzX2NhbGwgZmxhZy4KCShzdHJ1Y3QgYmxvY2tfaW5mbyk6IEFkZCBmbGFncywgaXNfY2FsbF9zaXRlLCBpc19ub25sb2NhbF9yZXR1cm4KCW1lbWJlcnMuIE1ha2UgZW5jb2RpbmdzIGEgdW5pb24gd2l0aCBzcGFuIG1lbWJlci4KCShzdHJ1Y3QgZnVuY3Rpb25faW5mbyk6IEFkZCBibG9ja3NfZXhlY3V0ZWQsIGxpbmUsIHNyYywgbGluZV9uZXh0CgltZW1iZXJzLgoJKHN0cnVjdCBjb3ZlcmFnZV9pbmZvKTogTWFrZSBicmFuY2hlcyBhIHVuaW9uIHdpdGggYmxvY2tzIG1lbWJlci4KCShzdHJ1Y3Qgc291cmNlX2luZm8pOiBBZGQgZnVuY3Rpb25zIG1lbWJlci4KCShvYmplY3Rfc3VtbWFyeSwgcHJvZ3JhbV9jb3VudCk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKGZsYWdfYWxsX2Jsb2NrcywgZmxhZ191bmNvbmRpdGlvbmFsKTogTmV3IGZsYWdzLgoJKGZpbmRfc291cmNlLCBvdXRwdXRfYnJhbmNoX2NvdW50KTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF91c2FnZSk6IEFkanVzdC4KCShvcHRpb25zKTogQWRqdXN0LgoJKHByb2Nlc3NfYXJncyk6IEFkanVzdC4KCShyZWFkX2dyYXBoX2ZpbGUpIDxHQ09WX1RBR19GVU5DVElPTj46IEFkanVzdC4KCTxHQ09WX1RBR19CTE9DS1M+OiBSZWFkIGZsYWdzLgoJPEdDT1ZfVEFHX0xJTkVTPjogQWRqdXN0LgoJKHJlYWRfY291bnRfZmlsZSk6IFByb2Nlc3MgU1VNTUFSWSB0YWdzLgoJKHNvbHZlX2Zsb3dfZ3JhcGgpOiBTZXQgaXNfdW5jb25kaXRpb25hbCBhbmQgY2xlYXIgaXNfY2FsbF9zaXRlCglhcHByb3ByaWF0ZWx5LgoJKGFkZF9icmFuY2hfY291bnRzKTogQWRqdXN0LiBEb24ndCBjb3VudCB1bmNvbmRpdGlvbmFsIGJyYW5jaGVzLgoJKGFkZF9saW5lX2NvdW50cyk6IERlYWwgd2l0aCBhbGwtYmxvY2tzIG1vZGUsIGFjY3VtdWxhdGUgYmxvY2sKCWNvdmVyYWdlLgoJKGFjY3VtdWxhdGVfbGluZV9jb3VudHMpOiBBZGp1c3QsIGdlbmVyYXRlIGxvY2FsIHNwYW5uaW5nIHRyZWUgZm9yCglhbGwtYmxvY2tzIG1vZGUuCgkob3V0cHV0X2xpbmVzKTogQWRqdXN0LgoJKiBwcm9maWxlLmMgKGJyYW5jaF9wcm9iKTogQWx0ZXIgR0NPVl9GVU5DVElPTl9UQUcgcmVjb3JkLgoJKiBkb2MvZ2Nvdi50ZXhpOiBEb2N1bWVudC4KCjIwMDMtMDMtMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IE9yZ2FuaXplIHBlZXBob2xlMidzIHRoYXQgdHJhbnNmb3JtCgkoY29tcGFyZSAocmVnOkhJKSAoY29uc3RfaW50KSkuCgoyMDAzLTAzLTMxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGRjb25zdG0yLCBkY29uc3RoYWxmKTogTmV3IHJlYWwgY29uc3RhbnRzLgoJKGluaXRfZW1pdF9vbmNlKTogSW5pdGlhbGl6ZSBkY29uc3RtMiBhbmQgZGNvbnN0aGFsZiBoZXJlLgoJKiByZWFsLmggKGRjb25zdG0yLCBkY29uc3RoYWxmKTogQWRkIHByb3RvdHlwZXMgaGVyZS4KCSogcmVhbC5jIChyZWFsX3NxcnQpOiBVc2UgZGNvbnN0aGFsZiByYXRoZXIgdGhhbiBsb2NhbCBjb3B5LgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW4pOiBXaGVuIG9wdGltaXppbmcgc3FydChleHAoeCkpIGFzCglleHAoeC8yLjApIHJlbWVtYmVyIHRvIGZvbGQgdGhlIGRpdmlzaW9uIGlmIHBvc3NpYmxlLgoJRm9sZCBzaW4oMC4wKSBhcyAwLjAsIGNvcygwLjApIGFzIDEuMCwgcG93KHgsMS4wKSBhcyB4LAoJcG93KHgsLTEuMCkgYXMgMS4wL3gsIHBvdyh4LDIuMCkgYXMgeCp4LCBwb3coeCwtMi4wKSBhcwoJMS4wLyh4KngpIGFuZCBwb3coeCwwLjUpIGFzIHNxcnQoeCkuCgoyMDAzLTAzLTMxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIG5ldyBwZWVwaG9sZTIpOiBOZXcuCgoyMDAzLTAzLTMxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKHNpbXBsZV9tZW0pOiBSZXR1cm4gZmFsc2UgZm9yIGZsb2F0aW5nLXBvaW50IGFjY2Vzc2VzCglpZiBmbGFnX2Zsb2F0X3N0b3JlIGlzIHRydWUuCgoyMDAzLTAzLTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGdjc2UuYyAoZ2NzZV9jb25zdGFudF9wKTogTmV3IGZ1bmN0aW9uIHRvIGlkZW50aWZ5IGNvbnN0YW50cwoJc3VpdGFibGUgZm9yIGNvbnN0YW50IHByb3BhZ2F0aW9uLCBpbmNsdWRpbmcgQ09NUEFSRSB3aXRoIHR3bwoJaW50ZWdlciBjb25zdGFudCBhcmd1bWVudHMuCgkoaGFzaF9zY2FuX3NldCk6IFVzZSBnY3NlX2NvbnN0YW50X3AuCgkoZmluZF9hdmFpbF9zZXQpOiBMaWtld2lzZS4KCShjcHJvcF9pbnNuKTogTGlrZXdpc2UuCgkoZG9fbG9jYWxfY3Byb3ApOiBMaWtld2lzZS4KCShmaW5kX2ltcGxpY2l0X3NldHMpOiBMaWtld2lzZS4KCShmaW5kX2J5cGFzc19zZXQpOiBMaWtld2lzZS4KCjIwMDMtMDMtMzAgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGV4Y2VwdC5oOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiB2YXJyYXlfdHlwZS4KCjIwMDMtMDMtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0LzEwMDExLCBvcHQvMTAyNTI6CgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIHB1cmdlX2J1aWx0aW5fY29uc3RhbnRfcAoJYmVmb3JlIHBvc3QtZ2NzZSBjc2UgcGFzcy4KCjIwMDMtMDMtMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZG9qdW1wLmMgKGRvX2p1bXApOiBDb3B5IFNVQlJFR3MgaW50byBhIHBzZXVkbyBmb3IgY29tcGFyaXNvbi4KCjIwMDMtMDMtMzAgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcHJvZmlsZS5jIChpbnN0cnVtZW50X2VkZ2VzKTogTWFrZSBzdXJlIGFueSBuZXdseSBjcmVhdGVkCglqdW1wIGluc25zIGhhdmUgY29ycmVjdCBqdW1wIGxhYmVsIGluZm8uCgoyMDAzLTAzLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2ZnYnVpbGQuYyAobWFrZV9lZGdlcyk6IFVzZSB0YWJsZWp1bXBfcC4KCSogY2ZnY2xlYW51cC5jIChsYWJlbF9pc19qdW1wX3RhcmdldF9wKTogTGlrZXdpc2UuCgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X2Nhbl9kdXBsaWNhdGVfYmJfcCk6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAoZmxvd19kZWxldGVfYmxvY2tfbm9leHB1bmdlKTogTGlrZXdpc2UuCgkodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogTGlrZXdpc2UuCgkocmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogTGlrZXdpc2UuCgkqIGNzZS5jIChmb2xkX3J0eCk6IExpa2V3aXNlLgoJKiBqdW1wLmMgKGRlbGV0ZV9yZWxhdGVkX2luc25zKTogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYyAoZ2V0X2p1bXBfdGFibGVfb2Zmc2V0KTogTGlrZXdpc2UuCgkqIHNzYS1jY3AuYyAoc3NhX2NjcF9kZl9kZWxldGVfdW5yZWFjaGFibGVfaW5zbnMpOiBMaWtld2lzZS4KCjIwMDMtMDMtMzAgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogTWFrZWZpbGUuaW4gKFNUUklDVF9XQVJOKTogRG9uJ3Qgd2FybiBmb3IgSVNPIEMgY29uc3RydWN0cy4KCShTVFJJQ1QyX1dBUk4pOiBMaWtld2lzZS4KCjIwMDMtMDMtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCglQUiBvdGhlci82OTU1CgkqIGNvbGxlY3QyLmMgKGNvbGxlY3Rfd2FpdCk6IFVzZSBXQ09SRURVTVAgYW5kIGZpeCBvdXRwdXQgbWVzc2FnZS4KCSogc3lzdGVtLmggKFdDT1JFRFVNUCwgV0NPUkVGTEcpOiBEZWZpbmUgaWYgbmVjZXNzYXJ5LgoKMjAwMy0wMy0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjLzEwMDgzCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAodW11bGRpM19oaWdocGFydCk6IENoYW5nZSB0byBleHBhbmRlcjsKCWRvbid0IHplcm9fZXh0ZW5kIGNvbnN0IGlucHV0cy4KCjIwMDMtMDMtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDAzLTAzLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IFJlbW92ZSB1c2VsZXNzIGNvZGUuCgoyMDAzLTAzLTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqaW9yc2kzX2FuZF9hc2hpZnQpOiBOZXcuCgkoKmlvcnNpM19hbmRfbHNoaWZ0cnQpOiBMaWtld2lzZS4KCSgqaW9yc2kzX3plcm9fZXh0cmFjdCk6IExpa2V3aXNlLgoKMjAwMy0wMy0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmluc3Zfc2lfOF84KTogTmV3LgoJKCppbnN2X3NpXzhfOF9sc2hpZnRydF84KTogTGlrZXdpc2UuCgkoYSBwZWVwaG9sZTIpOiBMaWtld2lzZS4KCjIwMDMtMDMtMjkgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRvYy9jb250cmliLnRleGk6IEFkZCBFcmljIEJvdGNhem91IGFuZCBSb2dlciBTYXlsZS4KCVVuaWZvcm1seSB1c2UgYnVnZml4IGluc3RlYWQgb2YgYnVnIGZpeC4KCjIwMDMtMDMtMjkgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCglQUiBkb2MvODk1CgkqIE9ORVdTOiBSZW1vdmUgdGhvc2UgaXRlbXMgdGhhdCBhbHJlYWR5IGFwcGVhciBpbiB0aGUgRUdDUwoJcmVsZWFzZSBub3RlcyBvbiBvdXIgd2ViIHBhZ2VzLgoKMjAwMy0wMy0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEZVTkNUSU9OX1ZBTFVFX1JFR05PX1ApOiBSZXNwZWN0CglUQVJHRVRfSEFSRF9GTE9BVC4gIFJlZm9ybWF0LgoJKEZVTkNUSU9OX0FSR19SRUdOT19QKTogTGlrZXdpc2UsIGFuZCByZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgoyMDAzLTAzLTI4ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogZ2NjL2ZpeGluYy9pbmNsaGFjay5kZWY6IFVwZGF0ZSBzb2xhcmlzX211dGV4X2luaXRfMSB0bwoJd29yayBvbiBTb2xhcmlzIDIuNS4xLgoKMjAwMy0wMy0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmFkZHNpM19hbmRfcl8xKTogUHV0IHVuZGVyIHBsdXM6U0kKCXNlY3Rpb24gb2YgaDgzMDAubWQKCSgqYWRkc2kzX2FuZF9ub3Jfcl8xKTogTGlrZXdpc2UuCgoyMDAzLTAzLTI5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZW1pdF9wcm9sb2dvdWUpOiBNYWtlIHN1cmUgYmFja2NoYWluIGlzCglzZXQgdXAgYmVmb3JlIGFueSB0cmFwcGluZyBtZW1vcnkgYWNjZXNzIGlmIGZsYWdfbm9uX2NhbGxfZXhjZXB0aW9ucy4KCjIwMDMtMDMtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9hc19uZWVkZWQpOiBBbGxvdyBhIFVTRSBpbiBhc20gcmVsb2Fkcy4KCgkqIGxvb3AuYzogKGZpbmRfbWVtX2luX25vdGVfMSwgZmluZF9tZW1faW5fbm90ZSk6IENvbW1lbnQuCgoyMDAzLTAzLTI4ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQ2xhcmlmeSBjb21tZW50cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wMy0yOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImxpdGVyYWxfcG9vbF8zMSIpOiBPdXRwdXQgcG9vbCBhbmNob3IKCWxhYmVsIGV2ZW4gaWYgcG9vbCBlbXB0eSB3aGVuIGdlbmVyYXRpbmcgUElDLgoJKCJsaXRlcmFsX3Bvb2xfMzEiLCAibGl0ZXJhbF9wb29sXzY0Iik6IENvZGluZyBzdHlsZSBjbGVhbnVwLgoKMjAwMy0wMy0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4sCgkgICAgRGhhbmFuamF5IERlc2hwYW5kZSAgPGRoYW5hbmpheWRAa3BpdC5jb20+CgoJUFIgdGFyZ2V0LzEwMjA1CgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6CglDb3JyZWN0IHRoZSBvZmZzZXQgY29tcHV0YXRpb24gd2hlbiBUQVJHRVRfTk9STUFMLgoKMjAwMy0wMy0yOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMTAwNjcKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChqdW1wIHBhdHRlcm4pOiBDb3JyZWN0IG9yZGVyCgl3aGVuIGlzc3VpbmcgdGhlIGFubnVsaW5nIG1hcmtlci4KCjIwMDMtMDMtMjggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgYy84MjgxCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobW92ZGlfaW5zbl9zcDMyX3Y5KTogUmVtb3ZlICdmLWYnIGFsdGVybmF0aXZlLgoJKG1vdmRpIHJlZy9yZWcgc3BsaXQpOiBNYXRjaCBvbmx5IG9uIHNwYXJjMzIsIGFuZCB2OSB3aGVuIGludCByZWdzLgoKMjAwMy0wMy0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoQVNNX09VVFBVVF9BTElHTkVEX0JTUyk6IFJlbW92ZSB1bm5lY2Vzc2FyeQoJZ2xvYmFsaXplX2xhYmVsLgoJKiBjb25maWcvYXJtL3Vua25vd24tZWxmLmggKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBMaWtld2lzZS4KCSogY29uZmlnL2k5NjAvaTk2MC5oIChBU01fT1VUUFVUX0FMSUdORURfQlNTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoQVNNX09VVFBVVF9BTElHTkVEX0JTUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9lbGYuaCAoQVNNX09VVFBVVF9BTElHTkVEX0JTUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9saW51eC5oIChBU01fT1VUUFVUX0FMSUdORURfQlNTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBU01fT1VUUFVUX0FMSUdORURfQlNTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy92ODUwL3Y4NTAuYyAodjg1MF9vdXRwdXRfYWxpZ25lZF9ic3MpOiBMaWtld2lzZS4KCjIwMDMtMDMtMjggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBsb29wLmM6IChmaW5kX21lbV9pbl9ub3RlXzEsIGZpbmRfbWVtX2luX25vdGUpOiBOZXcgZnVuY3Rpb25zLgoJKHJlcGxhY2VfbG9vcF9tZW1zKTogQWRkICJ3cml0dGVuIiBwYXJhbS4gIFJlbW92ZSBpbnZhbGlkIFJFR19FUVVBTAoJbm90ZXMgYWZ0ZXIgaG9pc3RpbmcuCgkobG9hZF9tZW1zKTogQWRqdXN0IHJlcGxhY2VfbG9vcF9tZW1zIGNhbGwuCgoyMDAzLTAzLTI4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzEwMTE0IGFuZCBQUiB0YXJnZXQvMTAwODQKCSogZHdhcmYyb3V0LmMgKG1lbV9sb2NfZGVzY3JpcHRvcik6IEhhbmRsZSBMT19TVU0uCgoyMDAzLTAzLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChhZGRkaV9lcl9oaWdoX2wpOiBWYWxpZCBvbmx5IGFmdGVyIHJlbG9hZC4KCjIwMDMtMDMtMjcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX2luZl9jb21wYXJlKTogIE5ldyBmdW5jdGlvbiB0byBzaW1wbGlmeSBGUAoJY29tcGFyaXNvbnMgYWdhaW5zdCArSW5maW5pdHkgb3IgLUluZmluaXR5LgoJKGZvbGQpOiAgT3B0aW1pemUgZmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbnMgYWdhaW5zdCBJbmZzIGFuZCBOYU5zLgoKMjAwMy0wMy0yNyAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBsaWJnY292LmM6IFByb3ZpZGUgb25seSBkdW1teSBmdW5jdGlvbnMgaWYgbGliYyBpcyBub3QgYXZhaWxhYmxlLgoKMjAwMy0wMy0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlYWwuaCAoc3RydWN0IHJlYWxfdmFsdWUpOiBBZGQgc2lnbmFsbGluZy4KCShFWFBfQklUUyk6IERlY3JlbWVudC4KCSogcmVhbC5jIChnZXRfY2Fub25pY2FsX3FuYW4pOiBEb24ndCBzZXQgTVNCLTEuCgkoZ2V0X2Nhbm9uaWNhbF9zbmFuKTogTGlrZXdpc2UuICBTZXQgc2lnbmFsbGluZy4KCShyZWFsX2lkZW50aWNhbCk6IENvbXBhcmUgc2lnbmFsbGluZy4KCShyb3VuZF9mb3JfZm9ybWF0KTogUmVtb3ZlIGZvcmNlLW9uZS1iaXQgb24gY29kZS4KCShyZWFsX25hbik6IExpa2V3aXNlLiAgU2V0IHNpZ25hbGxpbmcuCgkoZW5jb2RlX2llZWVfc2luZ2xlKTogQWRkIGZvcmNlLW9uZS1iaXQgY29kZTsgaG9ub3Igc2lnbmFsbGluZy4KCShlbmNvZGVfaWVlZV9kb3VibGUsIGVuY29kZV9pZWVlX2V4dGVuZGVkLCBlbmNvZGVfaWVlZV9xdWFkKTogTGlrZXdpc2UuCgkoZGVjb2RlX2llZWVfc2luZ2xlKTogU2V0IHNpZ25hbGxpbmcuCgkoZGVjb2RlX2llZWVfZG91YmxlLCBkZWNvZGVfaWVlZV9leHRlbmRlZCwgZGVjb2RlX2llZWVfcXVhZCk6IExpa2V3aXNlLgoKMjAwMy0wMy0yNyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS85OTUzCgkqIGFkYS9NYWtlZmlsZS5pbiAoZ25hdGxpYiBjb25maWd1cmF0aW9uIGZvciBIUFVYKTogU3BsaXQKCXRoZSBnZW5lcmFsIHNlY3Rpb24gZm9yIEhQVVggaW50byBzcGVjaWZpYyBzZWN0aW9ucyBmb3IKCUhQVVggMTAgYW5kIEhQVVggMTEuIEZpeCB0aGUgc2V0dGluZyBvZiBUR1RfTElCIGluIHRoZSBIUFVYCgkxMSBjYXNlLgoKMjAwMy0wMy0yNyAgR2xlbiBOYWthbXVyYSAgPGdsZW5AaW1vZHVsby5jb20+CgoJUFIgb3B0LzEwMDg3CgkqIGxvb3AuYyAobG9vcF9naXZzX3JlZHVjZSk6IFNraXAgYml2cyB3aXRoIGR1cGxpY2F0ZSBsb2NhdGlvbnMKCXdoaWxlIGluY3JlbWVudGluZyBnaXYuCgkocmVjb3JkX2Jpdik6IENoZWNrIGZvciBkdXBsaWNhdGUgYml2IGxvY2F0aW9ucyBhbmQKCXNldCAoc3RydWN0IGluZHVjdGlvbiAqKSB2LT5zYW1lIGlmIGZvdW5kLgoKMjAwMy0wMy0yNyAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiB1bndpbmQtbGlidW53aW5kLmMgKHV3X2ZyYW1lX3N0YXRlX2Zvcik6IEFkanVzdCBmb3IgbGlidW53aW5kCgl2MC45IEFQSSBjaGFuZ2U6IHJlcGxhY2UgcmVhZCBvZiBVTldfUkVHX0hBTkRMRVIgd2l0aAoJdW53X2dldF9wcm9jX2luZm8oKS4KCShfVW53aW5kX0dldExhbmd1YWdlU3BlY2lmaWNEYXRhKTogUmVwbGFjZSByZWFkIG9mIFVOV19SRUdfTFNEQQoJd2l0aCB1bndfZ2V0X3Byb2NfaW5mbygpLgoJKF9VbndpbmRfR2V0UmVnaW9uU3RhcnQpOiBSZXBsYWNlIFVOV19SRUdfUFJPQ19TVEFSVCB3aXRoCgl1bndfZ2V0X3Byb2NfaW5mbygpLgoKMjAwMy0wMy0yNyAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwLzg1NDAubWQ6IFVzZSBwcmVzZW5jZV9zZXQgaW5zdGVhZCBvZiBhYnNlbmNlX3NldC4KCjIwMDMtMDMtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogQWx3YXlzIGRlZmVyIGlmIERFQ0xfREVDTEFSRURfSU5MSU5FX1AuCgoyMDAzLTAzLTI2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBib290c3RyYXAvMTAwNTEsIFBSIGJvb3RzdHJhcC8xMDE2OS4KCSogbWlwcy10ZmlsZS5jIChpbml0X2ZpbGUpOiBEb24ndCBwcm92aWRlIGEgc3RhdGljIGluaXRpYWxpemVyLgoJKGluaXRpYWxpemVfaW5pdF9maWxlKTogSW5pdGlhbGl6ZSB0aGUgY29udGVudHMgb2YgaW5pdF9maWxlLgoJKGFkZF9maWxlKTogQ2FsbCBpbml0aWFsaXplX2luaXRfZmlsZSBpZiBub3QgYWxyZWFkeSBpbml0aWFsaXplZC4KCjIwMDMtMDMtMjYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9vcHRpbWl6ZV9wcm9sb2cpOiBEbyBub3Qgc2F2ZS9yZXN0b3JlCglyZWdpc3RlcnMgdXNlZCBmb3IgZ2xvYmFsIGFzbSB2YXJpYWJsZXMuCgkoczM5MF9mcmFtZV9pbmZvLCBzMzkwX2FyZ19mcmFtZV9vZmZzZXQpOiBMaWtld2lzZS4KCShzMzkwX2VtaXRfcHJvbG9ndWUsIHMzOTBfZW1pdF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKMjAwMy0wMy0yNiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwLzg1NDAubWQ6IE5ldyBmaWxlLgoKCSogY29uZmlnL3JzNjAwMC97NDB4Lm1kLCA2MDMubWQsIDZ4eC5tZCwgNzQ1MC5tZCwgN3h4Lm1kLCBtcGMubWQsCglwb3dlcjQubWQsIHJpb3MxLm1kLCByaW9zMi5tZCwgcnM2NC5tZH06IEFkZCBtdWx0X2NvbXBhcmUgdG8KCXJlc2VydmF0aW9ucyBmb3IgaW11bC4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBJbmNsdWRlIDg1NDAubWQuICBDaGFuZ2UKCWRlbGF5ZWRfY29tcGFyZSBvbnRvIG11bHRfY29tcGFyZSBmb3IgaW5zbnMgZ2VuZXJhdGluZwoJbXVsdGlwbGljYXRpb24uCgkobXVsdF9jb21wYXJlLCBmcHNpbXBsZSwgYnJpbmMsIHZlY2RpdiwgdmVjY21wc2ltcGxlLCB2ZWNmZGl2KToKCU5ldyB0eXBlIGF0dHJpYnV0ZSB2YWx1ZXMuCgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoKm5lZ3NmMl9ncCwgKmFic3NmMl9ncHIpOiBVc2UgdHlwZQoJZnBzaW1wbGUgaW5zdGVhZCBvZiBmcC4KCSgqZGl2c2YzX2dwcik6IFVzZSB0eXBlIHZlY2ZkaXYgaW5zdGVhZCBvZiBmcC4KCShzcGVfZXZmc2Ficywgc3BlX2V2ZnNuYWJzLCBzcGVfZXZmc25lZyk6IFVzZSB0eXBlIHZlY3NpbXBsZQoJaW5zdGVhZCBvZiB2ZWNmbG9hdC4KCShzcGVfZXZmc2RpdmUpOiBVc2UgdHlwZSB2ZWNmZGl2IGluc3RlYWQgb2YgdmVjZmxvYXQuCgkoc3BlX2JyaW5jKTogVXNlIHR5cGUgYnJpbmMgaW5zdGVhZCBvZiB2ZWNjb21wbGV4LgoJKHNwZV9ldmFkZHcsIHNwZV9ldmFkZGl3KTogVXNlIHR5cGUgdmVjc2ltcGxlIGluc3RlYWQgb2YKCXZlY2NvbXBsZXguCgkoc3BlX2V2ZGl2d3MsIHNwZV9ldmRpdnd1KTogVXNlIHR5cGUgdmVjZGl2IGluc3RlYWQgb2YgdmVjY29tcGxleC4KCSgqbW92djJzaV9pbnRlcm5hbCwgKm1vdnYxZGlfaW50ZXJuYWwsICptb3Z2NGhpX2ludGVybmFsLAoJKm1vdnYyc2ZfaW50ZXJuYWwpOiBEZWZpbmUgdHlwZSBhdHRyaWJ1dGUgdmFsdWVzIGZvciBhbGwKCWFsdGVybmF0aXZlcy4KCShjbXBzZmVxX2dwciwgY21wc2ZndF9ncHIsIGNtcHNmbHRfZ3ByKTogVXNlIHR5cGUgdmVjY21wIGluc3RlYWQKCW9mIGZwY29tcGFyZS4KCSh0c3RzZmVxX2dwciwgdHN0c2ZndF9ncHIsIHRzdHNmbHRfZ3ByKTogVXNlIHR5cGUgdmVjY21wc2ltcGxlCglpbnN0ZWFkIG9mIGZwY29tcGFyZS4KCjIwMDMtMDMtMjYgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcG93ZXI0Lm1kOiBBbGxvdyBkZWxheSBiZXR3ZWVuIGRpc3BhdGNoIGFuZAoJZnVuY3Rpb24gdW5pdHMgZm9yIHNpbXBsZSBpbnN0cnVjdGlvbnMuICBDb3JyZWN0IHN0b3JlIHVuaXRzLgoJQWxsb3cgYnJhbmNoIHRvIG9jY3VweSBhcyBtYW55IGRpc3BhdGNoIHNsb3RzIGFzIG5lY2Vzc2FyeS4KCjIwMDMtMDMtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9vcF9hbmRfZmV0Y2gpOiBGaXggY29tbWVudC4KCShpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogVXNlIGFsd2F5cyBESW1vZGUgYXIuY2N2LAoJemVybyBleHRlbmQgb2xkIHRvIGl0LgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChjbXB4Y2hnX2FjcV9zaSk6IFJlbW92ZSBtb2RlIGZyb20gY2N2CglvcGVyYW5kLgoKMjAwMy0wMy0yNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvNzc4NAoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3MpOiBIYW5kbGUKCShQTFVTIChQTFVTIChSRUcpIChSRUcpKSAoQ09OU1RfSU5UKSkgZm9ybSBmb3IKCWFsbCBiYXNlIHJlZ2lzdGVycy4KCjIwMDMtMDMtMjUgIE1hcmNlbG8gQWJyZXUgIDxtbWFicmV1QGluZi51ZnJncy5icj4KCglQUiBvdGhlci8xMDIwMwoJKiB2ZXJzaW9uLmM6IFJlZmVyZW5jZSB0aGUgR0NDIHdlYiBzaXRlIGluIHRoZSBVUkwuCgoyMDAzLTAzLTI2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogYy1pbmNwYXRoLmMgKGFkZF9zdGFuZGFyZF9wYXRocyk6IEFkZCBib3RoICJ0cmFuc2xhdGVkIiBhbmQKCW5vbi10cmFuc2xhdGVkIGhlYWRlciBwYXRocy4KCjIwMDMtMDMtMjUgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBkb2MvaW5zdGFsbC50ZXhpICgqLSotZnJlZWJzZCopOiBVcGRhdGUgd2l0aCBrbm93biBzdGF0dXMuCgoyMDAzLTAzLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTAxNzEKCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogRG9uJ3QgZGVsZXRlIHRoZSBqdW1wIGF0IHRoZSBlbmQgdW5sZXNzCgl3ZSBhbHNvIGRlbGV0ZSBhIGp1bXAgYXQgdGhlIGJlZ2lubmluZy4KCjIwMDMtMDMtMjUgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogZG9jL2NvbnRyaWIudGV4aSAoQ29udHJpYnV0b3JzKTogTWVudGlvbiBzZWxmIGFzIDY4SEMxMS82OEhDMTIKCWNvbnRyaWJ1dG9yLgoKVHVlIE1hciAyNSAyMDozNTo1MSBDRVQgMjAwMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpeDg2X3J0eF9jb3N0cyk6IEZvciAtZnBpYyBhbmQgeDg2LTY0IGxvY2FsIHN5bWJvbGljCgljb25zdGFudHMgYXJlIG5vdCBleHBlbnNpdmUuCgpNb24gTWFyIDI0IDIwOjAzOjAzIENFVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgb3B0LzEwMDU2CgkqIGNmZ2xheW91dC5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogIEZpeCBkZWFsaW5nIHdpdGggdGhlIGNvbmRpdGlvbmFsCglqdW1wIGp1bXBpbmcgdG8gdGhlIG5leHQgaW5zdHJ1Y3Rpb24uCgkqIGNmZ3J0bC5jIChmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QpOiAgTGlrZXdpc2UuCgoyMDAzLTAzLTI1ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBkb2MvcGFzc2VzLnRleGkgKFBhc3Nlcyk6IFByb3Blcmx5IGRvY3VtZW50IHRoYXQgd2UgZG8gbm90CglwZXJmb3JtIGp1bXAyIGFueSBsb25nZXI7IHJlbW92ZSBjb21tYW5kLWxpbmUgb3B0aW9uIC1kSi4KCjIwMDMtMDMtMjUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzg3NDYKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYW5kIHByb21vdGluZyBzcGxpdHRlcnMpOiBEaXNhYmxlIEhJbW9kZSB0bwoJU0ltb2RlIHByb21vdGluZyB3aGVuIHRoZSBzaWduIGJpdCBtYXR0ZXJzIGFuZCBpcyBub3QgcHJlc2VydmVkLCBvcgoJd2hlbiBUQVJHRVRfRkFTVF9QUkVGSVggaXMgdHJ1ZS4gRGlzYWJsZSBwcm9tb3Rpbmcgd2hlbiBvcHRpbWl6aW5nCglmb3Igc2l6ZS4KCjIwMDMtMDMtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGEgcGVlcGhvbGUyKTogRXh0ZW5kIHRvIHN1cHBvcnQgbG9hZHMKCWluIFFJbW9kZSBhbmQgSEltb2RlLgoKMjAwMy0wMy0yNCAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS90LW02OGhjMTEtZ2FzIChMSUIxQVNNRlVOQ1MpOiBBZGQgX2NhbGxfZmFyIGFuZAoJX3JldHVybl9mYXIKCShNVUxUSUxJQl9PUFRJT05TKTogRG9uJ3QgbXVsdGlsaWIgb24gLW1sb25nLWNhbGxzLgoJKE1VTFRJTElCX0VYQ0VQVElPTlMpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCAoImNhbGwiKTogU3VwcG9ydCBmYXIgY2FsbHMgZm9yIDY4SEMxMQoJYnkgY2FsbGluZyBzb21lIGJvYXJkIHN1cHBvcnQgcm91dGluZS4KCSgiY2FsbF92YWx1ZSIpOiBMaWtld2lzZS4KCSgiKnJldHVybl92b2lkIik6IExpa2V3aXNlIGZvciByZXR1cm4uCgkoIipyZXR1cm5fMTZiaXQiKTogTGlrZXdpc2UuCgkoIipyZXR1cm5fMzJiaXQiKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IEdlbmVyYXRlIC5mYXIKCWZvciA2OEhDMTEgdG9vLgoJKERXQVJGMl9BRERSX1NJWkUpOiBVc2UgNCBzbyB0aGF0IGFkZHJlc3NlcyBjYW4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX292ZXJyaWRlX29wdGlvbnMpOiBBY2NlcHQKCS1tbG9uZy1jYWxscyBmb3IgNjhIQzExLgoJKiBjb25maWcvbTY4aGMxMS9sYXJpdGguYXNtIChkZWNsYXJlX25lYXIpOiBOZXcgbWFjcm8uCgkoX19wcmVtYWluLCBfX19uZWdzaTIsIF9fX29uZV9jbXBsc2kyLCBfX19hc2hsc2kzKTogVXNlIGl0LgoJKF9fX2FzaHJzaTMsIF9fX2xzaHJzaTMsIF9fX2xzaHJoaTMsIF9fX2xzaGxoaTMpOiBMaWtld2lzZS4KCShfX19yb3RyaGkzLCBfX19yb3RsaGkzLCBfX19hc2hyaGkzLCBfX19hc2hycWkzKTogTGlrZXdpc2UuCgkoX19fbHNobHFpMywgX19kaXZtb2RoaTQsIF9fX211bHFpMywgX19fbXVsaGkzKTogTGlrZXdpc2UuCgkoX19tdWxoaTMyKTogTGlrZXdpc2UuCgkocmV0KTogVXBkYXRlIG1hY3JvIGZvciA2OEhDMTEuCgkoX19mYXJfdHJhbXBvbGluZSk6IEltcGxlbWVudCBmb3IgNjhIQzExLgoJKF9fY2FsbF9hMTYsIF9fY2FsbF9hMzIsIF9fcmV0dXJuX3ZvaWQsIF9fcmV0dXJuXzE2KTogTmV3IHN1cHBvcnQKCXJvdXRpbmVzIGZvciA2OEhDMTEgbWVtb3J5IGJhbmsgc3dpdGNoaW5nIGNhbGxpbmcgc3VwcG9ydC4KCShfX3JldHVybl8zMik6IExpa2V3aXNlLgoKMjAwMy0wMy0yNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogdG9wbGV2LmMgKGluZGVwZW5kZW50X2RlY29kZV9vcHRpb24pOiBEb24ndCBza2lwIGEgJ1knIHByZWZpeC4KCjIwMDMtMDMtMjQgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoVGVzdGluZyk6IE1lbnRpb24gdGVzdCByZXN1bHQgbGlua3MgZnJvbSBidWlsZAoJc3RhdHVzIHBhZ2VzLgoKMjAwMy0wMy0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHB1dF92YXJfaW50b19zdGFjayk6IENoYW5nZSBib29sIHBhcmFtZXRlciB0byBpbnQuCgkoZ2VuX21lbV9hZGRyZXNzb2YpOiBMaWtld2lzZS4KCSogcnRsLmggKGdlbl9tZW1fYWRkcmVzc29mKTogTGlrZXdpc2UuCgkqIHRyZWUuaCAocHV0X3Zhcl9pbnRvX3N0YWNrKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9ncF9zYXZlX3J0eCk6IEFkanVzdCBjYWxsIHRvCglnZW5fbWVtX2FkZHJlc3NvZiBvciBwdXRfdmFyX2ludG9fc3RhY2suCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHNwaWxsX3RmbW9kZV9vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDAzLTAzLTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IE5ldy4KCjIwMDMtMDMtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZG9qdW1wLmMgKGRvX2p1bXApOiBIYW5kbGUgVU5TQVZFX0VYUFIgc3BlY2lhbGx5LgoKMjAwMy0wMy0yNCAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL2NvbnRyaWIudGV4aSAoQ29udHJpYnV0b3JzKTogVXBkYXRlIEphbmlzIEpvaG5zb24uCgoyMDAzLTAzLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMDA3MgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2lmX3RoZW5fZWxzZSk6IENoZWNrIHRoYXQgdGhlIG1vZGUKCWhhcyBNT0RFX0lOVCBjbGFzcyBiZWZvcmUgYXBwbHlpbmcgdGhlIChPUCBaIChtdWx0IENPTkQgQzIpKQoJdHJhbnNmb3JtYXRpb24uCgoyMDAzLTAzLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi85NDE0CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAod2lkZW5pbmcgcGVlcGhvbGVzKTogVXNlCgl3aWRlbl9tZW1vcnlfYWNjZXNzIGluc3RlYWQgb2YgY2hhbmdlX2FkZHJlc3MuCgoyMDAzLTAzLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy83MDg2CgkqIGMtdHlwZWNrLmMgKGNfbWFya19hZGRyZXNzYWJsZSk6IEFkanVzdCBjYWxscyB0bwoJcHV0X3Zhcl9pbnRvX3N0YWNrLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHB1dF92YXJfaW50b19zdGFjayk6IEFkZCByZXNjYW4gcGFyYW1ldGVyLiAgRG8gbm90CgljYWxsIGZpeHVwX3Zhcl9yZWZzIHdoZW4gcmVzY2FuIGlzIGZhbHNlLgoJKGdlbl9tZW1fYWRkcmVzc29mKTogTGlrZXdpc2UuCgkoYXNzaWduX3Bhcm1zKTogQWRqdXN0IGNhbGxzIHRvIHB1dF92YXJfaW50b19zdGFjay4KCShzZXRqbXBfcHJvdGVjdCk6IExpa2V3aXNlLgoJKHNldGptcF9wcm90ZWN0X2FyZ3MpOiBMaWtld2lzZS4KCSogcnRsLmggKGdlbl9tZW1fYWRkcmVzc29mKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IEFkanVzdCBjYWxscyB0byBwdXRfdmFyX2ludG9fc3RhY2suCgkqIHRyZWUuaCAocHV0X3Zhcl9pbnRvX3N0YWNrKTogQ2hhbmdlIHByb3RvdHlwZS4KCjIwMDMtMDMtMjMgIEFycGFkIEJlc3plZGVzIDxiZXN6ZWRlc0BjYy51LXN6ZWdlZC5odT4KCglQUiBtaWRkbGUtZW5kLzk5NjcKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZnB1dHMpOiBXaGVuIG9wdGltaXppbmcgZm9yIHNpemUsCglkb24ndCB0cmFuc2Zvcm0gZnB1dHMgaW50byBmd3JpdGUuCgoyMDAzLTAzLTIzICBHbGVuIE5ha2FtdXJhIDxnbGVuQGltb2R1bG8uY29tPgoKCVBSIGMvODIyNAoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2XzEpOiBEb24ndCBwYXNzIHRocm91Z2ggdHlwZSBjb252ZXJzaW9ucwoJd2hlbiBzaWduZWRuZXNzIGNoYW5nZXMgZm9yIGRpdmlzaW9uIG9yIG1vZHVsdXMuCgoyMDAzLTAzLTI0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChBU01fT1VUUFVUX0FMSUdORURfQlNTKTogUmVtb3ZlIHVubmVjZXNzYXJ5CglnbG9iYWxpemVfbGFiZWwuCgoyMDAzLTAzLTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBjLzEwMTc4CgkqIHN0bXQuYyAoZXhwYW5kX2VuZF9jYXNlX3R5cGUpOiBDaGVjayBmb3Igb3ZlcmZsb3cgaW4gcmFuZ2Ugd2hlbgoJZGV0ZXJtaW5pbmcgd2hldGhlciB0byB1c2UgYSBiaXQtdGVzdCBpbXBsZW1lbnRhdGlvbi4KCjIwMDMtMDMtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9vcHRpbWl6ZV9jZmcpOiBBbGxvdyBtZXJnaW5nIG9mIHRhYmxlanVtcHMKCWJlZm9yZSBmbG93Mi4KCSogY2ZncnRsLmMgKHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6IFNpbWlsYXJseS4KCjIwMDMtMDMtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0LzEwMTE2CgkqIGlmY3Z0LmMgKGZpbmRfaWZfYmxvY2spOiBEaXNhbGxvdyB0YWJsZWp1bXAgaW5zbnMgb3V0Z29pbmcKCWZyb20gdGhlbl9iYiBvciBlbHNlX2JiIGFmdGVyIGZsb3cyLgoKMjAwMy0wMy0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgd2hldGhlciBpdCBpcyBuZWNlc3NhcnkgdG8gbGluayBhZ2FpbnN0CglsaWJtIHRvIHVzZSBsZGV4cC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbjogQWRkIExERVhQX0xJQiBzdWJzdGl0dXRpb24gdmFyaWFibGUuCgoyMDAzLTAzLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDMtMDMtMjIgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChvdXRwdXRfY2JyYW5jaCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDAzLTAzLTIyICBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+CgoJKiBjZmdjbGVhbnVwLmMgKGluc25zX21hdGNoX3ApOiBEbyBub3QgZG8gRVFVSVYgc3Vic3RpdHV0aW9uCglhZnRlciByZWxvYWQuCgoyMDAzLTAzLTIyICBESiBEZWxvcmllICA8ZGogYXQgcmVkaGF0IGRvdCBjb20+LAoJQnJ1Y2UgS29yYiAgPGJrb3JiIGF0IGdudSBkb3Qgb3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc29sYXJpc19tdXRleF9pbml0XzEpOiBOZXc7IEZpeAoJYnVnZ3kgU29sYXJpcyAyLjYgbXV0ZXgvY29uZCBpbml0aWFsaXplcnMuCgkoc29sYXJpc19tdXRleF9pbml0KTogUmVuYW1lIHRvIHNvbGFyaXNfbXV0ZXhfaW5pdF8yLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9wdGhyZWFkLmg6IFVwZGF0ZS4KCSogZml4aW5jL2ZpeGluY2wuYyhpbml0aWFsaXplKTogYmUgZXhwbGljaXQgYWJvdXQgdGhlIGRlZmF1bHQgY2FzZQoJYW5kIGluZGljYXRlIHZlcmJvc2UgbGV2ZWwgd2hlbiBiZWluZyB2ZXJ5LCB2ZXJ5IHZlcmJvc2UuCgkqIGZpeGluYy9jaGVjay50cGwoVkVSQk9TRSk6IHByb3ZpZGUgYSBtZWFucyBmb3IgcGFzc2luZyB0aGUgdmFsdWUgaW4KCjIwMDMtMDMtMjIgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9pbml0X21hY2hpbmVfc3RhdHVzKTogUmV0dXJuIHZhbHVlLgoKMjAwMy0wMy0yMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKG91dHB1dF9jYnJhbmNoLCBvdXRwdXRfYmIsIG91dHB1dF9idmIpOiBPdXRwdXQgbm9wIGZvcgoJY29uZGl0aW9uYWwgYnJhbmNoIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24uICBVc2UgbmV4dF9yZWFsX2luc24KCWluc3RlYWQgb2YgbmV4dF9hY3RpdmVfaW5zbi4KCShvdXRwdXRfZGJyYSwgb3V0cHV0X21vdmIsIGp1bXBfaW5fY2FsbF9kZWxheSk6IFVzZSBuZXh0X3JlYWxfaW5zbgoJaW5zdGVhZCBvZiBuZXh0X2FjdGl2ZV9pbnNuLgoKMjAwMy0wMy0yMiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIm1vdnRpIiwgIiptb3ZkaV8zMSIsICIqbW92ZGZfMzEiKTogVXNlICdvJwoJaW5zdGVhZCBvZiAnbScgY29uc3RyYWludCBpbiBmb3JjZWQtc3BsaXQgYWx0ZXJuYXRpdmVzLgoJKCIqYWRkZGkzXzMxIiwgIipzdWJkaTNfMzEiKTogTGlrZXdpc2UuICBBbHNvLCBwYXNzIDAgaW5zdGVhZCBvZiAxIGFzCglWQUxJREFURV9BRERSRVNTIHBhcmFtZXRlciB0byBvcGVyYW5kX3N1YndvcmQuCgoyMDAzLTAzLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKG5vdGljZV91cGRhdGVfY2MpOiBDb3JyZWN0bHkgaGFuZGxlCgl0aGUgY2FzZSB3aGVyZSB0aGUgc2V0IGRlc3RpbmF0aW9uIGlzIFNUUklDVF9MT1dfUEFSVC4KCjIwMDMtMDMtMjIgIFN2ZWluIEUuIFNlbGRhbCAgPFN2ZWluLlNlbGRhbEBzb2xpZGFzLmNvbT4KCgkqIGNvbmZpZy9jNHgvdC1jNHggKElOU1RBTExfTElCR0NDKTogTWFrZSBnY2MgcmVjb2duaXplIGEgYzMzIGFzIGEKCWMzMCBpbnN0ZWFkIG9mIGEgYzQwIHByb2Nlc3Nvci4KCjIwMDMtMDMtMjIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24gPEFORD4pOiBVc2UgZ2VuX2ludF9tb2RlLiAgVGlkeS4KCjIwMDMtMDMtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIGludGwuaC4KCShzaGFkb3dfd2FybmluZyk6IFJld3JpdGUgdG8gYWxsb3cgYmV0dGVyIGRpYWdub3N0aWMgdHJhbnNsYXRpb25zLgoJKiBjLWNvbW1vbi5oOiBVcGRhdGUgcHJvdG90eXBlIG9mIHNoYWRvd193YXJuaW5nLiAgRGVjbGFyZSBzd19raW5kIGVudW0uCgkqIGMtZGVjbC5jICh3YXJuX2lmX3NoYWRvd2luZyk6IFVwZGF0ZSBjYWxscyB0byBzaGFkb3dfd2FybmluZzsKCXVzZSBpdCB0aHJvdWdob3V0LgoJKiBNYWtlZmlsZS5pbiAoYy1jb21tb24ubyk6IEFkZCBpbnRsLmguCgoyMDAzLTAzLTIxICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSAnZmxvYXRfZm9ybWF0Jy4KCgkqIGZpeHByb3RvOiBEZWZpbmUgTlVMTCBhbmQgc2l6ZV90IGluIGdlbmVyYXRlZCBzdGRsaWIuaCBhbmQKCXVuaXN0ZC5oLiAgS2lsbCB1bnVzZWQgcmVxdWlyZWRfc3RkbGliX2gsIHJlcXVpcmVkX3VuaXN0ZF9oLgoJUmVhcnJhbmdlIGZpbGUgZ2VuZXJhdGlvbiBsb29wIGZvciByZWFkYWJpbGl0eS4gIEdlbmVyYXRlIHRpbWUuaCwKCXN0cmluZy5oIGlmIG1pc3NpbmcuCgkqIHRzeXN0ZW0uaDogSW5jbHVkZSA8c3RyaW5nLmg+LCA8dGltZS5oPiB1bmNvbmRpdGlvbmFsbHkuCgkqIGNvbmZpZy5nY2M6IEJsb3cgYXdheSBQT1NJWCBkZWZpbmVzLgoKMjAwMy0wMy0yMiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kICgiY2FsbF92YWx1ZSIpOiBGaXggdHJhcCBjaGVjay4KCjIwMDMtMDMtMjIgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogRml4IHR5cG8gaW4KCXdyaXRpbmcgLmludGVycnVwdCBjb21tYW5kLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kICgiY2FsbCIpOiBMb29rIGF0IHRoZSBzeW1ib2wgdG8gc2VlCglpZiBpdCdzIGEgZmFyIG9yIG5lYXIgZnVuY3Rpb24uCgkoImNhbGxfdmFsdWUiKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgZmFyIGFuZAoJbmVhciBhdHRyaWJ1dGVzLgoJKG02OGhjMTFfaGFuZGxlX2ZudHlwZV9hdHRyaWJ1dGUpOiBBY2NlcHQgYXR0cmlidXRlcyBvbiBtZXRob2RzLgoJKG02OGhjMTFfb3ZlcnJpZGVfb3B0aW9ucyk6IElnbm9yZSAtbWxvbmctY2FsbHMgZm9yIDY4SEMxMS4KCShtNjhoYzExX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fZmFyCglhY2NvcmRpbmcgdG8gYXR0cmlidXRlcy4KCShleHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4KCSh0cmFwX2hhbmRsZXJfc3ltYm9sKTogTmV3IGdsb2JhbCB0byBrZWVwIHRyYWNrIG9mIHRyYXAgaGFuZGxlcnMuCgkobTY4aGMxMV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTWFyayBzeW1ib2wgYXMgZmFyIGlmIG5lZWRlZDsgc2V0Cgl0cmFwIHN5bWJvbC4KCShtNjhoYzExX2lzX2Zhcl9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkobTY4aGMxMV9pc190cmFwX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaCAobTY4aGMxMV9pc19mYXJfc3ltYm9sKTogRGVjbGFyZS4KCShtNjhoYzExX2lzX3RyYXBfc3ltYm9sKTogRGVjbGFyZS4KCjIwMDMtMDMtMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCk6IFJlY29tcHV0ZSBmYXN0IHByb2xvZ3VlcwoJb25seSB3aGVuIGFtb3VudCBvZiBzYXZlZCByZWdzIGNoYW5nZWQuCgkoaXg4Nl9pbml0X21hY2hpbmVfc3RhdHVzKTogSW5pdGlhbGl6ZSB1c2VfZmFzdF9wcm9sb2d1ZV9lcGlsZ291ZV9ucmVncy4KCSogaTM4Ni5oIChtYWNoaW5lX2Z1bmN0aW9uKTogTmV3IGZpZWxkcyB1c2VfZmFzdF9wcm9sb2d1ZV9lcGlsZ291ZV9ucmVncy4KCjIwMDMtMDMtMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBpbmxpbmUtYXNtLzc5MTYKCSogZnVuY3Rpb24uYyAoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzX2xvc3NhZ2UpOiBOZXcgZnVuY3Rpb24uCgkoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzXzEpOiBVc2UgaXQuCgkoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzKTogRG8gbm90IGNvbnRpbnVlIGluIHN1YnN0aXRpb24gd2hlbiBpbnNuIGhhcwoJYmVlbiBkZWxldGVkLgoKMjAwMy0wMy0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYyAobWFrZV9maWVsZF9hc3NpZ25tZW50KTogRml4IGEgd2FybmluZy4KCjIwMDMtMDMtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCppbnN2X3NpXzFfbl9sc2hpZnRydF8xNik6IE5ldy4KCjIwMDMtMDMtMjEgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFJFR19BTExPQ19PUkRFUik6ICBJbmNyZWFzZQoJcHJpb3JpdHkgZm9yIFIyIG9uIERhcndpbi4KCShIQVJEX1JFR05PX01PREVfT0spOiAgRG9uJ3QgYWNjZXB0IFIzMSBmb3IgREZtb2RlLgoKMjAwMy0wMy0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYyAobWFrZV9maWVsZF9hc3NpZ25tZW50KTogUmVtb3ZlIHVubmVjZXNzYXJ5IEFORAoJd2hlbiBzdG9yaW5nIGludG8gemVyb19leHRyYWN0LgoKMjAwMy0wMy0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19FWEFNSU5FX09CSkVDVCwgZ2NjX0FDX0NfRkxPQVRfRk9STUFUKTogRGVsZXRlLgoJKiBjb25maWd1cmUuaW46IERvbid0IGNhbGwgZ2NjX0FDX0NfRkxPQVRfRk9STUFULgoJKiBkZWZhdWx0cy5oOiBSZW1vdmUgcmVmZXJlbmNlIHRvIEhPU1RfRkxPQVRfV09SRFNfQklHX0VORElBTgoJaW4gY29tbWVudC4KCjIwMDMtMDMtMjEgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogb3B0YWJzLmMgKGluaXRfaW50ZWdyYWxfbGliZnVuY3MpOiBNYWtlIHN1cmUgd2UgaW5pdCBhdCBsZWFzdCB1cAoJdG8gImxvbmcgbG9uZyIgc2l6ZSB3b3Jkcy4KCjIwMDMtMDMtMjEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaDogRG8gbm90IGluY2x1ZGUgZml4ZGZkaS5oIG9uIHMzOTB4LgoJKFRBUkdFVF82NEJJVCk6IERlZmluZSBhcyBjb21waWxlLXRpbWUgY29uc3RhbnQgd2hlbiBJTl9MSUJHQ0MyLgoJKE1JTl9VTklUU19QRVJfV09SRCk6IERvIG5vdCBkZWZpbmUgd2hlbiBJTl9MSUJHQ0MyLgoKMjAwMy0wMy0yMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBkb2MtYnVnLzk4MTMKCSogZG9jL2V4dGVuZC50ZXhpOiBNb3ZlIG1pc3BsYWNlZCBwYXJhZ3JhcGggYWJvdXQgdW5kZXJzY29yZXMgaW4KCXZhcmlhYmxlcyBpbiBtYWNyb3MuCgoyMDAzLTAzLTIxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzgzNjYKCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IChTWU1CT0xJQ19DT05TVCk6IE5ldyBtYWNyby4KCShHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBVc2UgaXQuIFJlamVjdCB0aGUgZm9ybQoJUElDK1NZTUJPTElDX0NPTlNUIGluIG90aGVyIG1vZGVzIHRoYW4gUG1vZGUuCgkoR09fSUZfTU9ERV9ERVBFTkRFTlRfQUREUkVTUyk6IFVzZSBpdC4gTWFyawoJdGhlIGZvcm0gUElDK1NZTUJPTElDX0NPTlNUIGFzIG1vZGUgZGVwZW5kZW50LgoKMjAwMy0wMy0yMSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2V4cGFuZF9hcml0aCk6IE1ha2UKCXN1cmUgd2UgYWx3YXlzIGVtaXQgYXQgbGVhc3Qgb25lIGluc24uCgoyMDAzLTAzLTIxICBDaHJpc3RvcGhlciBGYXlsb3IgIDxjZ2ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi1jeWd3aW4qKTogVXNlIG5ldyBjb21tb24gbWFrZWZpbGUKCXN0dWIgdC1jeWdtaW5nLiBVc2UgY29tbW9uIHRhcmdldCBoZWFkZXIgY3lnbWluZy5oLiBBZGQgZXh0cmEKCWNfdGFyZ2V0X29iaiBhbmQgY3h4X3RhcmdldF9vYmogZmlsZS4gRGVmYXVsdCBjeWd3aW4gdG8gcG9zaXgKCXRocmVhZGluZy4gRW5mb3JjZSBpMzg2IGFzIGZsb2F0IGZvcm1hdC4KCShpWzM0NTY3XTg2LSotbWluZ3cqKTogVXNlIG5ldyBjb21tb24gbWFrZWZpbGUgc3R1YiB0LWN5Z21pbmcuCglSZW1vdmUgY3lnd2luLmggYXMgdGFyZ2V0IGhlYWRlci4gVXNlIGNvbW1vbiB0YXJnZXQgaGVhZGVyCgljeWdtaW5nLmggIEVuZm9yY2UgaTM4NiBhcyBmbG9hdCBmb3JtYXQuIENvcnJlY3QgdHlwby4KCSogY29uZmlnL2kzODYvY3lnbWluZy5oOiBOZXcgZmlsZSwgY29udGFpbmluZyBkZWZpbml0aW9ucwoJY29tbW9uIHRvIG1pbmd3MzIgYW5kIGN5Z3dpbi4KCSogY29uZmlnL2kzODYvY3lnd2luLmg6IFJlbW92ZSBkZWZpbml0aW9ucyBjb21tb24gdG8gY3lnd2luIGFuZAoJbWluZ3cuCVNpbXBsaWZ5IHNwZWNpYWwgc3BlYyBsb2dpYy4gIERlZmluZSAid3JhcHBlcnMiIGFyb3VuZAoJY2VydGFpbiBpbmNsdWRlIHBhdGggZGVmaW5lcyB0byBhY2NvbW1vZGF0ZSAtbW5vLWN5Z3dpbi4KCVJlbW92ZSBzb21lICNpZiAwJ2VkIGNvZGUuCgkoU1RBTkRBUkRfSU5DTFVERV9ESVIpIEFsd2F5cyBkZWZpbmUgd2hlbiBub3QgY3Jvc3MtY29tcGlsaW5nLgoJKExJTktfU1BFQyk6IERvbid0IHVzZSBjeWcgc2VhcmNoIHByZWZpeCB3aGVuIC1tbm8tY3lnd2luLgoJKEdDQ19EUklWRVJfSE9TVF9JTklUSUFMSVpBVElPTik6IERlZmluZSBhcyBjYWxsIHRvIG1pbmd3X3NjYW4uCgkqIGNvbmZpZy9pMzg2L21pbmd3MzIuaDogUmVtb3ZlIGRlZmluaXRpb25zIGNvbW1vbiB0byBjeWd3aW4gYW5kCgltaW5ndy4KCShFWFRSQV9PU19DUFBfQlVJTFRJTlMpOiBBZGp1c3QuCgkoVEFSR0VUX1ZFUlNJT04pOiBEZWZpbmUuCgkqIGNvbmZpZy9pMzg2L2NydGRsbC5oIChFWFRSQV9PU19DUFBfQlVJTFRJTlMpOiBPdmVycmlkZQoJbWluZ3czMi5oIGRlZmluaXRpb25zLgoJKExJQkdDQ19TUEVDKTogQWRkIGxpYm1pbmd3ZXguYSBhcyBpbiBtaW5ndzMyLmguCgkqIGNvbmZpZy9pMzg2L3QtY3lnd2luIChFWFRSQV9HQ0NfT0JKUyk6IERlZmluZSBhcyBjeWd3aW4xLm8uCglBZGQgY29tcGlsYXRpb24gcnVsZXMgZm9yIGN5Z3dpbjEubyBjeWd3aW4yLm8uCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbjEuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbjIuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L3QtY3lnbWluZzogTmV3IG1ha2VmaWxlIHN0dWIuCgoyMDAzLTAzLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdl8xKTogUmV2ZXJ0IGNoYW5naW5nIG9yZGVyIG9mCglvcGVyYW5kcyBpbiBjYXNlIE1VTFRfRVhQUiBvZiAyMDAzLTAyLTE2IHBhdGNoLgoKMjAwMy0wMy0yMCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CglNZXJnZSBjaGFuZ2VzIGZyb20gbmV3LXJlZ2FsbG9jLWJyYW5jaAoKCUZyb20gTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoJKiBkZi5jIChkZl9yZWZfcmVjb3JkXzEpOiBNb3ZlIGluaXQgb2YgbG9jIHRvIHNhZmUgcG9pbnQuCglPbmx5IHJlY3Vyc2Ugb24gaW50ZXJlc3RpbmcgdGhpbmdzIGluIHBhcmFsbGVscy4KCUhhbmRsZSBDTEFTU19DQU5OT1RfQ0hBTkdFX01PREUgc21hcnRlci4KCShkZl91c2VzX3JlY29yZCk6IERpdHRvLgoKCSogZGYuaCAoREZfUkVGX01FTV9PSyk6IE5ldyBlbnVtIG1lbWJlciwgdXNlZCB0byBtYXJrIHJlZidzIHdoaWNoCglpdCdzIGFscmVhZHkgb2theSB0byB1c2UgbWVtb3J5IG9wZXJhbmRzIGluIChJRSBkb2Vzbid0IHJlcXVpcmUKCWFkZGluZyBhbm90aGVyIGluc24gb3IgYW55dGhpbmcpLgoKMjAwMy0wMy0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzYzNDgKCSogZXhwbG93LmMgKGFsbG9jYXRlX2R5bmFtaWNfc3RhY2tfc3BhY2UpOiBIYW5kbGUgU1RBQ0tfU0laRV9NT0RFCglkaWZmZXJlbnQgZnJvbSB3b3JkX21vZGUuCgoyMDAzLTAzLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqaW5zdl9zaV8xX25fbHNoaWZ0cnQpOiBSZXN0cmljdCB0aGUKCXNvdXJjZSBvcGVyYW5kIHRvIHRob3NlIHRoYXQgY2FuIGJlIGV4dHJhY3RlZCB3aXRoIGJsZC4KCjIwMDMtMDMtMjAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIDEwMDY2CgkqIGFybS5tZCAoVU5TUEVDX1BJQ19CQVNFKTogTmV3IGNvbnN0YW50LgoJKHBpY19hZGRfZG90X3BsdXNfZm91cik6IFdyYXAgd2l0aCB1bnNwZWMuCgkocGljX2FkZF9kb3RfcGx1c19laWdodCk6IExpa2V3aXNlLgoKMjAwMy0wMy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmluc3Zfc2lfMV9uKTogTmV3LgoJKCppbnN2X3NpXzFfbl9sc2hpZnRydCk6IExpa2V3aXNlLgoKMjAwMy0wMy0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfbWF0aGZuX2NvbXBhcmUpOiBOZXcgZnVuY3Rpb24gdG8gc2ltcGxpZnkKCWNvbXBhcmlzb25zIGFnYWluc3QgYnVpbHQtaW4gbWF0aCBmdW5jdGlvbnMuICBGb2xkIGNvbXBhcmlzb25zCglvZiBzcXJ0IGFnYWluc3QgY29uc3RhbnRzLgoJKGZvbGQpOiBDYWxsIGZvbGRfbWF0aGZuX2NvbXBhcmUgd2hlbiBhcHByb3ByaWF0ZS4KCjIwMDMtMDMtMjAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBpZmN2dC5jIChmaW5kX2lmX2Nhc2VfMSk6IElmIHdlIGFkZCBhIG5ldyBiYiwgdXBkYXRlIHRoZSBkb21pbmFuY2UKCWluZm9ybWF0aW9uLgoKMjAwMy0wMy0yMCAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJVmFyaW91cyBjbGVhbnVwcyB0byBoZWxwIGNvbXBpbGUgc2VydmVyLgoKCSogY3BwaW5pdC5jIChjcHBfY3JlYXRlX3JlYWRlcik6ICBUYWtlIGV4dHJhIGhhc2hfdGFibGUqIGFyZ3VtZW50LAoJYW5kIHBhc3MgdGhhdCB0byBfY3BwX2luaXRfaGFzaHRhYmxlLgoJKGNwcF9yZWFkX21haW5fZmlsZSk6ICBEcm9wIGhhc2hfdGFibGUqIGFyZ3VtZW50OyBkb24ndCBjYWxsCglfY3BwX2luaXRfaGFzaHRhYmxlLgoJKiBjcHBsaWIuaDogIFVwZGF0ZSBkZWNsYXJhdGlvbnMgdG8gbWF0Y2guCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9pbml0X29wdGlvbnMpOiAgUGFzcyBpZGVudF9oYXNoIHRvCgljcHBfY3JlYXRlX3JlYWRlci4KCShjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiAgRG9uJ3QgcGFzcyBpZGVudF9oYXNoIHRvIGNwcF9yZWFkX21haW5fZmlsZS4KCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6ICBMaWtld2lzZSBwYXNzIE5VTEwgdGFibGUgdG8KCWNwcF9jcmVhdGVfcmVhZGVyIHJhdGhlciB0aGFuIGNwcF9yZWFkX21haW5fZmlsZS4KCgkqIGNwcGZpbGVzLmMgKGNwcF9yZW5hbWVfZmlsZSk6ICBHZW5lcmFsaXplZCBhbmQgcmVuYW1lZAoJdG8gY3BwX2NoYW5nZV9maWxlLgoJKiBjcHBsaWIuaDogIFVwZGF0ZSBkZWNsYXJhdGlvbiB0byBtYXRjaC4KCSogYy1vcHRzLmMgKHB1c2hfY29tbWFuZF9saW5lX2xpbmUsIGZpbmlzaF9vcHRpb25zKTogIENoYW5nZQoJY3BwX3JlbmFtZV9maWxlIGNhbGxzIHRvIGNwcF9jaGFuZ2VfZmlsZS4KCgkqIGxpbmUtbWFwLmMgKGFkZF9saW5lX21hcCk6ICBBbGxvdyBsZWF2aW5nIHRoZSBvdXRlcm1vc3QgZmlsZS4KCUFsbG93aW5nIGVudGVyaW5nIGFuIG91dGVybW9zdC1maWxlIGFmdGVyIHRoZSBpbml0aWFsIHRpbWUuCgoJKiB0b3BsZXYuYyAocG9wX3NyY2xvYyk6ICBBbGxvdyBwb3BwaW5nIGZyb20gaW5pdGlhbCBmaWxlLgoKMjAwMy0wMy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1IGF0IGNzIGRvdCB1bWFzcyBkb3QgZWR1PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogRm9sZCBBIC0gKEEgJiBCKSBpbnRvIH5CICYgQS4KCjIwMDMtMDMtMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGEgcGVlcGhvbGUyKTogTmV3LgoKMjAwMy0wMy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmFkZHNpM19hbmRfcl8xKTogTmV3LgoJKCphZGRzaTNfYW5kX25vdF9yXzEpOiBMaWtld2lzZS4KCjIwMDMtMDMtMTkgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoU1RSSUNUMl9XQVJOKTogQWRkIEBXRVJST1JALgoJKEdDQ19XQVJOX0NGTEFHUyk6IFJlbW92ZSAkKFdFUlJPUikuCgkoZml4aW5jLnNoLXdhcm4pOiBOZXcuCgkqIGFkYS9NYWtlLWxhbmcuaW4gKGFkYS13YXJuKTogQWRkICQoV0VSUk9SKS4KCSogY3AvTWFrZS1sYW5nLmluIChjcC13YXJuKTogQWRkICQoV0VSUk9SKS4KCSogZi9NYWtlLWxhbmcuaW4gKGYtd2Fybik6IEFkZCAkKFdFUlJPUikuCgkqIGphdmEvTWFrZS1sYW5nLmluIChqYXZhLXdhcm4pOiBBZGQgJChXRVJST1IpLgoJKiB0cmVlbGFuZy9NYWtlLWxhbmcuaW4gKHRyZWVsYW5nLXdhcm4pOiBBZGQgJChXRVJST1IpLgoKMjAwMy0wMy0xOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjLWNvbW1vbi5oIChjX2R1bXBfdHJlZSksIGMtZHVtcC5jIChjX2R1bXBfdHJlZSksCglsYW5naG9va3MtZGVmLmggKGxoZF90cmVlX2R1bXBfZHVtcF90cmVlKSwKCWxhbmdob29rcy5jIChsaGRfdHJlZV9kdW1wX2R1bXBfdHJlZSksIGxhbmdob29rcy5oICgqZHVtcF90cmVlKToKCUNoYW5nZSByZXR1cm4gdHlwZSBmcm9tICdpbnQnIHRvICdib29sJy4gIFJlcGxhY2UgMCBhbmQgMSB3aXRoCgl0cnVlIGFuZCBmYWxzZSBpbiByZXR1cm4gc3RhdGVtZW50cy4KCjIwMDMtMDMtMTkgIEtldmluIEJ1ZXR0bmVyICA8a2V2aW5iQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoRFdBUkZfSU5JVElBTF9MRU5HVEhfU0laRSk6IERlZmluZS4KCShEV0FSRl9DT01QSUxFX1VOSVRfSEVBREVSX1NJWkUpOiBUYWtlIGludG8gYWNjb3VudAoJRFdBUkZfSU5JVElBTF9MRU5HVEhfU0laRS4KCShvdXRwdXRfY29tcGlsYXRpb25fdW5pdF9oZWFkZXIsIG91dHB1dF9wdWJuYW1lcywgb3V0cHV0X2FyYW5nZXMpCgkob3V0cHV0X2xpbmVfaW5mbyk6IE91dHB1dCAweGZmZmZmZmZmIGVzY2FwZSB2YWx1ZSBmb3IgNjQtYml0CglEV0FSRiBleHRlbnNpb24uCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKERXQVJGX0lOSVRJQUxfTEVOR1RIX1NJWkUpOiBEZWZpbmUuCgoyMDAzLTAzLTE5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyk6IERvIG5vdAoJZm9yY2UgY29uc3RhbnRzIHRvIHRoZSBwb29sIHVubGVzcyBuZWNlc3NhcnkuCgkoczM5MF9kZWNvbXBvc2VfYWRkcmVzcyk6IFByZWZlciB0byB1c2UgcG9pbnRlciBhcyBiYXNlLAoJbm90IGluZGV4IHJlZ2lzdGVyLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKnRzdGhpQ0NUX29ubHkiKTogUmVtb3ZlICc/JyBmcm9tCglRIGFsdGVybmF0aXZlLgoJKCIqbW92ZGlfNjQiLCAiKm1vdnNpIiwgIm1vdmhpIiwgIm1vdnFpXzY0IiwgIm1vdnFpIiwKCSIqbW92ZGZfNjQiLCAiKm1vdnNmIik6IEFkZCAnPycgdG8gUS0+USBhbHRlcm5hdGl2ZXMuCgkoIipleHRyYWN0cWkiLCAiKmV4dHJhY3RoaSIsICIqemVyb19leHRlbmRoaXNpMl8zMSIsCgkiKnplcm9fZXh0ZW5kcWlzaTJfMzEiLCAiKnplcm9fZXh0ZW5kcWloaTJfMzEiLAoJIiphZGRkaTNfMzEiLCAiKnN1YmRpM18zMSIpOiBEbyBub3Qgc2V0ICJ0eXBlIiBhdHRyaWJ1dGUuCgoyMDAzLTAzLTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmggKG1hY2hpbmVfZnVuY3Rpb24pOiBOZXcgZmllbGRzIHVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3VlLgoJKiBpMzg2LmMgKHVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3VlKTogUmVtb3ZlLgoJKGl4ODZfZnJhbWUpOiBOZXcgZmllbGQgc2F2ZV9yZWdzLXVzaW5nX21vdjsKCShpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogIERlY2lkZSBvbiBmYXN0IHByb2xvZ3VlczsKCWFsbG9jYXRlIHNhdmVkIHJlZ2lzdGVycyBpbiByZWQgem9uZS4KCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSwgaXg4Nl9leHBhbmRfcHJvbGdvdWVzKTogT2JleSBuZXcgcGFyYW1ldGVycy4KCjIwMDMtMDMtMTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaCAoQ1BQX1NQRUMpOiBSZW1vdmUgdHJhaWxpbmcgc2VtaS1jb2xvbi4KCjIwMDMtMDMtMTggIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgMTAwNjIKCSogY29uZmlnL3BhL3BhLWhwdXguaCAoVEFSR0VUX0hQVVhfVU5XSU5EX0xJQlJBUlkpOiBSZWRlZmluZS4KCSogcGEtcHJvdG9zLmggKG91dHB1dF9sYnJhbmNoKTogTmV3IHByb3RvdHlwZS4KCSogcGEuYyAoY29tcHV0ZV9mcmFtZV9zaXplKTogQ2hhbmdlIHNpemUgb2YgdGhlIGZyYW1lIG1hcmtlciBvbiB0aGUKCTY0LWJpdCBwb3J0cyB0byA0OCBieXRlcy4KCShwYV9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBEb2N1bWVudCB3aHkgU0FWRV9TUCBpcyBzZXQuCgkoaHBwYV9leHBhbmRfcHJvbG9ndWUpOiBTYXZlIHByZXZpb3VzIHN0YWNrIHBvaW50ZXIgaW50byBmcmFtZSBtYXJrZXIKCW9uIHRhcmdldHMgd2hpY2ggdXNlIHRoZSBocHV4IHVud2luZCBsaWJyYXJ5LgoJKG91dHB1dF9jYnJhbmNoKTogVXNlIG91dHB1dF9sYnJhbmNoLgoJKG91dHB1dF9sYnJhbmNoKTogTmV3IGZ1bmN0aW9uIHRvIG91dHB1dCBsb25nIHVuY29uZGl0aW9uYWwgYnJhbmNoZXMuCgkqIHBhLmggKFRBUkdFVF9IUFVYX1VOV0lORF9MSUJSQVJZKTogRGVmaW5lLgoJKFNUQUNLX1BPSU5URVJfT0ZGU0VUKTogVXBkYXRlIG9mZnNldCBmb3IgNDgtYnl0ZSBmcmFtZSBtYXJrZXIgb24KCTY0LWJpdCBwb3J0cy4KCSogcGEubWQgKGp1bXApOiBVc2Ugb3V0cHV0X2xicmFuY2guCgkoYWxsb2NhdGVfc3RhY2spOiBOZXcgZXhwYW5kZXIgZm9yIGR5bmFtaWMgc3RhY2sgYWxsb2NhdGlvbi4KCjIwMDMtMDMtMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IE9ubHkgcmVxdWlyZSBhIGZyYW1lCgl3aGVuIGRlYnVnZ2luZyBvbiBYQ09GRiB0YXJnZXRzLiAgRGVsZXRlICJhYmkiIHRlbXAuCgoJUFIgdGFyZ2V0LzEwMDczCgkqIGNvbWJpbmUuYyAoZm9yY2VfdG9fbW9kZSA8Tk9UPik6IFVzZSBnZW5faW50X21vZGUuCgoyMDAzLTAzLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9vdXRwdXRfZHdhcmZfZHRwcmVsKTogTmV3LgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX291dHB1dF9kd2FyZl9kdHByZWwpOiBOZXcgcHJvdG8uCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoQVNNX09VVFBVVF9EV0FSRl9EVFBSRUwpOiBEZWZpbmUuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfb3V0cHV0X2R3YXJmX2R0cHJlbCk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoaWE2NF9vdXRwdXRfZHdhcmZfZHRwcmVsKTogTmV3IHByb3RvLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9PVVRQVVRfRFdBUkZfRFRQUkVMKTogRGVmaW5lLgoKMjAwMy0wMy0xOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IERvbid0IGNsb25lCgl0aGUgcmVzdWx0IG9mIG1hY2hvcGljX2Z1bmN0aW9uX2Jhc2VfbmFtZS4KCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19mdW5jdGlvbl9iYXNlX25hbWUpOiBVc2UgYSBnYy1hbGxvY2F0ZWQKCXN0cmluZyByYXRoZXIgdGhhbiBhIHN0YXRpYyBhcnJheS4KCgkqIE1ha2VmaWxlLmluIChlbWl0LXJ0bC5vKTogQWRkIGd0LWVtaXQtcnRsLmggdG8gZGVwZW5kZW5jaWVzLgoKCSogZ2VuZ3R5cGUuYzogSW5jbHVkZSBydGwuaC4KCShlbnVtIHJ0eF9jb2RlKTogRG9uJ3QgZGVmaW5lLgoJKHJ0eF9mb3JtYXQpOiBNYWtlIGRlY2xhcmF0aW9uIG1hdGNoIHJ0bC5oLgoJKHJ0eF9uZXh0X25ldyk6IFJlbmFtZSBmcm9tIHJ0eF9uZXh0IHRvIGF2b2lkIGNvbmZsaWN0LiAgQ2hhbmdlIGFsbAoJdXNlcnMuCgkoYWRqdXN0X2ZpZWxkX3J0eF9kZWYpOiBEZXNjcmliZSBzdHJpbmdzIGluIE5PVEVfTElORV9OVU1CRVIgbm90ZXMuCgkqIE1ha2VmaWxlLmluIChnZW5ndHlwZS5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDMtMDMtMTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChpb3JkaTMpOiBGaXggc2V0dGluZyBsb3cgaGFsZiB0byAtMS4gIEZyb20KCW1hcnRpbkBibG9tLm9yZy4KCjIwMDMtMDMtMTggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZnVuY3Rpb24uYyAobmV4dF9ibG9ja19pbmRleCk6IE1hcmsgd2l0aCBHVFkuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobWFjaG9fY29ycmVjdF9waWMpOiBDb3JyZWN0IHBhdHRlcm4uCgoyMDAzLTAzLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoVU5TUEVDVl9TRVRKTVBfUkVDRUlWRVIpOiBOZXcuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBEZWxheSBjYWxsIHRvIGlhNjRfcmVsb2FkX2dwCgl1bnRpbCBhZnRlciByZWxvYWQuCgoyMDAzLTAzLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fdW5vcCk6IE5ldyB0YXJnZXRfbW9kZSBvcGVyYW5kOwoJdXNlIGl0IHRvIGNvbnZlcnQgdGhlIHJlc3VsdCB0byB0aGUgY29ycmVjdCBtb2RlLgoJKGV4cGFuZF9idWlsdGluKTogVXBkYXRlIGFsbCBjYWxsZXJzLgoKMjAwMy0wMy0xOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIm1vdnRpIiwgIm1vdmhpIiwgIm1vdnFpIik6IEFkZCAidHlwZSIgYXR0cmlidXRlLgoKMjAwMy0wMy0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZDogIEZpeCBwcmV2aW91cyBjb21taXQgdGhhdCBtaXN0YWtlbHkgYXBwbGllZCB0aGUgcGF0Y2gKCXR3aWNlLgoKCSogYWxpYXMuYyAocnR4X2VxdWFsX2Zvcl9tZW1yZWZfcCk6IEFzc3VtZSB0aGF0IFggYW5kIFkgaGFzIGJlZW4KCWNhbm9uaWNhbGl6ZWQuCgkobWVtcmVmc19jb25mbGljdF9wKTogTGlrZXdpc2UuCgkoYWRkcl9zaWRlX2VmZmVjdF9ldmFsKTogQ2Fub25pY2FsaXplIHRoZSBjb25zdHJ1Y3RlZCBhZGRyZXNzLgoKMjAwMy0wMy0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoY3Z0dHM/MnNpIHBlZXAyKTogTmV3LgoKMjAwMy0wMy0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmlvcnNpM190d29fcWlfemV4dCk6IE5ldy4KCjIwMDMtMDMtMTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2ZpbGVfbmFtZXMpOiBDYXN0IHNpemVfdCB0byB1bnNpZ25lZCBsb25nCglmb3IgZm9ybWF0LgoKMjAwMy0wMy0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzEwMDkxCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpIFtBRERSX0VYUFJdOiBEaXNhbGxvdyB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YKCWFuIHVuYWxpZ25lZCBtZW1iZXIgb2YgVFJFRV9BRERSRVNTQUJMRSB0eXBlLgoKMjAwMy0wMy0xOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChNQVNLX1BST0ZJTEVfS0VSTkVMKTogRGVmaW5lLgoJKFRBUkdFVF9QUk9GSUxFX0tFUk5FTCk6IERlZmluZS4KCShTVUJUQVJHRVRfU1dJVENIRVMpOiBIYW5kbGUgLW1wcm9maWxlLWtlcm5lbC4KCShQUk9GSUxFX0JFRk9SRV9QUk9MT0dVRSk6IERvbid0IGRlZmluZS4KCShQUk9GSUxFX0tFUk5FTCk6IFJlbW92ZSBoYWNrcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoVEFSR0VUX1BST0ZJTEVfS0VSTkVMKTogRGVmaW5lIGRlZmF1bHQuCgkocnM2MDAwX3N0YWNrX2luZm8pOiBObyBuZWVkIHRvIHNhdmUgbHIgaWYganVzdCBmb3IgcHJvZmlsaW5nIHdoZW4KCVRBUkdFVF9QUk9GSUxFX0tFUk5FTC4KCShvdXRwdXRfcHJvZmlsZV9ob29rKTogT3V0cHV0IG5vdGhpbmcgd2hlbiBUQVJHRVRfUFJPRklMRV9LRVJORUwuCgkob3V0cHV0X2Z1bmN0aW9uX3Byb2ZpbGVyKTogTG9jYWxpemUgbGFiZWwgZ2VuZXJhdGlvbi4gIEVtaXQgY29kZQoJZm9yIGtlcm5lbCBwcm9maWxpbmcuCgoyMDAzLTAzLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBBZGQgYSBwcm90b3R5cGUgZm9yCglieXRlX2FjY2Vzc2VzX21lcmdlYWJsZV9wLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoYnl0ZV9hY2Nlc3Nlc19tZXJnZWFibGVfcCk6IE5ldy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqaW9yaGkzX3R3b19xaV9tZW0pOiBMaWtld2lzZS4KCShhIHNwbGl0dGVyKTogTGlrZXdpc2UuCgkoKmlvcnNpM19hc2hpZnRfMTZfYXNoaWZ0XzI0KTogTGlrZXdpc2UuCgkoKmlvcnNpM19hc2hpZnRfMTZfYXNoaWZ0XzI0X21lbSk6IExpa2V3aXNlLgoKMjAwMy0wMy0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZHdhcmYyYXNtLmg6IERlbGV0ZSBvYnNvbGV0ZSBjb21tZW50LgoJKGR3Ml9hc21fb3V0cHV0X2RhdGEsIGR3Ml9hc21fb3V0cHV0X2RlbHRhLCBkdzJfYXNtX291dHB1dF9vZmZzZXQsCglkdzJfYXNtX291dHB1dF9wY3JlbCwgZHcyX2FzbV9vdXRwdXRfYWRkciwKCWR3Ml9hc21fb3V0cHV0X2FkZHJfcnR4LCBkdzJfYXNtX291dHB1dF9lbmNvZGVkX2FkZHJfcnR4LAoJZHcyX2FzbV9vdXRwdXRfbnN0cmluZywgZHcyX2FzbV9vdXRwdXRfZGF0YV91bGViMTI4LAoJZHcyX2FzbV9vdXRwdXRfZGF0YV9zbGViMTI4LCBkdzJfYXNtX291dHB1dF9kZWx0YV91bGViMTI4LAoJZHcyX2FzbV9vdXRwdXRfZGVsdGFfc2xlYjEyOCk6IEFkZCBBVFRSSUJVVEVfTlVMTF9QUklOVEYuCgoyMDAzLTAzLTE3ICBaYWNrIFdlaW5iZXJnIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXRyZWUuaCAoc3RydWN0IGxhbmdfaWRlbnRpZmllcik6IFJlbW92ZSBlcnJvcl9sb2N1cyBmaWVsZC4KCShJREVOVElGSUVSX0VSUk9SX0xPQ1VTKTogS2lsbC4KCShyZWNvcmRfZnVuY3Rpb25fc2NvcGVfc2hhZG93KTogTmV3IHByb3RvdHlwZS4KCSogYy10eXBlY2suYyAoYnVpbGRfZXh0ZXJuYWxfcmVmKTogRG9uJ3QgY29tcGxhaW4gaWYKCWRlY2wgaXMgZXJyb3JfbWFya19ub2RlLiAgV2hlbiBub3QgYXQgZmlsZSBzY29wZSwgYmluZCB0aGUKCWRlY2wncyBsb2NhbCB2YWx1ZSB0byBlcnJvcl9tYXJrX25vZGUgdG8gc3VwcHJlc3MgZnVydGhlcgoJd2FybmluZ3MsIGluc3RlYWQgb2Ygc2V0dGluZyBJREVOVElGSUVSX0VSUk9SX0xPQ1VTLgoKCSogYy1kZWNsLmMgKGdldF9mdW5jdGlvbl9iaW5kaW5nX2xldmVsKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShyZWNvcmRfZnVuY3Rpb25fc2NvcGVfc2hhZG93KTogTmV3IGV4cG9ydGVkIGZ1bmN0aW9uLgoJKGNfbWFrZV9mbmFtZV9kZWNsKTogVXNlIGdldF9mdW5jdGlvbl9iaW5kaW5nX2xldmVsLgoKMjAwMy0wMy0xNyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBzdG10LmMgKHRhaWxfcmVjdXJzaW9uX2FyZ3MpOiBDYWxsIHByb21vdGVfbW9kZSB0byBzZXQKCXVuc2lnbmVkcCBmbGFnIGNvcnJlY3RseSBiZWZvcmUgY2FsbGluZyBjb252ZXJ0X21vdmUuCgoyMDAzLTAzLTE3ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBsb29wLXVucm9sbC5jIChkZWNpZGVfcGVlbF9jb21wbGV0ZWx5LAoJZGVjaWRlX3Vucm9sbF9jb25zdGFudF9pdGVyYXRpb25zLCBkZWNpZGVfdW5yb2xsX3N0dXBpZCwKCWRlY2lkZV91bnJvbGxfcnVudGltZV9pdGVyYXRpb25zLCBkZWNpZGVfcGVlbF9zaW1wbGUpOiBTZXQKCWxvb3AtPmhhc19kZXNjLgoKMjAwMy0wMy0xNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya19yb290cyk6IFVzZSBodGFiX3RyYXZlcnNlX25vcmVzaXplLgoKMjAwMy0wMy0xNyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogRm9yIGEgc3RydWN0IHZhbHVlIGFkZHJlc3MgcGFzc2VkIGFzCglmaXJzdCBhcmd1bWVudCwgZGVsYXkgdGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IFJUTCBzZXR1cCBjb2RlIHVudGlsCglhZnRlciB0aGUgZW1pc3Npb24gb2YgcGFyYW1ldGVyIGNvbnZlcnNpb25zLgoKMjAwMy0wMy0xNyAgRGF2ZSBMb3ZlICA8ZnhAZ251Lm9yZz4KCSAgICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9hbHBoYS9vc2YuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZSBfX2RpZ2l0YWxfXywKCV9fYXJjaDY0X18gdG8gbWF0Y2ggQ29tcGFxIGNjLgoKMjAwMy0wMy0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1vcHRzLmM6IERlZmF1bHQgVEFSR0VUX0VCQ0RJQyB0byAwIGlmIG5vdCBkZWZpbmVkLgoJKGNfY29tbW9uX2luaXQpOiBTZXQgRUJDRElDIGluIGNwcCBvcHRpb25zLgoJKiBjcHBsZXguYyAobWF5YmVfcmVhZF91Y3MsIGNwcF9wYXJzZV9lc2NhcGUpOiBVc2UgRUJDRElDIG9wdGlvbiwKCW5vdCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IE5ldyBlbnRyeSBFQkNESUMuCgoyMDAzLTAzLTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogTmVlZCB0byBtYWxsb2MgYXJndW1lbnRzIHRvIGFkZF9wYXRoLgoKMjAwMy0wMy0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IFNldCBkZWxldGVfdW51c2VkCglhcmd1bWVudCB0byAwIGZvciByZWRpcmVjdF9qdW1wLgoKMjAwMy0wMy0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvODgwNQoJKiBleGNlcHQuYyAoZWhfcmVnaW9uX3VfY2xlYW51cCk6IEFkZCBwcmV2X3RyeS4KCShleHBhbmRfZWhfcmVnaW9uX2VuZF9jbGVhbnVwKTogU2V0IGl0LgoJKHJlYWNoYWJsZV9oYW5kbGVycyk6IFVzZSBpdCB0byBza2lwIG92ZXIgY2xlYW51cCBibG9ja3MuCgoyMDAzLTAzLTE3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoVEFHUyk6IFJlbW92ZSBvYnNvbGV0ZSBoYW5kbGluZyBvZiA9Ki5bY2h5XS4KCjIwMDMtMDMtMTcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoVEFSR0VUXzY0QklUKTogUmVkZWZpbmUuCgkoVEFSR0VUX1JFTE9DQVRBQkxFLCBUQVJHRVRfRUFCSSwgVEFSR0VUX1BST1RPVFlQRSk6IExpa2V3aXNlLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUywgU1VCVEFSR0VUX09QVElPTlMpOiBMaWtld2lzZS4KCShTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUywgQ1BQX1NZU1ZfU1BFQyk6IExpa2V3aXNlLgoKMjAwMy0wMy0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eCAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IERvbid0IGFib3J0IGZvcgoJU1NfUExVUywgVVNfUExVUywgU1NfTUlOVVMsIFVTX01JTlVTLgoKMjAwMy0wMy0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKG1vdnN0cmljdHFpLCBtb3ZzdHJpY3RxaV8xKTogQ2hlY2sKCW9wdGltaXplX3NpemUgYXMgd2VsbC4KCjIwMDMtMDMtMTYgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlICdiJyBtb2RpZmllcgoJZm9yIEQgcmVnaXN0ZXIgdG8gc3BlY2lmeSB0aGUgbG93IHBhcnQgb2YgaXQsIGFrYSBCLgoJKG02OGhjMTFfZ2VuX21vdmhpKTogVXNlIFJFR19XQVNfMCBub3RlIGFuZCBpbmNyZW1lbnQgb3IgZGVjcmVtZW50Cgl0aGUgcmVnaXN0ZXIgaWYgd2UgYXJlIGxvYWRpbmcgMSBvciAtMSB0byBpdDsgYXZvaWQgdXNpbmcgdGVtcAoJcmVnaXN0ZXIgd2hlbiBtb3ZpbmcgWC9ZIHRvIFkvWC4KCShtNjhoYzExX2dlbl9tb3ZxaSk6IExpa2V3aXNlLgoJKG02OGhjMTFfY2hlY2tfel9yZXBsYWNlbWVudCk6IEZpeCBsYXN0IGluc24gc2V0dGluZyBmb3IgY29tcGFyZSBjYXNlLgoKMjAwMy0wMy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vOTAxNgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX21vdmUpOiBGb3JjZSBtb3JlIENPTlNUX0RPVUJMRXMKCWludG8gdGhlIGNvbnN0YW50IHBvb2wuCgoyMDAzLTAzLTE2ICBGYWxrIEh1ZWZmbmVyICA8ZmFsay5odWVmZm5lckBzdHVkZW50LnVuaS10dWViaW5nZW4uZGU+CgoJUFIgdGFyZ2V0LzkxNjQKCSogdHJlZS5jIChnZXRfbmFycm93ZXIpOiBGb3IgZXh0ZW5zaW9ucyB3aXRoIHVuY2hhbmdlZCBiaXQgbnVtYmVyLAoJcmV0dXJuIHRoZSB1bnNpZ25lZG5lc3Mgb2YgdGhlIG91dGVyIG1vZGUuCgoyMDAzLTAzLTE2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiAgVHVybiAiZm9yIiBpbnRvICJkbyAuLiB3aGlsZSIKCXRvIGF2b2lkICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB3YXJuaW5nIG9uIGlhNjQtaHB1eC4KCSogY29uZmlnL2lhNjQvaWE2NC1jLmM6IEluY2x1ZGUgInRtX3AuaCIgZm9yIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoyMDAzLTAzLTE2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW46IEltcHJvdmUgY2hlY2sgZm9yIG1lbWNoZWNrLmguCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAzLTAzLTE2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBkb2MvY3Bwb3B0cy50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiAtQS0uCgoyMDAzLTAzLTE1ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2xpYmdjYy50ZXhpOiBSZW1vdmUgQHRpZS4KCjIwMDMtMDMtMTUgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIHJ0bC5oIChzdWJydHhfcCk6IFJlbmFtZWQgdG8gcnR4X3JlZmVyZW5jZWRfcC4KCShydHhfcGFpcik6IEFkZGVkIG5ldyBlbGVtZW50IHVwZGF0ZV9sYWJlbF9udXNlcywgcmVuYW1lZCB0bwoJcmVwbGFjZV9sYWJlbF9kYXRhLgoJKiBjZmdjbGVhbnVwLmMgKG91dGdvaW5nX2VkZ2VzX21hdGNoLCB0cnlfY3Jvc3NqdW1wX3RvX2VkZ2UpOiBVc2UKCXJlcGxhY2VfbGFiZWxfZGF0YSBpbnN0ZWFkIG9mIHJ0eF9wYWlyLgoJKiBsb29wLmMgKGxvYWRfbWVtcyk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKHJlcGxhY2VfbGFiZWwpOiBSZXBsYWNlIGxhYmVsIGluIHBvb2wgY29uc3RhbnRzIGFuZCBpbgoJSU5TTl9MSVNUIChpbiBSRUdfTEFCRUwgbm90ZSkuCgkoc3VicnR4X3ApOiBSZW5hbWVkIHRvIHJ0eF9yZWZlcmVuY2VkX3AuCgkoc3VicnR4X3BfMSk6IFJlbmFtZWQgdG8gcnR4X3JlZmVyZW5jZWRfcF8xLCBjb21wYXJlIHRoZSBpbnRlcmlvciBvZgoJTEFCRUxfUkVGIHdpdGggQ09ERV9MQUJFTCwgdHJhdmVyc2UgY29uc3RhbnRzIGZyb20gcG9vbC4KCjIwMDMtMDMtMTUgIEFsZHkgSGVybmFuZGV6IDxhbGR5aEByZWRoYXQuY29tPgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVEVYSV9HQ0NJTlRfRklMRVMpOiBBZGQgbGliZ2NjLnRleGkuCgkqIGRvYy9saWJnY2MudGV4aTogTmV3IGZpbGUuCgkqIGRvYy9pbnRlcmZhY2UudGV4aTogRGVsZXRlIHBhcmFncmFwaCBhYm91dCBsaWJnY2MgaW50ZXJmYWNlLgoJKiBkb2MvZ2NjaW50LnRleGk6IEFkZCBsaWJnY2MgbWVudSBlbnRyeSBhbmQgQGluY2x1ZGUgbGliZ2NjLnRleGkuCgoyMDAzLTAzLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBkZWJ1Zy85MDM5CgkqIGR3YXJmMm91dC5jIChnZW5fZGVjbF9kaWUpOiBJZ25vcmUgZnJvbnRlbmQgdHJlZSBjb2Rlcy4KCglQUiBkZWJ1Zy82Mzg3CgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZGVjbCk6IElmIHdlJ3JlIGF0IC1nMSwganVzdCBzdGljayBuZXN0ZWQKCWZ1bmN0aW9uIERJRXMgYXQgdG9wbGV2ZWwuCgkoZGVjbHNfZm9yX3Njb3BlKTogQXQgLWcxLCBkb24ndCBkZXNjZW5kIGludG8gc3ViYmxvY2tzLgoKMjAwMy0wMy0xNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogdmFyYXNtLmMgKHN0cnVjdCBydHhfY29uc3QpOiBDaGFuZ2UgdHlwZSBvZiB1bi5hZGRyIG1lbWJlcgoJdG8gc3RydWN0IGhvbGRpbmcgYW4gYWRkaXRpb25hbCAnc3ltYm9sJyBtZW1iZXIuCgkoZGVjb2RlX3J0eF9jb25zdCk6IFJlLWVuYWJsZSBvcHRpbWl6YXRpb24gdG8gY291bnQgU1lNQk9MX1JFRnMKCXdpdGggZXF1YWwgc3RyaW5nIGFkZHJlc3NlcyBhcyBlcXVhbC4KCShzaW1wbGlmeV9zdWJ0cmFjdGlvbik6IEFkYXB0IHRvIHN0cnVjdCBydHhfY29uc3QgY2hhbmdlLgoKMjAwMy0wMy0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6IFJlYWQgbWFpbiBmaWxlIGJlZm9yZSBoYW5kbGluZyAtRC4KCjIwMDMtMDMtMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy1jcHBidWlsdGluLmMgKGJ1aWx0aW5fZGVmaW5lX3dpdGhfdmFsdWVfbik6IEZpeCB3aGl0ZXNwYWNlLgoJKiBjLXR5cGVjay5jIChjX3RyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogTGlrZXdpc2UuCgkqIGNmZ2J1aWxkLmMgKGZpbmRfbWFueV9zdWJfYmFzaWNfYmxvY2tzKTogTGlrZXdpc2UuCgkoZmluZF9zdWJfYmFzaWNfYmxvY2tzKTogTGlrZXdpc2UuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2V4cGFuZF9mdW5jdGlvbnMpOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKHBydW5lX3VudXNlZF90eXBlcyk6IExpa2V3aXNlLgoJKiBleHByLmMgKHN0b3JlX2ZpZWxkKTogTGlrZXdpc2UuCgkqIGdlbmV4dHJhY3QuYyAocHJpbnRfcGF0aCk6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNuKTogTGlrZXdpc2UuCgkqIGxjbS5jIChjb21wdXRlX2FudGlub3V0X2VkZ2UpOiBMaWtld2lzZS4KCSogbG9vcC11bnJvbGwuYyAoZGVjaWRlX3BlZWxfb25jZV9yb2xsaW5nKTogTGlrZXdpc2UuCgkqIHJhLWNvbG9yaXplLmMgKHJhX2NvbG9yaXplX2ZyZWVfYWxsKTogTGlrZXdpc2UuCgkqIHJhLWRlYnVnLmMgKGR1bXBfaWdyYXBoKTogTGlrZXdpc2UuCgkoZGVidWdfaGFyZF9yZWdfc2V0KTogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jIChyZWdfdG9fc3RhY2spOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChyZWZlcnNfdG9fcmVnbm9fcCk6IExpa2V3aXNlLgoJKiB0cmFjZXIuYyAobGF5b3V0X3N1cGVyYmxvY2tzKTogTGlrZXdpc2UuCgoyMDAzLTAzLTE1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogRml4IHRoaW5rby4KCjIwMDMtMDMtMTUgIEdsZW4gTmFrYW11cmEgIDxnbGVuQGltb2R1bG8uY29tPgoKCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBVc2UgJiYgaW5zdGVhZCBvZiB8fAoJd2l0aCBSRUdfQ0FOTk9UX0NIQU5HRV9NT0RFX1AgY29uZGl0aW9uLgoKMjAwMy0wMy0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCSogYy1jb21tb24uaCAoY2JfcmVnaXN0ZXJfYnVpbHRpbnMpOiBSZW5hbWUgY19jcHBfYnVpbHRpbnMuCgkqIGMtbGV4LmMgKGluaXRfY19sZXgpOiBSZWdpc3RlciBidWlsdGlucyBob29rIGlzIGRlYWQuCgkqIGMtb3B0cy5jIChDT01NQU5EX0xJTkVfT1BUSU9OUywgbWlzc2luZ19hcmcpOiBIYW5kbGUgLUEsIC1EIGFuZCAtVS4KCShjX2NvbW1vbl9kZWNvZGVfb3B0aW9uKTogRG9uJ3QgY2FsbCBjcHBfaGFuZGxlX29wdGlvbi4KCUhhbmRsZSAtQSwgLUQgYW5kIC1VLgoJKGhhbmRsZV9kZWZlcnJlZF9vcHRzKTogU2ltcGxpZnkuCgkoZmluaXNoX29wdGlvbnMpOiBEZWZpbmUgYnVpbHRpbnMgYW5kIGNvbW1hbmQgbGluZSBtYWNyb3MuCgkqIGMtcHBvdXRwdXQuYyAoaW5pdF9wcF9vdXRwdXQpOiBSZWdpc3RlciBidWlsdGlucyBob29rIGlzIGRlYWQuCgkqIGNwcGluaXQuYzogRG9uJ3QgaW5jbHVkZSBpbnRsLmguCgkoaW5pdF9idWlsdGlucyk6IFJlbmFtZSBjcHBfaW5pdF9idWlsdGlucy4gIE5vIGhvb2sgdG8gY2FsbC4KCShpbml0X2xpYnJhcnkpOiBEb24ndCBuZWVkIHRvIHNvcnQgb3B0aW9ucy4KCShjcHBfY3JlYXRlX3JlYWRlcik6IERvbid0IHNldCBwZW5kaW5nLgoJKGNwcF9kZXN0cm95KTogRG9uJ3QgZnJlZSBwZW5kaW5nLgoJKHN0cnVjdCBwZW5kaW5nX29wdGlvbiwgY2xfZGlyZWN0aXZlX2hhbmRsZXIsIHN0cnVjdCBjcHBfcGVuZGluZywKCUFQUEVORCwgZnJlZV9jaGFpbiwgbmV3X3BlbmRpbmdfZGlyZWN0aXZlLCBwYXJzZV9vcHRpb24sIG9wdF9jb21wLAoJY3BwX2ZpbmlzaF9vcHRpb25zLCBDT01NQU5EX0xJTkVfT1BUSU9OUywgREVGX09QVCwgc3RydWN0IGNsX29wdGlvbiwKCWNsX29wdGlvbnMsIGNwcF9oYW5kbGVfb3B0aW9uKTogUmVtb3ZlLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9wZW5kaW5nLCByZWdpc3Rlcl9idWlsdGlucywgY3BwX2hhbmRsZV9vcHRpb24sCgljcHBfZmluaXNoX29wdGlvbnMpOiBSZW1vdmUuCgkoY3BwX2luaXRfYnVpbHRpbnMpOiBOZXcuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBVcGRhdGUgdG8gaGFuZGxlIC1ELiAgRml4CgloYW5kbGluZyBvZiAtSS4gIFJlcGxhY2UgY2FsbCB0byBjcHBfZmluaXNoX29wdGlvbnMuCgoyMDAzLTAzLTE1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJUFIgb3B0aW1pemF0aW9uLzkzODcKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IFVzZSByZWRpcmVjdF9qdW1wCglmb3IgY29uZGl0aW9uYWwgcmV0dXJucy4KCjIwMDMtMDMtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi82ODcxCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IExlYXZlIGNvbnN0YW50IHplcm9lcyBpbiAucm9kYXRhLgoKMjAwMy0wMy0xNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1vcHRzLmMgKGZpbmlzaF9vcHRpb25zKTogTmV3LgoJKENPTU1BTkRfTElORV9PUFRJT05TLCBjX2NvbW1vbl9kZWNvZGVfb3B0aW9uKTogQWRkIC1pbWFjcm9zLgoJKG1pc3NpbmdfYXJnKTogSGFuZGxlIE9QVF9pbmNsdWRlIGFuZCBPUFRfaW1hY3Jvcy4KCShjX2NvbW1vbl9pbml0LCBjX2NvbW1vbl9wYXJzZV9maWxlKTogVXNlIGZpbmlzaF9vcHRpb25zLgoJKGhhbmRsZV9kZWZlcnJlZF9vcHRzKTogVXBkYXRlLgoJKiBjcHBpbml0LmMgKHN0cnVjdCBjcHBfcGVuZGluZyk6IFJlbW92ZSBpbWFjcm9zX2hlYWQgYW5kIGltYWNyb3NfdGFpbC4KCShjcHBfZmluaXNoX29wdGlvbnMpOiBEb24ndCBoYW5kbGUgLWltYWNyb3MgaGVyZS4KCShub19maWwpOiBSZW1vdmUuCgkoQ09NTUFORF9MSU5FX09QVElPTlMsIGNwcF9oYW5kbGVfb3B0aW9uKTogRG9uJ3QgaGFuZGxlIC1pbWFjcm9zLgoKMjAwMy0wMy0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSk6IERvbid0IGNhbGwKCXJzNjAwMF9tYXliZV9kZWFkIGlmICFmcm9tcHJvbG9nLgoKMjAwMy0wMy0xNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCSogYy1jb21tb24uaCAoZmVfZmlsZV9jaGFuZ2UsIHBwX2ZpbGVfY2hhbmdlKTogTmV3LgoJKiBjLWxleC5jIChpbml0X2NfbGV4KTogRG9uJ3Qgc2V0IGNiX2ZpbGVfY2hhbmdlLgoJKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBNb3ZlIHRvIGMtb3B0cy5jLgoJKGNiX2ZpbGVfY2hhbmdlKTogUmVuYW1lIGZlX2ZpbGVfY2hhbmdlLgoJKiBjLW9wdHMuYzogSW5jbHVkZSBkZWJ1Zy5oLgoJKHdhcm5fdW51c2VkX21hY3JvcywgaW5jbHVkZV9jdXJzb3IpOiBOZXcuCgkocHVzaF9jb21tYW5kX2xpbmVfaW5jbHVkZSwgY2JfZmlsZV9jaGFuZ2UpOiBOZXcuCgkoQ09NTUFORF9MSU5FX09QVElPTlMpOiBIYW5kbGUgLWluY2x1ZGUuCgkoY19jb21tb25fZGVjb2RlX29wdGlvbik6IFVzZSBsb2NhbCB3YXJuX3VudXNlZF9tYWNyb3MuCglIYW5kbGUgT1BUX2luY2x1ZGUuCgkoY19jb21tb25fcG9zdF9vcHRpb25zKTogU2V0IGZpbGUgY2hhbmdlIGNhbGxiYWNrLgoJKGhhbmRsZV9kZWZlcnJlZF9vcHRzKTogU2tpcCAtaW5jbHVkZS4gIERvbid0IGZyZWUgdGhlIGFycmF5LgoJKGNfY29tbW9uX2luaXQpOiBDYWxsIGNwcF9maW5pc2hfb3B0aW9ucyBoZXJlLCBhbmQgcHVzaCBhbgoJaW5pdGlhbCAtaW5jbHVkZSBmaWxlLgoJKiBjLXBwb3V0cHV0LmMgKGNiX2ZpbGVfY2hhbmdlKTogUmVuYW1lIHBwX2ZpbGVfY2hhbmdlLgoJKHByZXByb2Nlc3NfZmlsZSk6IERvbid0IGNhbGwgY3BwX2ZpbmlzaF9vcHRpb25zLgoJKGluaXRfcHBfb3V0cHV0KTogRG9uJ3Qgc2V0IHRoZSBmaWxlIGNoYW5nZSBjYWxsYmFjay4KCShwcF9maWxlX2NoYW5nZSk6IFJldHVybiBpZiBubyBsaW5lIGNvbW1hbmRzIG9yIG5vIG91dHB1dC4KCSogY3BwaGFzaC5oIChuZXh0X2luY2x1ZGVfZmlsZSwgZmlyc3RfdW51c2VkX2xpbmUpOiBSZW1vdmUuCgkqIGNwcGluaXQuYyAoaW5jbHVkZV9oZWFkLCBpbmNsdWRlX3RhaWwpOiBSZW1vdmUuCgkoY3BwX2Rlc3Ryb3kpOiBEb24ndCBmcmVlIC1pbmNsdWRlIGNoYWluLgoJKGNwcF9maW5pc2hfb3B0aW9ucyk6IERvbid0IGhhbmRsZSAtaW5jbHVkZSwgb3Igd29ycnkgYWJvdXQKCS1XdW51c2VkLW1hY3Jvcy4KCShfY3BwX21heWJlX3B1c2hfaW5jbHVkZV9maWxlKTogUmVtb3ZlLgoJKENPTU1BTkRfTElORV9PUFRJT05TLCBjcHBfaGFuZGxlX29wdGlvbik6IERvbid0IGhhbmRsZSAtaW5jbHVkZS4KCSogY3BwbGliLmMgKF9jcHBfcG9wX2J1ZmZlcik6IERvbid0IGhhbmRsZSAtaW5jbHVkZS4KCSogY3BwbWFjcm8uYyAoX2NwcF93YXJuX2lmX3VudXNlZF9tYWNybywgX2NwcF9jcmVhdGVfZGVmaW5pdGlvbik6CglVc2VkIGZsYWcgaXMgc2V0IGJhc2VkIHVwb24gdGhlIHN0YXRlIG9mIHRoZSB3YXJuX3VudXNlZF9tYWNyb3MKCWZsYWcsIGFuZCBzbyB1c2Ugb2YgZmlyc3RfdW51c2VkX2xpbmUgaXMgdW5uZWNlc3NhcnkuCgoyMDAzLTAzLTEzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2VsaWIuYyAoY2xlYXJfdGFibGUpOiBEbyBub3QgdGFrZSBhcmd1bWVudDsgYWx3YXlzIGNsZWFyIGp1c3QKCXVzZWQgc2xvdHMuCgkoY3NlbGliX3Byb2Nlc3NfaW5zbik6ICBVcGRhdGUgY2FsbCBvZiBjbGVhcl90YWJsZQoJKGNzZWxpYl9pbml0KTogRG8gbm90IGNhbGwgY2xlYXJfdGFibGUuCgkoY3NlbGliX2ZpbmlzaCk6IENsZWFyIHRhYmxlLgoKCSogY3NlLmMgKGNvdW50X3JlZ191c2FnZSk6IERvIG5vdCBjaGVjayBzaWRlX2VmZmVjdHNfcC4KCSogcnRsYW5hbC5jIChzZXRfbm9vcF9wKTogQ2hlY2sgc2lkZV9lZmZlY3RzX3Agb25seSB3aGVuIHNldCBsb29rcwoJbGlrZSBub29wLgoJKGZpbmRfcmVnX2VxdWFsX2VxdWl2X25vdGUpOiBEbyBub3QgdXNlIGZpbmRfcmVnX25vdGUuCgoyMDAzLTAzLTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC85NzAwCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV92YV9zdGFydCk6IEFjY291bnQgZm9yCgljdXJyZW50X2Z1bmN0aW9uX3ByZXRlbmRfYXJnc19zaXplIGluIHRoZSBBUCBvZmZzZXQuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IE1vdmUgb3V0IG9mIGxpbmUuCgkoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBNb3ZlIG91dCBvZiBsaW5lLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IE5ldy4KCShhbHBoYV9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCkgTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IFVwZGF0ZS4KCjIwMDMtMDMtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfc3RhcnRfY2FzZSk6IENhbGwgZW1pdF9xdWV1ZSAoKS4KCjIwMDMtMDMtMTQgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgkgICAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZVTkNUSU9OX1BST0ZJTEVSKTogX21jb3VudCgpIGRvZXNuJ3QgcG9wIDIKCXdvcmRzIGluIG5ldyBhYmlzLgoKMjAwMy0wMy0xNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vODM5NgoJKiB0cmVlLWlubGluZS5jIChpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IE1ha2Ugc3VyZSB0aGUgdmFsdWUKCW9mIHJlYWQtb25seSBjb25zdGFudCBhcmd1bWVudHMgaXMgcGFzc2VkIHdpdGggdGhlIHJpZ2h0IHR5cGUuCgoyMDAzLTAzLTE0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEZ1bmN0aW9uIE5hbWVzKTogTWFrZSB0aGUgZXhhbXBsZSBjb21waWxhYmxlLgoKMjAwMy0wMy0xMyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJvY2Vzc29yX3RhcmdldF90YWJsZSk6IFJlYWxseSBhbGxvdwoJR1Agb3B0aW9uYWwgaW5zdHJ1Y3Rpb25zIG9uIFBvd2VyNC4KCjIwMDMtMDMtMTMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY2FsbHMuYyAoZmxhZ3NfZnJvbV9kZWNsX29yX3R5cGUpOiBGYWN0b3IgYW5kIHJlbW92ZSByZWR1bmRhbnQKCWNvbmRpdGlvbmFsIHRlc3RzLgoKMjAwMy0wMy0xMyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBnZ2MtcGFnZS5jIChzdHJ1Y3QgcGFnZV9lbnRyeSk6IFJlbW92ZSB2YXJyYXkuaCBoZWFkZXIuCglBZGQgaW5kZXhfYnlfZGVwdGggZmllbGQuCglSZW1vdmUgc2F2ZV9pbl91c2VfcCBmaWVsZC4KCShzdHJ1Y3QgZ2xvYmFscyk6IEFkZCBkZXB0aF9pbl91c2UsIGRlcHRoX21heCwgYnlfZGVwdGhfaW5fdXNlLAoJYnlfZGVwdGhfbWF4LCBieV9kZXB0aCwgYW5kIHNhdmVfaW5fdXNlIGZpZWxkcy4KCShJTklUSUFMX1BURV9DT1VOVCk6IEFkZC4KCShzYXZlX2luX3VzZV9wX2kpOiBBZGQuCgkoc2F2ZV9pbl91c2VfcCk6IEFkZC4KCShhZGp1c3RfZGVwdGgpOiBBZGQuCgkobW92ZV9wdGVzX3RvX2Zyb250KTogQWRkLgoJKHB1c2hfZGVwdGgpOiBBZGQuCgkocHVzaF9ieV9kZXB0aCk6IEFkZC4KCShwcmVmZXRjaCk6IEFkZC4KCShmcmVlX3BhZ2UpOiBBZGQgc3VwcG9ydCBmb3IgYW5kIHVzZSBmYXN0ZXIgZGF0YSBzdHJ1Y3R1cmVzLgoJKGdnY19hbGxvYyk6IExpa2V3aXNlLgoJKGluaXRfZ2djKTogTGlrZXdpc2UuCgkoZ2djX3JlY2FsY3VsYXRlX2luX3VzZV9wKTogTGlrZXdpc2UuCgkoZ2djX3BvcF9jb250ZXh0KTogTGlrZXdpc2UuCgkoY2xlYXJfbWFya3MpOiBMaWtld2lzZS4KCShnZ2NfcGNoX3JlYWQpOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW4gKGdnYy1wYWdlLm8pOiBSZW1vdmUgdmFycmF5LmguCgoyMDAzLTAzLTEzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIENoYW5nZUxvZzogUm90YXRlZCBsYXN0IHllYXIncyBlbnRyaWVzIHRvLi4uCgkqIENoYW5nZUxvZy44OiBOZXcuCgoJKiBjb25maWcvaWE2NC9mZGUtZ2xpYmMuYywgY29uZmlnL2lhNjQvZnJlZWJzZC5oLAoJY29uZmlnL2lhNjQvaHB1eC5oLCBjb25maWcvaWE2NC9ocHV4X2xvbmdkb3VibGUuaCwKCWNvbmZpZy9pYTY0L2lhNjQtYy5jLCBjb25maWcvaWE2NC9pYTY0LW1vZGVzLmRlZiwKCWNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmgsIGNvbmZpZy9pYTY0L2lhNjQuYywKCWNvbmZpZy9pYTY0L2lhNjQuaCwgY29uZmlnL2lhNjQvaWE2NC5tZCwKCWNvbmZpZy9pYTY0L2l0YW5pdW0xLm1kLCBjb25maWcvaWE2NC9pdGFuaXVtMi5tZCwKCWNvbmZpZy9pYTY0L3F1YWRsaWIuYywgY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYywKCWNvbmZpZy9pYTY0L3Vud2luZC1pYTY0Lmg6IEl0J3MgR0NDLCBub3QgR05VIENDLgoKMjAwMy0wMy0xMyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2R3YXJmX3JlZ2lzdGVyX3NwYW4pOgoJRGlmZmVyZW50aWF0ZSBlbmRpYW5uZXNzLgoJKHM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBVc2UgY3B1IHR5cGUgaW5zdGVhZCBvZiBUQVJHRVRfU1BFLgoKMjAwMy0wMy0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHByaW50X211bHRpX3JlZyk6IERvIG5vdCBnZW5lcmF0ZSBhIHR5cGUgMgoJTERNIGluc3RydWN0aW9ucyB3aXRoIHdyaXRlYmFjayBlbmFibGVkLgoJKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hcm0vcGUuaCAoRklYRURfUkVHSVNURVJTKTogUmVtb3ZlIGRlZmluaXRpb24uCgkoQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKFNVQlRBUkdFVF9DT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IERlZmluZS4KCjIwMDMtMDMtMTMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZmxhZ19waWMpOiBEZWxldGUuCgkocnM2MDAwX3hjb2ZmX2VuY29kZV9zZWN0aW9uX2luZm8pOiAjaWZkZWYgVEFSR0VUX1hDT0ZGLgoJKHJzNjAwMF9iaW5kc19sb2NhbF9wLCBUQVJHRVRfQklORFNfTE9DQUxfUCk6ICNpZiBUQVJHRVRfTUFDSE8uCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBEb24ndCBjbGVhciBmbGFnX3BpYyBmb3IgQUJJX0FJWC4KCShyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogRm9ybWF0dGluZy4KCShyczYwMDBfZW1pdF9tb3ZlKTogTGlrZXdpc2UuCgkocnM2MDAwX3JldHVybl9hZGRyKTogVGVzdCBBQklfQUlYIGFzIHdlbGwgYXMgZmxhZ19waWMuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUgPHNhdmVfTFJfYXJvdW5kX3RvY19zZXR1cD4pOiBMaWtld2lzZS4KCShyczYwMDBfZWxmX3NlbGVjdF9zZWN0aW9uKTogQ29tbWVudCByZWFzb24gZm9yIHNobGliIGJlaW5nCglzZXQgZm9yIEFCSV9BSVguCgkocnM2MDAwX2VsZl91bmlxdWVfc2VjdGlvbik6IExpa2V3aXNlLgoJKHJzNjAwMF9lbGZfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFRlc3QgIVRBUkdFVF9BSVggYXMgd2VsbCBhcyBBQklfQUlYLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChMRUdJVElNQVRFX0xPX1NVTV9BRERSRVNTX1ApOiBUZXN0IEFCSV9BSVgKCWFzIHdlbGwgYXMgZmxhZ19waWMuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBMaWtld2lzZS4KCShNSU5JTUFMX1RPQ19TRUNUSU9OX0FTTV9PUCk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoVEFSR0VUX0VOQ09ERV9TRUNUSU9OX0lORk8pOiBEb24ndCBkZWZpbmUuCgoyMDAzLTAzLTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZW1pdC1ydGwuYyAodHJ5X3NwbGl0KTogSGFuZGxlIDEtMSBzcGxpdHMgb2YgY2FsbCBpbnNucyBwcm9wZXJseS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoVEFSR0VUX0ZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogTmV3LgoJKGlhNjRfZ3Bfc2F2ZV9yZWcpOiBSZW1vdmUuCgkoc3RydWN0IGlhNjRfZnJhbWVfaW5mbyk6IE1vdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZTsKCWFkZCByZWdfc2F2ZV9ncC4KCShpYTY0X2V4cGFuZF9jYWxsKTogUmVhcnJhbmdlIGZvciBuZXcgY2FsbCBwYXR0ZXJucy4KCShpYTY0X3JlbG9hZF9ncCk6IE5ldy4KCShpYTY0X3NwbGl0X2NhbGwpOiBOZXcuCgkoaWE2NF9jb21wdXRlX2ZyYW1lX3NpemUpOiBBbGxvY2F0ZSByZWdfc2F2ZV9ncC4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IFNhdmUgcmVnX3NhdmVfZ3AuCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBEb24ndCByZXN0b3JlIGdwLgoJKGlhNjRfaGFyZF9yZWdub19yZW5hbWVfb2spOiBSZW1vdmUgUjQgaGFjay4KCShpYTY0X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogTmV3LgoJKGlhNjRfb3V0cHV0X21pX3RodW5rKTogU2V0IHJlbG9hZF9jb21wbGV0ZWQsIG5vX25ld19wc2V1ZG9zOwoJY2FsbCB0cnlfc3BsaXQgb24gc2liY2FsbCBwYXR0ZXJuLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGNhbGxfbm9ncCwgY2FsbF92YWx1ZV9ub2dwLCBzaWJjYWxsX25vZ3ApOgoJUmVuYW1lIGZyb20gbm9waWMgdmVyc2lvbnMuICBDb25maXNjYXRlIDJuZCBhcmd1bWVudCB0byBjYWxsIGFzCglhIG1hcmtlci4KCShjYWxsX3BpYywgY2FsbF92YWx1ZV9waWMsIHNpYmNhbGxfcGljKTogUmVtb3ZlLgoJKGNhbGxfZ3AsIGNhbGxfdmFsdWVfZ3AsIHNpYmNhbGxfZ3ApOiBOZXcuCgkoYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBSZW1vdmUuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBDYWxsIGlhNjRfcmVsb2FkX2dwLgoKMjAwMy0wMy0xMiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvZHNwMTZ4eC9kc3AxNnh4LXByb3Rvcy5oLCBjb25maWcvZHNwMTZ4eC9kc3AxNnh4LmMsCgljb25maWcvZHNwMTZ4eC9kc3AxNnh4LmgsIGNvbmZpZy9kc3AxNnh4L2RzcDE2eHgubWQ6IFJlcGxhY2UKCSJHTlUgQ0MiIHdpdGggIkdDQyIuCgoJKiBjb25maWcvYzR4L2M0eC1jLmMsIGNvbmZpZy9jNHgvYzR4LW1vZGVzLmRlZiwKCWNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oLCBjb25maWcvYzR4L2M0eC5jLCBjb25maWcvYzR4L2M0eC5oLAoJY29uZmlnL2M0eC9jNHgubWQsIGNvbmZpZy9jNHgvbGliZ2NjLlMsIGNvbmZpZy9jNHgvcnRlbXMuaDoKCUdDQywgbm90IEdOVSBDQy4KCgkqIGdlbmF0dHJ0YWIuaCwgaG9zdGhvb2tzLWRlZi5oLCBob3N0aG9va3MuaCwgbGFuZ2hvb2tzLWRlZi5oLAoJbGFuZ2hvb2tzLmgsIHRyZWUtaW5saW5lLmg6IFJlcGxhY2UgIkdOVSBDQyIgd2l0aCAiR0NDIi4KCgkqIGMtcGNoLmMsIGR1bW15LWNvbmRpdGlvbnMuYywgZ2VuYXV0b21hdGEuYywgZ2VuY29uZGl0aW9ucy5jLAoJbGFuZ2hvb2tzLmMsIHRyZWUtaW5saW5lLmMsIHVud2luZC1kdzItZmRlLWRhcndpbi5jLAoJdW53aW5kLWR3Mi1mZGUtZ2xpYmMuYywgdW53aW5kLWxpYnVud2luZC5jLCB2bXNkYmdvdXQuYzogUmVwbGFjZQoJIkdOVSBDQyIgd2l0aCAiR0NDIi4KCgkqIGNvbmZpZy92ODUwL2xpYjFmdW5jcy5hc20sIGNvbmZpZy92ODUwL3J0ZW1zLmgsCgljb25maWcvdjg1MC92ODUwLWMuYywgY29uZmlnL3Y4NTAvdjg1MC1wcm90b3MuaCwKCWNvbmZpZy92ODUwL3Y4NTAuYywgY29uZmlnL3Y4NTAvdjg1MC5oLCBjb25maWcvdjg1MC92ODUwLm1kOgoJR0NDLCBub3QgR05VIENDLgoKCSogY29uZmlnL3ZheC9ic2QuaCwgY29uZmlnL3ZheC9lbGYuaCwgY29uZmlnL3ZheC9uZXRic2QtZWxmLmgsCgljb25maWcvdmF4L25ldGJzZC5oLCBjb25maWcvdmF4L29wZW5ic2QuaCwgY29uZmlnL3ZheC9vcGVuYnNkMS5oLAoJY29uZmlnL3ZheC91bHRyaXguaCwgY29uZmlnL3ZheC92YXgtcHJvdG9zLmgsIGNvbmZpZy92YXgvdmF4LmMsCgljb25maWcvdmF4L3ZheC5oLCBjb25maWcvdmF4L3ZheC5tZCwgY29uZmlnL3ZheC92YXh2Lmg6IEdDQywgbm90CglHTlUgQ0MuCgoyMDAzLTAzLTEyICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJlZGhhdC5jb20+CgoJKiBjcHBwY2guYyAoY3BwX3ZhbGlkX3N0YXRlKTogVXNlIERMX1dBUk5JTkdfU1lTSERSLCBub3QgRExfV0FSTklORy4KCjIwMDMtMDMtMTIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2ZpeGluYy5pbnRlcml4OiBSZW1vdmUgZGVhZCBjb2RlIChtb3N0IG9mIGl0KS4KCSogZml4aW5jL2ZpeGluYy5kZ3V4OiBSZW1vdmUuCgoJKiBnaW5jbHVkZS9mbG9hdC5oLCBnaW5jbHVkZS9pc282NDYuaCwgZ2luY2x1ZGUvc3RkYXJnLmgsCglnaW5jbHVkZS9zdGRib29sLmgsIGdpbmNsdWRlL3N0ZGRlZi5oOiBHQ0MsIG5vdCBHTlUgQ0MuCgoyMDAzLTAzLTEyICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAocGFfaW5pdF9idWlsdGlucyk6IEZpeCB3YXJuaW5nLgoKMjAwMy0wMy0xMiAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9PVVRQVVRfWERBVEFfQ0hBUik6IFJlbW92ZS4KCShBU01fT1VUUFVUX1hEQVRBX1NIT1JUKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfWERBVEFfSU5UKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfWERBVEFfRE9VQkxFX0lOVCk6IFJlbW92ZS4KCShBU01fT1VUUFVUX0FERFJfRElGRl9FTFQpOiBIYW5kbGVkIDMyIGJpdCBhZGRyZXNzIGRpZmZzLgoJKEFTTV9QUkVGRVJSRURfRUhfREFUQV9GT1JNQVQpOiBIYW5kbGUgMzIgYml0IEVIIHBvaW50ZXJzLgoJKENBU0VfVkVDVE9SX01PREUpOiBIYW5kbGUgMzIgYml0IHBvaW50ZXJzIGluIGNhc2Ugc3RhdGVtZW50LgoKMjAwMy0wMy0xMiAgQW5kcmV3IExld3lja3kgIDxhbmRyZXdAbXhjLmNhPgoKCVBSIGMrKy83MDUwCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IERvbid0IGF0dGVtcHQgdG8gc3RvcmUgdm9pZC10eXBlZCB0cmVlcywKCWp1c3QgZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgoKMjAwMy0wMy0xMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY3BwZmlsZXMuYyAoY3BwX3JlbmFtZV9maWxlLCBjcHBfcHVzaF9pbmNsdWRlKTogTmV3LgoJKiBjcHBpbml0LmMgKHB1c2hfaW5jbHVkZSk6IE1vdmUgd2l0aCBjaGFuZ2VzIHRvIGNwcGZpbGVzLmMuCgkoY3BwX3JlYWRfbWFpbl9maWxlKTogTWFyayBuYW1lZCBvcGVyYXRvcnMgaGVyZS4uLgoJKGNwcF9maW5pc2hfb3B0aW9ucyk6IC4uLm5vdCBoZXJlLiAgVXBkYXRlLgoJKF9jcHBfbWF5YmVfcHVzaF9pbmNsdWRlX2ZpbGUpOiBVcGRhdGUuCgkqIGNwcGxpYi5oIChjcHBfcHVzaF9pbmNsdWRlLCBjcHBfcmVuYW1lX2ZpbGUpOiBOZXcuCgoyMDAzLTAzLTEyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGFjbG9jYWwubTQ6IEludHJvZHVjZSBnY2NfR0FTX1ZFUlNJT05fR1RFX0lGRUxTRSwKCV9nY2NfQ09NUFVURV9HQVNfVkVSU0lPTi4KCSogY29uZmlndXJlLmluOiBVc2UgdGhlbS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wMy0xMiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLm1kIChhZGRkaTMpOiBEb24ndCBjbG9iYmVyIHNvdXJjZSBvcGVyYW5kIHVzZWQKCXRvIGRldGVjdCBjYXJyeS4KCShzdWJkaTMpOiBSZW9yZGVyIGVtaXR0ZWQgaW5zdHJ1Y3Rpb25zLgoKMjAwMy0wMy0xMiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvbmV0YnNkNjQuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFJlbW92ZSBjYWxsIHRvCglORVRCU0RfT1NfQ1BQX0JVSUxUSU5TX0xQNjQuCgoyMDAzLTAzLTEyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluOiBFbGltaW5hdGUgYWxsLmluZGlyZWN0LiAgVXBkYXRlIGFuZCBjbGVhbiB1cCBjb21tZW50cy4KCVJlYXJyYW5nZS4gIFJlb3JnYW5pemUuCgkqIGNvbmZpZ3VyZS5pbjogUmVhcnJhbmdlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTAzLTEyICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjLWNwcGJ1aWx0aW4uYyAoY2JfcmVnaXN0ZXJfYnVpbHRpbnMpOiBEZWZpbmUgTFA2NCBidWlsdGlucyBmb3IKCUxQNjQgdGFyZ2V0cy4KCgkqIGRvYy9jcHAudGV4aSAoQ29tbW9uIFByZWRlZmluZWQgTWFjcm9zKTogRG9jdW1lbnQgX19MUDY0X18gYW5kCglfTFA2NC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEbyBub3QgZGVmaW5lCglfTFA2NCBtYWNyb3MgaGVyZS4KCSogY29uZmlnL3BhL3BhLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYWxwaGEvbmV0YnNkLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBSZW1vdmUgY2FsbCB0bwoJTkVUQlNEX09TX0NQUF9CVUlMVElOU19MUDY0LgoJKiBjb25maWcvc2gvbmV0YnNkLWVsZi5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9uZXRic2QtZWxmLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9uZXRic2QuaCAoTkVUQlNEX09TX0NQUF9CVUlMVElOU19MUDY0KTogUmVtb3ZlLgoKMjAwMy0wMy0xMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpeDg2X3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBTZXQgc3RhY2tfYWxpZ25tZW50X25lZWRlZCB0byAxMjguCgoyMDAzLTAzLTEyICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCglGaXggUFIgdGFyZ2V0Lzk3OTcgYW5kIFBSIGMvOTg1My4KCSogc3RtdC5jIChleHBhbmRfZGVjbF9pbml0KTogQ2FsbCBwdXNoX3RlbXBfc2xvdHMgKCkgYW5kCglwb3BfdGVtcF9zbG90cyAoKS4KCjIwMDMtMDMtMTIgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guYzogSW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKHNoX291dHB1dF9taV90aHVuaywgZW1pdF9sb2FkX3B0cik6IE5ldyBmdW5jdGlvbnMuCgkoVEFSR0VUX0FTTV9PVVRQVVRfTUlfVEhVTkssIFRBUkdFVF9BU01fQ0FOX09VVFBVVF9NSV9USFVOSyk6IFJlZGVmaW5lLgoKMjAwMy0wMy0xMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vcGUuaCAoRklYRURfUkVHSVNURVJTKTogQWRkIE1hdmVyaWNrIHJlZ2lzdGVycy4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmggKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IFVwZGF0ZSBjb21tZW50CglkZXNjcmliaW5nIGhvdyB0aGlzIHZhbHVlIGlzIGNhbGN1bGF0ZWQuCgoyMDAzLTAzLTEyICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWd1cmUuaW4gKHJsaW1fdCk6IERlZmluZSB0byBsb25nIGlmIG5vIHZhbGlkIGRlZmluaXRpb24KCWZvdW5kIGluIHN5cy9yZXNvdXJjZS5oLgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDMtMTIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS1lbGYuaCAoQ1BQX1BSRURFRklORVMpOiBSZXBsYWNlIHdpdGgKCVRBUkdFVF9PU19DUFBfQlVJTFRJTlMuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wZS5oOiBTaW1pbGFybHkuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oOiBSZXBsYWNlIENQUF9QUkVERUZJTkVTIGFuZCBwYXJ0IG9mCglDUFBfU1BFQyB3aXRoIFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TLgoKMjAwMy0wMy0xMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBjLzk5MjgKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERpc2NhcmQgdGhlIGluaXRpYWxpemVyIG9mIHRoZSBuZXcgZGVjbAoJb25seSBpZiBpdCBpcyBhIFZBUl9ERUNMLgoKMjAwMy0wMy0xMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vOTg4OAoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChqY2NfMSk6IEZpeCByYW5nZS4KCShqY2NfMik6IExpa2V3aXNlLgoJKGp1bXApOiBMSWtld2lzZS4KCShkb2xvb3BfZW5kX2ludGVybmFsKTogTGlrZXdpc2UuCgoyMDAzLTAzLTEyICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvd2lubnQuYyAoRExMX0lNUE9SVF9QUkVGSVgpOiBOZXcgZGVmaW5lLgoJVXNlIHRocm91Z2hvdXQgaW5zdGVhZCBvZiBETExfSU1QT1JUX0VYUE9SVF9QUkVGSVggYW5kICJlLiIKCShETExfRVhQT1JUX1BSRUZJWCk6IE5ldyBkZWZpbmUuIFVzZSB0aHJvdWdob3V0IGluc3RlYWQgb2YKCURMTF9JTVBPUlRfRVhQT1JUX1BSRUZJWCBhbmQgImkuIgoJKGkzODZfcGVfZGxsZXhwb3J0X25hbWVfcCk6IEhlcmUuCgkoaTM4Nl9wZV9kbGxpbXBvcnRfbmFtZV9wKTogSGVyZS4KCShpMzg2X3BlX21hcmtfZGxsZXhwb3J0KTogSGVyZS4gUmVtb3ZlIERMTF9JTVBPUlRfUFJFRklYLAoJbm90IDkgY2hhcnMgd2hlbiBnZXR0aW5nIGlkZW50aWZpZXIgbmFtZS4KCShpMzg2X3BlX21hcmtfZGxsaW1wb3J0KTogSGVyZS4KCShpMzg2X3BlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBIZXJlLiBSZW1vdmUgRExMX0lNUE9SVF9QUkVGSVgsCglub3QgOSBjaGFycyB3aGVuIGdldHRpbmcgaWRlbnRpZmllciBuYW1lLiBDb3JyZWN0IGNvbW1lbnQuCgkoaTM4Nl9wZV9zdHJpcF9uYW1lX2VuY29kaW5nKTogSGVyZS4gQWRkIGNvbW1lbnRzIGZvciBkaWZmZXJlbnQKCWNhc2VzLgoJKGdlbl9mYXN0Y2FsbF9zdWZmaXgpOiBCcmVhayBkb3duIHhtYWxsb2MoKSBhcmd1bWVudCB0bwoJY29tcG9uZW50cy4KCShnZW5fc3RkY2FsbF9zdWZmaXgpOiBMaWtld2lzZS4KCVVwZGF0ZSBjb3B5cmlnaHQgeWVhci4KCjIwMDMtMDMtMTIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzk4ODgKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobW92c2lfMSk6IFJlbW92ZSBzcGVjaWFsIGFsdGVybmF0aXZlcwoJZm9yICVlYXggcmVnaXN0ZXIuCgkobW92c2lfMV9ub2ludGVybnVuaXQpOiBMaWtld2lzZS4KCShtb3ZoaV8xKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobWVtb3J5X2FkZHJlc3NfbGVuZ3RoKTogRG8gbm90IHVzZQoJc2hvcnQgZGlzcGxhY2VtZW50IHdoZW4gdGhlcmUgaXMgbm8gYmFzZS4KCShpeDg2X2F0dHJfbGVuZ3RoX2FkZHJlc3NfZGVmYXVsdCk6IEhhbmRsZSBMRUEgaW5zdHJ1Y3Rpb25zLgoKMjAwMy0wMy0xMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1jcHBidWlsdGluLmMgKGJ1aWx0aW5fZGVmaW5lX3N0ZCk6IE1ha2Ugbm9uLXN0YXRpYy4KCjIwMDMtMDMtMTEgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBjb25maWcvZnJlZWJzZC1zcGVjLmggKEZCU0RfQ1BQX1BSRURFRklORVMpOiBSZW1vdmUuCgkoRkJTRF9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTmV3IHBvcnQtc3BlY2lmaWMgbWFjcm8uCgkoRkJTRF9UQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IE5ldyBwb3J0LXNwZWNpZmljIG1hY3JvLgoJKiBjb25maWcvZnJlZWJzZC5oIChDUFBfUFJFREVGSU5FUyk6IFJlbW92ZS4KCShUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTmV3LgoJKiBjb25maWcvYWxwaGEvZnJlZWJzZC5oOiBVc2Ugb3ZlcnJpZGRlbiBGQlNEX1RBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TCglpbnN0ZWFkIG9mIFRBUkdFVF9PU19DUFBfQlVJTFRJTlMuCgkqIGNvbmZpZy9zcGFyYy9mcmVlYnNkLmggKENQUF9QUkVERUZJTkVTKTogUmVtb3ZlLgoKMjAwMy0wMy0xMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLWNwcGJ1aWx0aW4uYyAoYnVpbHRpbl9kZWZpbmVfc3RkKTogQWRkIEFUVFJJQlVURV9VTlVTRUQuCgoyMDAzLTAzLTExICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IFJlbW92ZQoJaW5zbl9jaGFpbl9zY2FubmVkLiAgVXNlIGluc25fY2hhaW5fc2Nhbm5lZF9wIGluIG1hY2hpbmVfZnVuY3Rpb24uCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIGluc25fY2hhaW5fc2Nhbm5lZF9wLgoKMjAwMy0wMy0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB0b3BsZXYuYyAoaW5kZXBlbmRlbnRfZGVjb2RlX29wdGlvbik6IFJldHVybiBzdWNjZXNzIGZvciAtLWhlbHAsCgktLXRhcmdldC1oZWxwIGFuZCAtLXZlcnNpb24uCgoyMDAzLTAzLTExICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4NjQuaCAoRFJJVkVSX1NFTEZfU1BFQ1MpOiBBZGQgZW5kaWFuX3NwZWMuCglEZWZhdWx0IHRvIC1taXBzMyBvbiAtbWFiaT02NC4gIERvbid0IGFkZCAtbWlwcyogZmxhZyBpZiAtbWFyY2ggaXMKCXNwZWNpZmllZC4KCShTVUJUQVJHRVRfQVNNX1NQRUMpOiBSZW1vdmUgLW1pcHMqLWFkZGluZyBjb2RlIG9idmlhdGVkIGJ5CglEUklWRVJfU0VMRl9TUEVDUy4KCShMSU5LX1NQRUMpOiBMZXQgZW5kaWFuIG9wdGlvbnMgYWZmZWN0IHRoZSBsaW5rZXIgZW11bGF0aW9uIG5hbWUuCgoyMDAzLTAzLTExICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLm1kIChyZWxvYWRfaW5xaSk6IEZpeCBtb2RlIGZvciBzb3VyY2UgaW4gc2Vjb25kIHNldC4KCjIwMDMtMDMtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNzZWxpYi5jIChjc2VsaWJfaW52YWxpZGF0ZV9tZW1fMSk6IE1vdmUgdG9vIC4uLgoJKGNzZWxpYl9pbnZhbGlkYXRlX21lbSk6IC4uLiBoZXJlOyB1c2UgbmV3IGxpc3QKCShkdW1teV92YWwsIGZpcnN0X2NvbnRhaW5pbmdfbWVtKTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkoY2xlYXJfdGFibGUpOiBJbml0aWFsaXplIGZpcnN0X2NvbnRhaW5pbmdfbWVtLgoJKGRpc2NhcmRfdXNlbGVzc192YWx1ZXMpOiAgQ29tcGFjdCB0aGUgY29udGFpbmluZ19tZW0gbGlzdC4KCShhZGRfbWVtX2Zvcl9hZGRyKTogQWRkIHRvIHRoZSBsaXN0LgoJKiBjc2VsaWIuaCAoY3NlbGliX3ZhbCk6IEFkZCBuZXh0X2NvbnRhaW5pbmdfbWVtLgoKMjAwMy0wMy0xMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBEaXNhYmxlIHN0cmluZwoJaW5zdHJ1Y3Rpb25zIGZvciBlNTAwLgoKMjAwMy0wMy0xMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCSogYy1jcHBidWlsdGluLmM6IEluY2x1ZGUgdG1fcC5oLgoKMjAwMy0wMy0xMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZG9jL3RtLnRleGkgKEZyYW1lIFJlZ2lzdGVycyk6IERvY3VtZW50IERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OLgoKCSogdW53aW5kLWR3Mi5jIChEV0FSRl9SRUdfVE9fVU5XSU5EX0NPTFVNTik6IERlZmluZS4KCShfVW53aW5kX0dldEdSKTogVXNlIERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OLgoJKF9VbndpbmRfU2V0R1IpOiBTYW1lLgoJKF9VbndpbmRfR2V0R1JQdHIpOiBOZXcuCgkoX1Vud2luZF9TZXRHUlB0cik6IE5ldy4KCSh1d191cGRhdGVfY29udGV4dF8xKTogVXNlIGFjY2Vzb3IgZnVuY3Rpb25zIGluc3RlYWQgb2YgYWNjZXNzaW5nCgljb250ZXh0LT5yZWdbXSBkaXJlY3RseS4KCSh1d19pbnN0YWxsX2NvbnRleHRfMSk6IFNhbWUuCgkoZXhlY3V0ZV9jZmFfcHJvZ3JhbSk6IFNhbWUuCgkoX19mcmFtZV9zdGF0ZV9mb3IpOiBTYW1lLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoc3BlX3N5bnRoZXNpemVfZnJhbWVfc2F2ZSk6IFVzZSAxMjAwIGFzCgl0aGUgc3ludGhldGljIHJlZ2lzdGVyIG9mZnNldC4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OKTogTmV3LgoKMjAwMy0wMy0xMSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kOiBSZW1vdmUgbGluZ2VyaW5nIEVHQ1MgcmVmZXJlbmNlLgoJKCIqZXh0b3BxaWhpX3NpZGVfYmlhcCIpOiBGb3IgSEkgb3BlcmF0aW9uLCBtYXRjaAoJY3Jpc19hZGRpdGl2ZV9vcGVyYW5kX2V4dGVuZF9vcGVyYXRvciwgbm90CgljcmlzX29wZXJhbmRfZXh0ZW5kX29wZXJhdG9yLiAgQWRqdXN0IGNvbmRpdGlvbi4KCSgiKmV4dG9wcWloaV9zaWRlIiwgIipleHRvcHFpaGkiKTogRGl0dG8uCgkoIipleHRvcHFpc2lfc2lkZV9iaWFwIik6IENvcnJlY3Qgb3BlcmFuZCBudW1iZXJzIGluIGNvbmRpdGlvbi4KCSgiKmV4dG9waGlzaV9zaWRlX2JpYXAiLCAiKmV4dG9wcWlzaV9zd2FwX3NpZGVfYmlhcCIpOiBEaXR0by4KCSgiKmV4dG9waGlzaV9zd2FwX3NpZGVfYmlhcCIsICIqZXh0b3BxaXNpX3N3YXAiKTogRGl0dG8uCgkoIipleHRvcGhpc2lfc3dhcCIpOiBEaXR0by4KCSgiKmV4dG9wcWloaV9zd2FwX3NpZGVfYmlhcCIpOiBGb3IgSEkgb3BlcmF0aW9uLCBtYXRjaCBhIHNpbXBsZQoJUExVUywgbm90IGNyaXNfb3BlcmFuZF9leHRlbmRfb3BlcmF0b3IuICBBZGp1c3QgY29uZGl0aW9uIGFuZAoJb3V0cHV0IHRlbXBsYXRlLgoJKCIqZXh0b3BxaWhpX3N3YXBfc2lkZSIsICIqZXh0b3BxaWhpX3N3YXAiKTogRGl0dG8uCgkqIGNvbmZpZy9jcmlzL2NyaXMuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkCgljcmlzX2FkZGl0aXZlX29wZXJhbmRfZXh0ZW5kX29wZXJhdG9yLgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfYWRkaXRpdmVfb3BlcmFuZF9leHRlbmRfb3BlcmF0b3IpOgoJTmV3IHByZWRpY2F0ZS4KCjIwMDMtMDMtMTEgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCSogZGYuYyAocmVhZF9tb2RpZnlfc3VicmVnX3ApOiBDaGFuZ2UgZnJvbSBzdGF0aWMgdG8gZ2xvYmFsLgoJKiBkZi5oIChyZWFkX21vZGlmeV9zdWJyZWdfcCk6IEFkZCBwcm90b3R5cGUuCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV8xKTogR2VuZXJhdGUgdHJ1ZSBkZXBlbmRlbmN5IGZvcgoJc3RyaWN0X2xvd19wYXJ0LCBjZXJ0YWluIHN1YnJlZ3MgYW5kIHplcm8vc2lnbl9leHRyYWN0LgoKMjAwMy0wMy0xMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCSogYy1jb21tb24uYzogRG9uJ3QgaW5jbHVkZSByZWFsLmggb3IgZXhjZXB0LmguCgkoUkVHSVNURVJfUFJFRklYKTogUmVtb3ZlLgoJKGJ1aWx0aW5fZGVmaW5lX3N0ZCwgYnVpbHRpbl9kZWZpbmVfd2l0aF92YWx1ZSwKCWJ1aWx0aW5fZGVmaW5lX3dpdGhfaW50X3ZhbHVlLCBidWlsdGluX2RlZmluZV93aXRoX2hleF9mcF92YWx1ZSwKCWJ1aWx0aW5fZGVmaW5lX3R5cGVfbWF4LCBidWlsdGluX2RlZmluZV90eXBlX3ByZWNpc2lvbiwKCWJ1aWx0aW5fZGVmaW5lX2Zsb2F0X2NvbnN0YW50cyk6IE1vdmUgdG8gYy1jcHBidWlsdGluLmMuCgkoY19zdGRkZWZfY3BwX2J1aWx0aW5zKTogTmV3LgoJKiBjLWNvbW1vbi5oIChidWlsdGluX2RlZmluZV93aXRoX3ZhbHVlLCBjX3N0ZGRlZl9jcHBfYnVpbHRpbnMpOiBOZXcuCgkqIGMtY3BwYnVpbHRpbi5jOiBOZXcsIGV4dHJhY3RlZCBmcm9tIGMtY29tbW9uLmMuCgkoZGVmaW5lX19HTlVDX18pOiBOZXcuCgkqIGNwcHNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBSZW1vdmUgc3VwcG9ydCBvZiAtbm8tZ2NjLgoJKiBnY2MuYzogUmVtb3ZlIHN1cHBvcnQgb2YgJXYxLCAldjIgYW5kICV2MyBzcGVjcy4KCShjcHBfdW5pcXVlX29wdGlvbnMpOiBEb24ndCBzdXBwb3J0IG5vLWdjYy4KCShkb19zcGVjXzEpOiBSZW1vdmUgc3VwcG9ydCBvZiB2ZXJzaW9uIHNwZWNzLgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mICV2MSwgJXYyIGFuZCAldjMuCgkqIGRvYy9wYXNzZXMudGV4aTogVXBkYXRlLgoJKiBkb2MvdG0udGV4aTogVXBkYXRlLgoKMjAwMy0wMy0xMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKG11bHRpcGxlX3JlZ19sb2NfZGVzY3JpcHRvcik6IEZpeCB0aGlua28uCgoyMDAzLTAzLTEwICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2Z1bmN0aW9uX2Jhc2VfbmFtZSk6IElmIGR5bmFtaWMtbm8tcGljCglpcyBvbiBzaG91bGQgbm90IGdldCBoZXJlLgoJKG1hY2hvcGljX2luZGlyZWN0X2RhdGFfcmVmZXJlbmNlKTogSWYgZHluYW1pYy1uby1waWMgaXMgb24ganVzdAoJZ2VuZXJhdGUgaGlnaC9sb3cgcGFydHMgb2YgdGhlIGFkZHJlc3MuCgkobWFjaG9waWNfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IENoYW5nZSBNQUNIT1BJQ19QVVJFIHRvCglNQUNIT1BJQ19JTkRJUkVDVC4gRHluYW1pYy1uby1waWMgdXNlcyAwIGFzIHRoZSBwaWMgYmFzZS4gR2VuZXJhdGUKCXN5bWJvbCBhbmQgbGFiZWxzIHdpdGggYSBuZXcgcmVnLiAgRHluYW1pYy1uby1waWMgZG9lcyBub3QgaGF2ZSBhCglwaWNfb2Zmc2V0X3RhYmxlX3J0eC4KCShtYWNob3BpY19zZWxlY3Rfc2VjdGlvbik6IENoYW5nZSByZWZlcmVuY2VzIG9mIGZsYWdfcGljIHRvCglNQUNIT1BJQ19JTkRJUkVDVC4KCShtYWNob3BpY19hc21fb3V0X2Rlc3RydWN0b3IpOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi5oIChBU01fREVDTEFSRV9VTlJFU09MVkVEX1JFRkVSRU5DRSk6IENoYW5nZQoJcmVmZXJlbmNlIG9mIGZsYWdfcGljIHRvIE1BQ0hPUElDX0lORElSRUNULgoJKE1BQ0hPX0RZTkFNSUNfTk9fUElDX1ApOiBEZWZpbmUgYXMgVEFSR0VUX0RZTkFNSUNfTk9fUElDLgoJKE1BQ0hPUElDX0lORElSRUNUKTogSXMgYWxzbyB0cnVlIHdoZW4gZHluYW1pYy1uby1waWMgaXMgb24uCgkoTUFDSE9QSUNfSlVTVF9JTkRJUkVDVCk6IElzIGFsc28gdHJ1ZSB3aGVuIGR5bmFtaWMtbm8tcGljIGlzIG9uLgoJKE1BQ0hPUElDX1BVUkUpOiBJcyBub3QgcHVyZSB3aGVuIGR5bmFtaWMtbm8tcGljIGlzIG9uLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoTUFTS19NQUNIT19EWU5BTUlDX05PX1BJQyk6IERlZmluZSBhcwoJMCBmb3IgcmlnaHQgbm93IGFzIGR5bmFtaWMtbm8tcGljIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBEYXJ3aW4vaWEzMi4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoTUFTS19NQUNIT19EWU5BTUlDX05PX1BJQyk6IERlZmluZS4KCShUQVJHRVRfRFlOQU1JQ19OT19QSUMpOiBEZWZpbmUuCgkoU1VCVEFSR0VUX1NXSVRDSEVTKTogRGVmaW5lLCBoYXZlIHN1Yi10YXJnZXQgc3dpdGNoZXMgZm9yCglkeW5hbWljLW5vLXBpYy4KCShTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IE1vdmUgY2hlY2sgZm9yIC1mcGljIGZyb20KCXJzNjAwMF9vdmVycmlkZV9vcHRpb25zIHRvIGhlcmUuIER5bmFtaWMtbm8tcGljIG92ZXJyaWRlcwoJcGljLgoJKENDMV9TUEVDKTogQ2hhbmdlIGZyb20gbm90IHN0YXRpYyB0aGVuIHBpYyB0byBub3Qgc3RhdGljIGFuZCBub3QKCWR5bmFtaWMtbm8tcGljIHRoZW4gcGljLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IE1vdmUgdGhlCgljaGVjayBmb3IgLWZwaWMgYW5kIERBUldJTl9BQkkgdG8gY29uZmlnL3JzNjAwMC9kYXJ3aW4uaAoJKHJzNjAwMF9sZWdpdGltaXplX3JlbG9hZF9hZGRyZXNzKTogQWRkIGNhc2UgZm9yIGxvYWRpbmcgZmxvYXRpbmcgaW4KCWR5bmFtaWMtbm8tcGljLgoJKHJzNjAwMF9lbWl0X21vdmUpOiBBZGQgY2FzZSBmb3IgZHluYW1pYy1uby1waWMuICBDaGFuZ2UgcmVmZXJlbmNlCglvZiBmbGFnX3BpYyB0byBNQUNIT1BJQ19JTkRJUkVDVC4KCShzZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogQ29uZGl0aW9uYWwgY2hhbmdlIHRoZSByZWZlcmVuY2Ugb2YKCWZsYWdfcGljIHRvIE1BQ0hPUElDX0lORElSRUNULgoJKHJzNjAwMF9vdXRwdXRfbWlfdGh1bmspOiBDaGFuZ2UgcmVmZXJlbmNlIG9mIGZsYWdfcGljIHRvCglNQUNIT1BJQ19JTkRJUkVDVC4KCShvdXRwdXRfcHJvZmlsZV9ob29rKTogTGlrZXdpc2UuCgkobWFjaG9waWNfb3V0cHV0X3N0dWIpOglOb24tcHVyZSAoZHluYW1pYy1uby1waWMpIGlzIG5vdyBzdXBwb3J0ZWQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZkZl9sb3cpOiBBZGQgdGhlIGNhc2UgZm9yCglNQUNIT19EWU5BTUlDX05PX1BJQ19QLgoJKGNhbGwpOiBDaGFuZ2UgcmVmZXJlbmNlcyBmb3IgZmxhZ19waWMgaW4gVEFSR0VUX01BQ0hPIHRvCglNQUNIT1BJQ19JTkRJUkVDVC4KCShTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IEFkZCBjYXNlIHdoZXJlIC1mcGljIGlzIG9uIGFuZAoJLW1keW5hbWljLW5vLXBpYyBpcyBvbi4JIEFsc28gbW92ZSBjYXNlIGZvciAtZnBpYyBmcm9tIHJzNjAwMC5jLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tZHluYW1pYy1uby1waWMpOiBEb2N1bWVudC4KCjIwMDMtMDMtMTAgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJUFIgYysrLzkzOTQKCSogZ2NjLmMgKERFRkFVTFRfU1dJVENIX1RBS0VTX0FSRyk6IFJlbW92ZS4KCShERUZBVUxUX1dPUkRfU1dJVENIX1RBS0VTX0FSRyk6IFJlbW92ZS4KCSogZ2NjLmggKERFRkFVTFRfU1dJVENIX1RBS0VTX0FSRyk6IEFkZC4KCShERUZBVUxUX1dPUkRfU1dJVENIX1RBS0VTX0FSRyk6IEFkZC4KCSogY3Bwc3BlYy5jIChERUZBVUxUX1NXSVRDSF9UQUtFU19BUkcpOiBSZW1vdmUuCgkoREVGQVVMVF9XT1JEX1NXSVRDSF9UQUtFU19BUkcpOiBSZW1vdmUuCgoyMDAzLTAzLTEwICBTdGV2ZW4gQm9zc2NoZXIgIDxzLmJvc3NjaGVyQHN0dWRlbnQudHVkZWxmdC5ubD4KCglQUiBvcHRpbWl6YXRpb24vNzE4OQoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6ICBNb3ZlCgljaGVja19mdW5jdGlvbl9yZXR1cm5fd2FybmluZ3MgdXAgdG8ganVzdCBhZnRlcgoJZGVsZXRlX3VucmVhY2hhYmxlX2Jsb2Nrcy4KCjIwMDMtMDMtMTAgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oIChIQVJEX1JFR05PX1JFTkFNRV9PSyk6IERlZmluZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaCAobTY4aGMxMV9oYXJkX3JlZ25vX3JlbmFtZV9vayk6CglEZWNsYXJlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfaGFyZF9yZWdub19yZW5hbWVfb2spOiBOZXcgZnVuY3Rpb24KCWZvciByZWcgcmVuYW1lIG9wdGltaXphdGlvbiB0byBhdm9pZCB1c2luZyBaIGFuZCBZIHJlZ2lzdGVycy4KCjIwMDMtMDMtMTAgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCAoIiphZGRoaTNfNjhoYzEyIik6IEFjY2VwdCBhbnkgY29uc3RhbnQKCXdoZW4gYWRkaW5nIHRvIFggYW5kIFkgc2luY2UgbGVheC9sZWF5IGFyZSBmYXN0LgoJKCIqYWRkaGkzIik6IEFjY2VwdCAnSScgY29uc3RyYWludCB3aGVuIGFkZGluZyB0byBhZGRyZXNzIHJlZ2lzdGVyLgoJKCJyb3RsaGkzIik6IE9wZXJhbmQgMSBtdXN0IGJlIGEgcmVnaXN0ZXJfb3BlcmFuZC4KCShwZWVwaG9sZTIpOiBOZXcgcGVlcGhvbGUgdG8gb3B0aW1pemUgc29tZSBhZGRzLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKENPTlNUX09LX0ZPUl9MRVRURVJfUCk6IFVzZSAnSScgY29uc3RyYWludAoJdG8gcmVwcmVzZW50IC0yIC4uIDIgc21hbGwgaW50ZWdlciByYW5nZS4KCjIwMDMtMDMtMTAgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX2dlbl9yb3RhdGUpOiBTZXQgY2FycnkgYmVmb3JlCgllYWNoIDE2LWJpdCByb3RhdGlvbi4KCjIwMDMtMDMtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLW9wdHMuYyAoYWRkX3ByZWZpeGVkX3BhdGgpOiBEb24ndCB1c2UgY29uY2F0LiAgV2hlbgoJcHJlZml4aW5nIHdpdGggY3BwX0dDQ19JTkNMVURFX0RJUiwgY29weSBvbmx5IHRoZSBmaXJzdAoJY3BwX0dDQ19JTkNMVURFX0RJUl9sZW4gY2hhcmFjdGVycy4KCjIwMDMtMDMtMTAgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPHNlZ2hlckBrb2ZmaWUubmw+CgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL2FsdGl2ZWMtOS5jOiBOZXcgZmlsZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGFsdGl2ZWNfZnJhbWVfZml4dXApOiBSZW1vdmUuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBVc2UgcnM2MDAwX2ZyYW1lX3JlbGF0ZWQgaW5zdGVhZC4KCjIwMDMtMDMtMTAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLmg6IERlZmluZSBfX2V2NjRfKjY0X18gdG8gdXNlIHNpbmdsZSBlbGVtZW50Cgl2ZWN0b3JzLgoJKF9fZXZfY29udmVydF91NjQpOiBSZW1vdmUgbWFjcm8uICBEZWZpbmUgYXMgaW5saW5lLgoJKF9fZXZfY29udmVydF9zNjQpOiBTYW1lLgoKMjAwMy0wMy0xMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRFdBUkZfRlJBTUVfUkVHSVNURVJTKTogRGVmaW5lLgoJKHJzNjAwMF9zdGFja190KTogQWRkIHNwZV82NGJpdF9yZWdzX3VzZWQuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IENhbGN1bGF0ZQoJc3BlXzY0Yml0X3JlZ3NfdXNlZCwgYW5kIHVzZSBpdCB0byBkZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlCglmcmFtZS4KCShzcGVfZnVuY19oYXNfNjRiaXRfcmVnc19wKTogTmV3LgoJKHNwZV9zeW50aGVzaXplX2ZyYW1lX3NhdmUpOiBOZXcuCgkocnM2MDAwX2ZyYW1lX3JlbGF0ZWQpOiBIYW5kbGUgU1BFIHN5bnRoZXRpYyByZWdpc3RlcnMuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBPbmx5IHNhdmUgaW4gNjQtYml0cyBpZiB0aGUgZnVuY3Rpb24gdXNlZAoJYW55IHJlZ2lzdGVycyBpbiA2NC1iaXQgbW9kZS4KCShyczYwMDBfZW1pdF9lcGlsb2d1ZSk6IFNhbWUsIGJ1dCBmb3IgcmVzdG9yZS4KCjIwMDMtMDMtMTAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmggKGVudW0gZmxvYXRpbmdfcG9pbnRfdHlwZSk6IERlbGV0ZS4gIFJlcGxhY2Ugd2l0aC4uLgoJKGVudW0gZnB1dHlwZSk6IC4uLiBuZXcuCgkoRlBVVFlQRV9ERUZBVUxUKTogUmVuYW1lZCBmcm9tIEZQX0RFRkFVTFQuICBWYWx1ZXMgcmV3b3JrZWQuCgkqIGxpbnV4LWVsZi5oIChGUFVUWVBFX0RFRkFVTFQpOiBMaWtld2lzZS4KCSogYXJtLm1kIChhdHRyIGZwdSk6IFJld29ya2VkIGZvciBuZXcgdW5kZXJseWluZyBlbnVtIHZhbHVlcy4KCSogYXJtLmMJKGFybV9mcHVfYXJjaCk6IE5vdyBlbnVtIGZwdXR5cGUuCgkoYXJtX2ZwdV90dW5lKTogUmVuYW1lZCBmcm9tIGFybV9mcHUuICBOb3cgZW51bSBmcHV0eXBlLgoJKGFybV9vdmVycmlkZV9vcHRpb25zLCBhcm1fb3V0cHV0X2VwaWxvZ3VlLCBhcm1fZXhwYW5kX3Byb2xvZ3VlKToKCVVwZGF0ZSB1c2VzIG9mIGFybV9mcHVfYXJjaCBhbmQgYXJtX2ZwdV90dW5lLgoKMjAwMy0wMy0xMCAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jIChvdXRnb2luZ19lZGdlc19tYXRjaCk6IENvbXBhcmUgdGhlIGp1bXAgdGFibGVzLgoJKHRyeV9jcm9zc2p1bXBfdG9fZWRnZSk6IFJlcGxhY2UgcmVmZXJlY2VzIHRvIG9uZSBqdW1wIHRhYmxlIGJ5CglyZWZlcmVuY2VzIHRvIGlkZW50aWNhbCBqdW1wIHRhYmxlLgoJKiBsb29wLmMgKGxvYWRfbWVtcyk6IE1vdmVkIHNldHRpbmcgdGhlIEpVTVBfTEFCRUwgdG8gcmVwbGFjZV9sYWJlbC4KCShyZXBsYWNlX2xhYmVsKTogTW92ZWQgdG8gcnRsYW5hbC5jLgoJKHN0cnVjdCBydHhfcGFpcik6IE1vdmVkIHRvIHJ0bC5oLgoJKiBydGwuaCAoc3RydWN0IHJ0eF9wYWlyKTogTW92ZWQgZnJvbSBsb29wLmMuCgkocmVwbGFjZV9sYWJlbCk6IE5ldyBleHRlcm4gZnVuY3Rpb24uCgkoc3VicnR4X3ApOiBOZXcgZXh0ZXJuIGZ1bmN0aW9uLgoJKHRhYmxlanVtcF9wKTogTmV3IGV4dGVybiBmdW5jdGlvbi4KCSogcnRsYW5hbC5jIChyZXBsYWNlX2xhYmVsKTogTW92ZWQgZnJvbSBsb29wLmMuCgkoc3VicnR4X3BfMSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoc3VicnR4X3ApOiBOZXcgZnVuY3Rpb24uCgkodGFibGVqdW1wX3ApOiBOZXcgZnVuY3Rpb24uCgoyMDAzLTAzLTEwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9vcHRpbWl6ZV9jZmcpOiBGaXggdGhpbmtvIGluIHByZXZpb3VzIHBhdGNoLgoKCSogY2ZnY2xlYW51cC5jIChtZXJnZV9ibG9ja3MpOiBSZXR1cm4gd2hlcmUgdG8gaXRlcmF0ZSBuZXh0LgoJKHRyeV9vcHRpbWl6ZV9jZmcpOiBVc2UgcmV0dXJuIHZhbHVlIG9mIG1lcmdlX2Jsb2NrcwoKMjAwMy0wMy0xMCAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoKCSogY2ZnLmMgKHVuY2hlY2tlZF9tYWtlX2VkZ2UpOiBOZXcuCgkoY2FjaGVkX21ha2VfZWRnZSk6IFVzZSBpdC4KCSogYmFzaWMtYmxvY2suaCAodW5jaGVja2VkX21ha2VfZWRnZSk6IERlY2xhcmUuCgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X2R1cGxpY2F0ZV9iYik6IFVzZSBpdC4KCjIwMDMtMDMtMTAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZnBhLm1kOiBOZXcgZmlsZS4gIE1vdmUgYWxsIHBhdHRlcm5zIHJlbGF0aW5nIHRvIEZQQSBjby1wcm9jZXNzb3IKCXRvIGhlcmUuLi4KCSogYXJtLm1kOiAuLi4gZnJvbSBoZXJlLgoJKGNpcnJ1cy5tZCwgZnBhLm1kKTogSW5jbHVkZSBhdCBlbmQgb2YgZGVzY3JpcHRpb24uCgkoZGl2c2YzLCBkaXZkZjMsIG1vZHNmMywgbW92ZGYzLCBzcXJ0c2YyLCBzcXJ0ZGYyKTogTmV3IGV4cGFuZHMuCgkocGljX2xvYWRfYWRkcl9iYXNlZCk6IFJlbW92ZSByZWdpc3RlciBjb25zdHJhaW50IGZyb20gZXhwYW5kZXIuCgkoc2VxLCBzbmUsIHNndCwgc2xlLCBzbHQsIHNnZSwgc2dldSwgc2xldSwgc2d0dSwgc2x0dSwgc3Vub3JkZXJlZCkKCShzb3JkZXJlZCwgc3VuZ3QsIHN1bmxlLCBzdW5nZSwgc3VubHQpOiBMaWtld2lzZS4KCShlaF9lcGlsb2d1ZSwgdGFibGVqdW1wKTogTGlrZXdpc2UuCgoyMDAzLTAzLTA5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS5jIChzdWJzdGl0dXRlX2luX2V4cHIsIGNhc2UgJ2UnKTogT25seSBtYWtlIHJlY3Vyc2l2ZSBjYWxsCglvbiBvcGVyYW5kcyBpZiBpdCBoYXMgYSBQTEFDRUhPTERFUl9FWFBSLgoKMjAwMy0wMy0wOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIE1vc3RhZmEgSGFnb2cKCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaV91cGRhdGUxKTogQWRkIFRBUkdFVF9VUERBVEUgZmluYWwKCWNvbmRpdGlvbi4KCjIwMDMtMDMtMDkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy9mcnYvZnJ2Lmg6IFVzZSBUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUywgbm90IENQUF9QUkVERUZJTkVTLgoJKiBjb25maWcvaXAyay9pcDJrLmg6IFNpbWlsYXJseS4KCSogY29uZmlnL20zMnIvbTMyci5oOiBTaW1pbGFybHkuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaDogU2ltaWxhcmx5LgoJKiBjb25maWcvbW4xMDIwMC9tbjEwMjAwLmg6IFNpbWlsYXJseS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oOiBTaW1pbGFybHkuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5oOiBTaW1pbGFybHkuCgkqIGNvbmZpZy92ODUwL3Y4NTAuaDogU2ltaWxhcmx5LgoJKiBjb25maWcvcnM2MDAwL3Z4d29ya3MuaDogU2ltaWxhcmx5IGZvciBUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TLgoJKiBjb25maWcvdjg1MC9yZXRtcy5oOiBTaW1pbGFybHkgZm9yIFRBUkdFVF9PU19DUFBfQlVJTFRJTlMuCgkqIGNvbmZpZy9taXBzL2lyaXMzLmg6IFJlbW92ZSAjaWYgMCBibG9jay4KCjIwMDMtMDMtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEpvZXJuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogZ2NjLmMgKGRvX3NwZWNfMSkgWyd7J106IFJldmVydCAyMDAzLTAyLTI0IHBhdGNoLiAgRG9uJ3QgaGFuZGxlCglwZW5kaW5nIGFyZ3VtZW50IHVwb24gcmV0dXJuIGZyb20gaGFuZGxlX2JyYWNlcyBoZXJlLgoJKGRvX3NwZWNfMik6IEluc3RlYWQgaGFuZGxlIGl0IHVwb24gcmV0dXJuIGZyb20gZG9fc3BlY18xIGhlcmUuCgoyMDAzLTAzLTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBKb2VybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGdjYy5jIChkb19zcGVjXzEpIFsneyddOiBSZXZlcnQgMjAwMy0wMi0yNCBwYXRjaC4gIERvbid0IGhhbmRsZQoJcGVuZGluZyBhcmd1bWVudCB1cG9uIHJldHVybiBmcm9tIGhhbmRsZV9icmFjZXMgaGVyZS4KCShkb19zcGVjXzIpOiBJbnN0ZWFkIGhhbmRsZSBpdCB1cG9uIHJldHVybiBmcm9tIGRvX3NwZWNfMSBoZXJlLgoKMjAwMy0wMy0wOSAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9vbmVfb25seSk6IFVzZSBkZWNsYXJlX3dlYWsoKS4KCjIwMDMtMDMtMDkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgbWlkZGxlLWVuZC85OTg2CgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IEluaXRpYWxpemUgdGFyZ2V0IGJ1aWx0aW5zCglhZnRlciB0aGUgY29tbW9uIGJ1aWx0aW5zLgoJKiBwYS1ocHV4LmggKERPTlRfSEFWRV9GUFVUQ19VTkxPQ0tFRCk6IERlZmluZS4KCSogcGEuYyAoVEFSR0VUX0lOSVRfQlVJTFRJTlMpOiBEZWZpbmUuCgkocGFfaW5pdF9idWlsdGlucyk6IE5ldyBmdW5jdGlvbi4KCgkqIHBhLm1kIChjYWxsLCBjYWxsX3ZhbHVlLCBzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlKTogV2hlbiBzdWZmaWNpZW50CglzcGFjZSBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBvdXRnb2luZyBhcmd1bWVudHMsIHNldCB0aGUgYXJnCglwb2ludGVyIGZvciBhIGNhbGwgZW1pdHRlZCBhZnRlciB2aXJ0dWFscyBoYXZlIGJlZW4gaW5zdGFudGlhdGVkCgl1c2luZyB0aGUgc3RhY2sgcG9pbnRlciBvZmZzZXQsIG90aGVyd2lzZSBhYm9ydC4KCjIwMDMtMDMtMDkgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmggKERXQVJGX0xJTkVfTUlOX0lOU1RSX0xFTkdUSCk6IFJldmVydC4KCjIwMDMtMDMtMDkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChmaXhfdHJ1bmNzZnNpMiwgZml4X3RydW5jZGZzaTIsIGFybV9maXhfdHJ1bmNzZnNpMikKCShhcm1fZml4X3RydW5jZGZzaTIpOiBBZGQgbWlzc2luZyBmaXggaW4gZmxvYXRpbmcgcG9pbnQgbW9kZSBiZWZvcmUKCWNvbnZlcnNpb24gdG8gaW50ZWdlci4KCSogY2lycnVzLm1kIChjaXJydXNfdHJ1bmNzZnNpMiwgY2lycnVzX3RydW5jZGZzaTIpOiBMaWtld2lzZS4KCjIwMDMtMDMtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuZGVmOiBGaXggdHlwbyBhbmQgaW1wcm92ZSBncmFtbWFyLgoJKiBsb29wLXVucm9sbC5jIChkZWNpZGVfcGVlbF9jb21wbGV0ZWx5KTogVGlkeSBsb2cgbWVzc2FnZS4KCjIwMDMtMDMtMDkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCp0c3RzaV91cHBlcl9iaXQpOiBOZXcuCgkoKmlvcnNpM19lMmYpOiBMaWtld2lzZS4KCjIwMDMtMDMtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfYW5kX2Nvc3RzKTogUmV0dXJuIHRoZSBudW1iZXIgb2YKCWFzc2VtYmx5IGluc3RydWN0aW9ucyBuZWVkZWQuCgkoaDgzMDBfc2hpZnRfY29zdHMpOiBMaWtld2lzZS4KCjIwMDMtMDMtMDkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNvbmZpZy9jcmlzL2FvdXQuaCAoRU5ERklMRV9TUEVDKTogVW5kZWYuCgoJKiBvcHRhYnMuYyAoZ2VuX21vdmVfaW5zbik6IE1vdmUgbG9naWMgZm9yIHN5bnRoZXNpemluZyBNT0RFX0NDCgltb3ZlcyBmcm9tIGhlcmUgLi4uCgkqIGV4cHIuYyAoZW1pdF9tb3ZlX2luc25fMSk6IC4uLiB0byBoZXJlLgoKCSogY29uZmlnL2NyaXMvYW91dC5oIChDUklTX0NQUF9TVUJUQVJHRVRfU1BFQyk6IE1vdmUgLURfX0FPVVRfXyB0by4uLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9jcmlzL2NyaXMuaCAoQ1JJU19DUFBfU1VCVEFSR0VUX1NQRUMpOiBNb3ZlIC1EX19FTEZfXyB0by4uLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBOZXcgbWFjcm8uCgkoQ1BQX1BSRURFRklORVMpOiBEb24ndCBkZWZpbmUuICBNb3ZlIG9sZCBkZWZpbml0aW9ucyBhbmQuLi4KCShDUFBfU1BFQyk6IC4uLm1vdmUgLURfX0NSSVNfQUJJX3ZlcnNpb249MiB0by4uLgoJKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogTmV3IG1hY3JvLgoJKiBjb25maWcvY3Jpcy9saW51eC5oIChDUklTX0NQUF9TVUJUQVJHRVRfU1BFQyk6IE1vdmUgY29uc3RhbnQKCWRlZmluaXRpb25zIGFuZCB0aGUgb3B0aW9uYWwgX19QSUNfXywgX19waWNfXyBhbmQKCV9fTk9fVU5ERVJTQ09SRVNfXyBkZWZpbml0aW9ucyB0by4uLgoJKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBOZXcgbWFjcm8uCgoJKiBmbGFncy5oIChmbGFnX2xlYWRpbmdfdW5kZXJzY29yZSk6IERlY2xhcmUuCgoJKiBjLW9wdHMuYyAoY19jb21tb25fcG9zdF9vcHRpb25zKTogT24gZm9wZW4gZmFpbHVyZSwgcmV0dXJuCglmYWxzZSwgbm90IE5VTEwuCgoyMDAzLTAzLTA4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzX2FiaV9zeW1ib2wuYzogI2luY2x1ZGUgdGNvbmZpZy5oIGFuZCB0bS5oLCBub3QKCWNvbmZpZy5oLgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKEhBVkVfR0FTX0hJRERFTik6IERvbid0IGRlZmluZSBoZXJlLgoJKiBjb25maWcvY3Jpcy9hb3V0LmggKEhBVkVfR0FTX0hJRERFTik6IFVuZGVmLgoKMjAwMy0wMy0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY29uZmlnL3NoL3J0ZW1zZWxmLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBVc2UgaW5zdGVhZCBvZgoJQ1BQX1BSRURFRklORVMuCgkqIGNvbmZpZy9zaC9ydGVtcy5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogVXNlIGluc3RlYWQgb2YKCUNQUF9QUkVERUZJTkVTLgoKMjAwMy0wMy0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1jb21tb24uaCAoY19jb21tb25faW5pdCwgY19jb21tb25fcG9zdF9vcHRpb25zKTogVXBkYXRlLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfb2JqY19jb21tb25faW5pdCk6IFVwZGF0ZSBmb3IgbmV3IHByb3RvdHlwZS4KCSogYy1vcHRzLmMgKHNhdmVkX2xpbmVubyk6IE5ldy4KCShjX2NvbW1vbl9wb3N0X29wdGlvbnMsIGNfY29tbW9uX2luaXQpOiBVcGRhdGUgcHJvdG90eXBlcywKCW1vdmUgY2FsbCB0byBjcHBfcmVhZF9tYWluX2ZpbGUgZnJvbSBsYXR0ZXIgdG8gZm9ybWVyLgoJKiBjLXRyZWUuaCAoY19vamJjX2NvbW1vbl9pbml0KTogVXBkYXRlLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9wb3N0X29wdGlvbnMpOiBOZXcuCgkoTEFOR19IT09LU19JTklULCBMQU5HX0hPT0tTX1BPU1RfT1BUSU9OUyk6IFVwZGF0ZS4KCSogbGFuZ2hvb2tzLmMgKGxoZF9wb3N0X29wdGlvbnMpOiBOZXcuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6IFVwZGF0ZSBwb3N0X29wdGlvbnMgYW5kIGluaXQgaG9va3MuCgkqIHRvcGxldi5jIChub19iYWNrZW5kKTogTmV3LgoJKHByb2Nlc3Nfb3B0aW9ucyk6IENhbGwgcG9zdF9vcHRpb25zIGhvb2sgYW5kIHNldCBtYWluX2lucHV0X2ZpbGVuYW1lCglhbmQgaW5wdXRfZmlsZW5hbWUgaGVyZS4KCShsYW5nX2RlcGVuZGVudF9pbml0LCBkb19jb21waWxlKTogcG9zdF9vcHRpb25zIGhvb2sgbW92ZWQgdG8KCXByb2Nlc3Nfb3B0aW9ucy4KCSogb2JqYy9vYmpjLWFjdC5jIChvYmpjX2luaXQpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBvYmpjL29iamMtYWN0LmggKG9iamNfaW5pdCk6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAzLTAzLTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0KTogRG9uJ3QgYXR0ZW1wdCB0byBsb2FkIGEgcGFydCBvZgoJYSBjb21wbGV4IG9yIHZlY3RvciB0eXBlLCB1c2luZyBhIGxvYWQgaW4gdGhlIG9yaWdpbmFsIG1vZGUuCgoyMDAzLTAzLTA4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5pbiAoY2dyYXBoLm8pOiBEZXBlbmQgb24gZ3QtY2dyYXBoLmggYW5kIHZhcnJheS5oLgoJKiBndC1jZ3JhcGguaDogTmV3IEdDIGZpbGUuCgkqIGNncmFwaC5jIChrbm93bl9mbnMpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGNncmFwaF9ub2RlKTogQWRkIHRoZSBkZWNsIGludG8gdmFycmF5LgoKMjAwMy0wMy0wOCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY29uZmlnL21taXgvbW1peC5tZCAoIiptb3ZjY19leHBhbmRlZCIpOiBBZGQgbWlzc2luZyBhbHRlcm5hdGl2ZXMuCgoyMDAzLTAzLTA4ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChmcGFfcmhzX29wZXJhbmQsIGZwYV9hZGRfb3BlcmFuZCwgY29uc3RfZG91YmxlX3J0eF9va19mb3JfZnBhKQoJKG5lZ19jb25zdF9kb3VibGVfb2tfZm9yX2ZwYSwgb3V0cHV0X21vdl9sb25nX2RvdWJsZV9mcGFfZnJvbV9hcm0pCgkob3V0cHV0X21vdl9sb25nX2RvdWJsZV9hcm1fZnJvbV9mcGEsIG91dHB1dF9tb3ZfZG91YmxlX2ZwYV9mcm9tX2FybSkKCShvdXRwdXRfbW92X2RvdWJsZV9hcm1fZnJvbV9mcGEpOiBSZW5hbWVkIHRvIHVzZSBmcGEgaW5zdGVhZCBvZiBmcHUuCglBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKiBhcm0ubWQsIGFybS5oLCBhcm0tcHJvdG9zLmg6IFVwZGF0ZWQuCgoJKiBhcm0uaCAoZW51bSByZWdfY2xhc3MgRlBBX1JFR1MpOiBSZW5hbWVkIGZyb20gRlBVX1JFR1MuCgkoQ0xBU1NfTUFYX05SRUdTLCBSRUdJU1RFUl9NT1ZFX0NPU1QsIFJFR19DTEFTU19GUk9NX0xFVFRFUik6IFVwZGF0ZWQuCgkqIGFybS5jIChhcm1fcmVnbm9fY2xhc3MsIGZfcmVnaXN0ZXJfb3BlcmFuZCk6IFVwZGF0ZWQuCgoyMDAzLTAzLTA4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLmg6IFJlbW92ZSBFR0NTIHJlZmVyZW5jZXMuCgkoQ1BQX1NQRUMpOiBSZW1vdmUgIi0kIi4KCShJTklUX0NVTVVMQVRJVkVfQVJHUyk6IEFkanVzdCBwYXJhbWV0ZXIgbmFtZSB0byBGTkRFQ0wuCgoyMDAzLTAzLTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBVc2UgaW4KCXByZWZlcmVuY2UgdG8gQ1BQX1BSRURFRklORVMuCgoyMDAzLTAzLTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBpbml0LmMgKGNwcF9maW5pc2hfb3B0aW9ucyk6IFNldCBmaXJzdF91bnVzZWRfbGluZSB0byAtMS4KCjIwMDMtMDMtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpleHR6dl8xNl84KTogTmV3LgoKMjAwMy0wMy0wOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYy1kZWNsLmM6IChmaW5pc2hfZnVuY3Rpb24pOiBVcGRhdGUgY2FsbCBvZiB0cmVlX2lubGluYWJsZV9mdW5jdGlvbl9wLgoJKiBjZ3JhcGguaDogKGNncmFwaF9sb2NhbF9pbmZvKTogQWRkIGNhbl9pbmxpbmVfb25jZQoJKGNncmFwaF9nbG9iYWxfaW5mbyk6IEFkZCBpbmxpbmVfb25jZS4KCShjZ3JhcGhfbm9kZSk6IEFkZCBwcmV2aW91cy4KCShjZ3JhcGhfcmVtb3ZlX25vZGUpOiBOZXcuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX21hcmtfZnVuY3Rpb25zX3RvX2lubGluZV9vbmNlKTogTmV3IHN0YXRpYwoJZnVuY3Rpb24uCgkoY2dyYXBoX29wdGltaXplKTogQ2FsbCBpdC4KCShjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiAgU2V0IGlubGluYWJsZSBmbGFncy4KCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCk6ICBBY3R1YWxseSByZW1vdmUgdGhlIHJlY2xhaW1lZCBub2Rlcy4KCShjZ3JhcGhfbWFya19mdW5jdGlvbnNfdG9fb3V0cHV0KTogIFVzZSBuZXcgaW5saW5pbmcgaGV1cmlzdGljcyBmbGFncy4KCShjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGNncmFwaC5jCgkoY2dyYXBoX25vZGUpOiBQdXQgbm9kZXMgaW50byBkb3VibHkgbGlua2VkIGNoYWluLgoJKGNncmFwaF9yZW1vdmVfbm9kZSk6IE5ldyBmdW5jdGlvbi4KCSogZmxhZ3MuaCAoZmxhZ19pbmxpbmVfZnVuY3Rpb25zX2NhbGxlZF9vbmNlKTogRGVjbGFyZS4KCSogdHJlZS1pbmxpbmUuYzogSW5jbHVkZSBjZ3JhcGguaAoJKGlubGluYWJsZV9mdW5jdGlvbnNfcCk6IEFkZCBleHRyYSBhcmd1bWVudCB0byBieXBhc3MgbGltaXRzLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6ICBPYmV5IGNncmFwaCBmbGFnLgoJKiB0cmVlLWlubGluZS5oICh0cmVlX2lubGluYWJsZV9mdW5jdGlvbl9wKTogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDMtMDMtMDggIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdjc2UuYyAoYnlwYXNzX2Jsb2NrLCBieXBhc3NfY29uZGl0aW9uYWxfanVtcHMpOiBEbyBub3QgY3JlYXRlCglpcnJlZHVjaWJsZSBsb29wcy4KCgkqIGxvb3AtdW5yb2xsLmMgKHVucm9sbF9sb29wX3J1bnRpbWVfaXRlcmF0aW9ucyk6IFVwZGF0ZSBpcnJlZHVjaWJsZQoJbG9vcHMgaW5mbyBjb3JyZWN0bHkuCgoyMDAzLTAzLTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG1pZGRsZS1lbmQvNzc5NgoJKiB1bnJvbGwuYyAoY2FsY3VsYXRlX2dpdl9pbmMpOiBIYW5kbGUgY29uc3RhbnRzIGJlaW5nCglsb2FkZWQgd2l0aCBMU0hJRlRSVC4KCjIwMDMtMDMtMDcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpOiBEbyBub3QgZGlzYWJsZQoJR1Agb3B0aW9uYWwgaW5zdHJ1Y3Rpb25zIG9uIFBvd2VyMywgUG93ZXI0LCA2MjAsIGFuZCA2MzAuCgoyMDAzLTAzLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2FsbHMuYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY2ZnbG9vcGFuYWwuYzogTGlrZXdpc2UuCgkqIGNmZ2xvb3BtYW5pcC5jOiBMaWtld2lzZS4KCSogY29tYmluZS5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBnZ2MtY29tbW9uLmM6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuYzogTGlrZXdpc2UuCgkqIGxvb3AtdW5yb2xsLmM6IExpa2V3aXNlLgoJKiBsb29wLmM6IExpa2V3aXNlLgoJKiByYS1idWlsZC5jOiBMaWtld2lzZS4KCSogc2JpdG1hcC5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoKMjAwMy0wMy0wNyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25AdHVsaXB0cmVlLm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5oIChIQVJEX1JFR05PX05SRUdTKTogUm91bmQgdXAgdGhlIFhEIHJlZ2lzdGVyIGNvdW50LgoKMjAwMy0wMy0wNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBvYmpjL2xhbmctc3BlY3MuaCAob2JqZWN0aXZlLWMtaGVhZGVyKTogVXNlIC5nY2ggbm90IC5wY2g7CglzdXBwb3J0IC1uby1pbnRlZ3JhdGVkLWNwcC4KCgkqIGMtcGNoLmMgKGdldF9pZGVudCk6IFVzZSBjX2xhbmd1YWdlX2tpbmQgYW5kIGZsYWdfb2JqYyByYXRoZXIKCXRoYW4gbGFuZ2hvb2tzLm5hbWUuCgoyMDAzLTAzLTA3ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJKiBkZi5oIChlbnVtIGRmX3JlZl9mbGFncy5ERl9SRUZfU1RSSVBQRUQpOiBOZXcuCgkoREZfRk9SX1JFR0FMTE9DKTogTmV3LgoJKiBkZi5jIChkZl9yZWZfcmVjb3JkKTogU2V0IERGX1JFRl9TVFJJUFBFRC4KCShyZWFkX21vZGlmeV9zdWJyZWdfcCk6IFNpbXBsaWZ5LgoJKGRmX2RlZl9yZWNvcmRfMSwgZGZfdXNlc19yZWNvcmQpOiBTZXQgREZfUkVGX01PREVfQ0hBTkdFIG1vcmUgb2Z0ZW4uCglVc2UgREZfRk9SX1JFR0FMTE9DLgoJKiByYS5oIChzdHJ1Y3Qgd2ViKTogTmV3IG1lbWJlciBzdWJyZWdfc3RyaXBwZWQuCgkoaW52YWxpZF9tb2RlX2NoYW5nZV9yZWdzKTogRGVjbGFyZS4KCSogcmEuYyAoaW52YWxpZF9tb2RlX2NoYW5nZV9yZWdzKTogTmV3LgoJKGluaXRfcmEpOiBJbml0aWFsaXplIGl0LgoJKiByYS1idWlsZC5jIChpbml0X29uZV93ZWJfY29tbW9uLCByZW1lbWJlcl93ZWJfd2FzX3NwaWxsZWQpOiBVc2UgaXQuCglVc2UgQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTIGFzIGlmZGVmIGd1YXJkLgoJKHJlaW5pdF9vbmVfd2ViLCBwYXJ0c190b193ZWJfMSk6IERlYWwgd2l0aCBzdWJyZWdfc3RyaXBwZWQuCgkqIHJhLWNvbG9yaXplLmMgKGNvbG9yaXplX29uZV93ZWIpOiBVc2UgaW52YWxpZF9tb2RlX2NoYW5nZV9yZWdzLgoJVXNlIENBTk5PVF9DSEFOR0VfTU9ERV9DTEFTUyBhcyBpZmRlZiBndWFyZC4KCjIwMDMtMDMtMDcgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChhZGRzZjMsIGFkZGRmMywgc3Vic2YzLCBzdWJkZjMsIG11bHNmMywgbXVsZGYzLCBuZWdzZjIpCgkobmVnZGYyLCBhYnNzaTIsIGFic3NmMiwgYWJzZGYyLCBmbG9hdHNpc2YyLCBmbG9hdHNpZGYyKQoJKGZpeF90cnVuY3Nmc2kyLCBmaXhfdHJ1bmNkZnNpMiwgdHJ1bmNkZnNmMik6IE1vdmVkIGJhY2sgaW50byBtYWluCgltYWNoaW5lIGRlc2NyaXB0aW9uIGZpbGUgZnJvbSAuLi4KCSogY2lycnVzLm1kOiAuLi4gaGVyZS4KCjIwMDMtMDMtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGEgcGVlcGhvbGUyKTogRG9uJ3QgdXNlCglyZWdfb3ZlcmxhcF9tZW50aW9uZWRfcC4KCjIwMDMtMDMtMDYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogYy1wY2guYzogSW5jbHVkZSBsYW5naG9va3MuaC4KCShJREVOVF9MRU5HVEgpOiBOZXcuCgkoZ2V0X2lkZW50KTogTmV3LgoJKHBjaF9pZGVudCk6IERlbGV0ZS4KCShwY2hfaW5pdCk6IFVzZSBnZXRfaWRlbnQsIElERU5UX0xFTkdUSC4KCShjX2NvbW1vbl92YWxpZF9wY2gpOiBMaWtld2lzZS4gIEFsc28sIHVzZSBhY3R1YWwgbGFuZ3VhZ2UKCWluIHdhcm5pbmcgbWVzc2FnZS4KCSogTWFrZWZpbGUuaW4gKGMtcGNoLm8pOiBBZGQgbGFuZ2hvb2tzLmggdG8gZGVwZW5kZW5jaWVzLgoKCSogb2JqYy9jb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IEFkZCBvYmpjLWFjdC5jLiAgUmVtb3ZlIGR1cGxpY2F0ZQoJYy1wYXJzZS5pbi4KCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMvb2JqYy1hY3Qubyk6IEFkZCBkZXBlbmRlbmN5IG9uCglndC1vYmpjLW9iamMtYWN0LmguCgkoZ3Qtb2JqYy1vYmpjLWFjdC5oKTogTmV3IHJ1bGUuCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBTdXBwb3J0IFBDSC4KCSogb2JqYy9vYmpjLWFjdC5jOiBJbmNsdWRlIGd0LW9iamMtb2JqYy1hY3QuaC4KCShvYmpjX2FkZF9zdGF0aWNfaW5zdGFuY2UpOiBNb3ZlIG51bV9zdGF0aWNfaW5zdCBvdXQsIG1hcmsgZm9yIFBDSC4KCShidWlsZF9zZWxlY3Rvcl9yZWZlcmVuY2VfZGVjbCk6IE1vdmUgaWR4IG91dCwgbWFyayBmb3IgUENILgoJKGJ1aWxkX2NsYXNzX3JlZmVyZW5jZV9kZWNsKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqY19zdHJpbmdfZGVjbCk6IE1vdmUgKl9pZHggb3V0LCBtYXJrIGZvciBQQ0guCgkoYnVpbGRfdG1wX2Z1bmN0aW9uX2RlY2wpOiBNb3ZlIHh4eCBvdXQsIG1hcmsgZm9yIFBDSC4KCjIwMDMtMDMtMDYgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9iaW5kc19sb2NhbF9wKTogIENvbnNpZGVyCglnbG9iYWwgZnVuY3Rpb25zIGZvciBpbmxpbmluZyBvbiBEYXJ3aW4uCgoyMDAzLTAzLTA2ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2Jsb2NrKTogRG9uJ3QgY2FsbCByZW9yZGVyIHdoZW4gc29ydGluZwoJaXMgcHJvaGliaXRlZC4KCjIwMDMtMDMtMDYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2VmaWxlLmluIChjLXBwb3V0cHV0Lm8pOiBVcGRhdGUuCgkqIGMtY29tbW9uLmggKGluaXRfcHBfb3V0cHV0KTogTmV3LgoJKHByZXByb2Nlc3NfZmlsZSk6IFVwZGF0ZS4KCSogYy1sZXguYyAoaW5pdF9jX2xleCk6IE1vdmUgbWJjaGFyIGluaXRpYWxpemF0aW9uIHRvIGNwcGxpYi4KCVJlZ2lzdGVyIGJ1aWx0aW5zLgoJKiBjLW9wdHMuYyAoY19jb21tb25faW5pdCk6IENhbGwgaW5pdF9wcF9vdXRwdXQgaWYgcHJlcHJvY2Vzc2luZy4KCU1ha2UgY2FsbCB0byBjcHBfcmVhZF9tYWluX2ZpbGUgY29tbW9uIHRvIHdoZXRoZXIgcHJlcHJvY2Vzc2luZwoJb3Igbm90LiAgRG9uJ3QgcmVnaXN0ZXIgYnVpbHRpbnMuCgkqIGMtcHBvdXRwdXQuYzogSW5jbHVkZSBjLXByYWdtYS5oLgoJKHNldHVwX2NhbGxiYWNrcyk6IFJlbmFtZSBpbml0X3BwX291dHB1dC4KCShwcmVwcm9jZXNzX2ZpbGUpOiBObyBsb25nZXIgc2V0dXAgY2FsbGJhY2tzIG9yIGNhbGwKCWNwcF9yZWFkX21haW5fZmlsZS4KCSogY3BwaGFzaC5oIChfY3BwX2luaXRfbWJjaGFyKTogTmV3LgoJKiBjcHBpbml0LmMgKGluaXRfbGlicmFyeSk6IENhbGwgX2NwcF9pbml0X21iY2hhci4KCSogY3BwbGV4LmMgKF9jcHBfaW5pdF9tYmNoYXIpOiBOZXcuCgoyMDAzLTAzLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0KTogV2hlbiByZXF1ZXN0aW5nIHRoZSBsb3ctcGFydCBvZiBhCglNRU0sIHRyeSBsb2FkaW5nIHRoZSBNRU0gaW50byBhIHJlZ2lzdGVyIGFuZCB0YWtpbmcgdGhlIGxvdy1wYXJ0CglvZiB0aGF0LCB0byBoZWxwIENTRSBzZWUgdGhlIHVzZSBvZiB0aGUgTUVNIGluIGl0cyB0cnVlIG1vZGUuCgoyMDAzLTAzLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCAoRFdBUkZfTElORV9NSU5fSU5TVFJfTEVOR1RIKToKCURlZmluZS4KCjIwMDMtMDMtMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2Lm1kICgiKmVxYnJhbmNoc2kiKTogUmVtb3ZlICcrJyBvbgoJb3BlcmFuZCAyLgoJKCIqaW5lcWJyYW5jaHNpIik6IExpa2V3aXNlLgoKMjAwMy0wMy0wNSAgQW5kcmV3IEhhbGV5ICA8YXBoQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9leHBhbmRfcHJvbG9ndWUpOiBEZWxldGUKCW1lbV9mYWtlX3B1c2hfcnR4LiAgSW5zdGVhZCBjb25zdHJ1Y3QgYSBTRVFVRU5DRSB0byBzaG93IHRoZQoJcmVnaXN0ZXIgc3RvcmUgZm9sbG93ZWQgYnkgYSBzdGFjayBpbmNyZW1lbnQuCgoyMDAzLTAzLTA1ICBDaHJpcyBNb2xsZXIgIDxjbW9sbGVyQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoUkVHX05FRURTX1NBVkUpOiBhZGRlZCBhIHRlcm0KCXRvIGluaGliaXQgc2F2aW5nIENBUlJZX1JFR1MuCgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHNfaGlfZ2VuZXJhbF9vcGVyYW5kKToKCWFkZGVkIHByZWRpY2F0ZSB0byBkZXRlY3QgYW5kIGVycm9yLW91dCBvbiBvdXQtb2YtcmFuZ2UKCWNvbnN0X2ludHMgZm9yIG1vdmhpLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYubWQgKG1vdmhpKTogdXNlCgl4c19oaV9nZW5lcmFsX29wZXJhbmQuCgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2V4cGFuZF9wcm9sb2d1ZSk6CglhZGRlZCBhIGNoZWNrIGZvciBsb2NhbCB2Ymwgc2l6ZSBvdmVyZmxvdy4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzX2hpX25vbm1lbW9yeV9vcGVyYW5kKToKCWFkZGVkIHByZWRpY2F0ZSB0byBkZXRlY3QgYW5kIGVycm9yLW91dCBvbiBvdXQtb2YtcmFuZ2UKCWNvbnN0X2ludHMgZm9yIGFkZGhpIGFuZCBzdWJoaS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2Lm1kIChhZGRoaTMsIGFkZGNoaTQsIGFkZGNoaTUsCglzdWJoaTMsIHN1YmNoaTQsIHN1YmNoaTUpOiB1c2VkIHhzX2hpX25vbm1lbW9yeV9vcGVyYW5kLgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9sZWdpdGltYXRlX2FkZHJlc3NfcCk6CglhZGQgYSB0ZXJtIHRvIGFjY2VwdCBQUkVfTU9ESUZZIGFkZHJlc3Nlcy4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9leHBhbmRfbW92ZSk6CglhZGQgY29kZSB0byBleHBhbmQgUFJFX01PRElGWSBhZGRyZXNzZXMgdG8gYW4gYWRkIGZvbGxvd2VkCglieSBhIG1vdmUuCgoyMDAzLTAzLTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUtaW5saW5lLmMgKGlubGluYWJsZV9mdW5jdGlvbl9wKTogUmV2ZXJ0IGVhcmxpZXIgY2hhbmdlCglwZW5kaW5nIGludmVzdGlnYXRpb24uCgoyMDAzLTAzLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIG5ldyBwZWVwaG9sZTIpOiBOZXcuCgoyMDAzLTAzLTA2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoY2dyYXBoX25vZGUpOiBEbyBub3QgY29uZnVzZSBuZXN0ZWQgZnVuY3Rpb25zIGFuZCBtZXRob2RzLgoKMjAwMy0wMy0wNiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZHdhcmYyb3V0LmMgKHNpemVfb2ZfZGllKTogQ29tcHV0ZSBzaXplIG9mIGV4dGVybmFsIHJlZmVyZW5jZSB0bwoJZGllIGNvcnJlY3RseS4KCjIwMDMtMDMtMDYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNvbmZpZy9tbWl4L21taXgubWQgKCIqbW92Y2NfZXhwYW5kZWQiKTogTmV3IHBhdHRlcm4uCgkoIm1vdmNjIiwgIm1vdmNjX3VucyIsICJtb3ZjY19mcCIsICJtb3ZjY19mcGVxIiwgIm1vdmNjX2Z1biIpOiBOZXcKCWV4cGFuZGVycy4KCjIwMDMtMDMtMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwci5oIChsYW5nX2V4cGFuZF9leHByKTogRGVsZXRlIG9ic29sZXRlIHByb3RvdHlwZS4KCjIwMDMtMDMtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBlbWl0LXJ0bC5jIChnZW5faGlnaHBhcnRfbW9kZSk6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDMtMDMtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGEgcGVlcGhvbGUyKTogR2VuZXJhbGl6ZSB0bwoJYWNjZXB0IGEgbWVtb3J5IG9wZXJhbmQuCgoyMDAzLTAzLTA1ICBPbGl2aWVyIEhhaW5xdWUgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBBZGQgJysnLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAocHJpbnRfb3BlcmFuZCwgY2FzZSAnKycpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoY2FsbF9vc2ZfMV9ub3JldHVybik6IERvY3VtZW50IGFuZCB1c2UuCgkoY2FsbF92YWx1ZV9vc2ZfMV9ub3JldHVybik6IExpa2V3aXNlLgoKMjAwMy0wMy0wNSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0bXQuYyAoZml4dXBfZ290b3MpOiBDaGFuZ2UgbWVhbmluZyBvZiBET05UX0pVTVBfSU4uCgkoZXhwYW5kX2VuZF9iaW5kaW5ncyk6IExpa2V3aXNlLgoKMjAwMy0wMy0wNSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLm1kIChyZXR1cm5fZXh0ZXJuYWxfcGljKTogQWRkICFUQVJHRVRfUEFfMjAgdG8gY29uc3RyYWludC4KCShlcGlsb2d1ZSk6IERvbid0IGdlbmVyYXRlIHJldHVybl9leHRlcm5hbF9waWMgd2hlbiBlbWl0dGluZyBQQSAyLjAKCWNvZGUuCgoyMDAzLTAzLTA1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX0RXQVJGX1JFR0lTVEVSX1NQQU4uCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZHdhcmZfcmVnaXN0ZXJfc3Bhbik6IE5ldy4KCgkqIGhvb2tzLmMgKGhvb2tfcnR4X3J0eF9udWxsKTogTmV3LgoKCSogaG9va3MuaCAoaG9va19ydHhfcnR4X251bGwpOiBQcm90b2l6ZS4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0RXQVJGX1JFR0lTVEVSX1NQQU4pOiBOZXcgbWFjcm8uCgkoVEFSR0VUX0lOSVRJQUxJWkVSKTogQWRkIFRBUkdFVF9EV0FSRl9SRUdJU1RFUl9TUEFOLgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIGR3YXJmX3JlZ2lzdGVyX3NwYW4uCgoJKiBkd2FyZjJvdXQuYyAobXVsdGlwbGVfcmVnX2xvY19kZXNjcmlwdG9yKTogTmV3LgoJKG9uZV9yZWdfbG9jX2Rlc2NyaXB0b3IpOiBOZXcuCgkocmVnX2xvY19kZXNjcmlwdG9yKTogQWRkIHN1cHBvcnQgZm9yIHZhbHVlcyB0aGF0IHNwYW4gbW9yZSB0aGFuCglvbmUgcmVnaXN0ZXIuCgoyMDAzLTAzLTA1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5pbiAoY2FsbHMubywgdG9wbGV2Lm8gYWxpYXMubyk6IERlcGVuZCBvbiBjZ3JhcGguaAoJKiBhbGlhcy5jOiAgSW5jbHVkZSBjZ3JhcGguaAoJKG1hcmtfY29uc3RhbnRfZnVuY3Rpb24pOiBVc2UgY2dyYXBoX3J0bF9pbmZvLgoJKiBjYWxscy5jOiAgSW5jbHVkZSBjZ3JhcGguaAoJKGZsYWdzX2Zyb21fZGVjbF9vcl90eXBlKTogVXNlIGNncmFwaF9ydGxfaW5mbyB0byBmaW5kIHB1cmUgYW5kIGNvbnN0CgljYWxscy4KCShleHBhbmRfY2FsbCk6IFVzZSBjZ3JhcGhfcnRsX2luZm8gdG8gc2V0IHByZWZlcnJlZCBzdGFjayBib3VuZGFyeS4KCSogY2dyYXBoLmMgKGNncmFwaF9ydGxfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCSogY2dyYXBoLmggKGNncmFwaF9ydGxfaW5mbyk6IERlY2xhcmUKCShjZ3JhcGhfcnRsX2luZm8pOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogQWRkIHJlY3Vyc2l2ZV9jYWxsX2VtaXQuCgkqIHRvcGxldi5jOiBJbmNsdWRlIGNncmFwaC5oLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBTZXQgcHJlZmVycmVkX2luY29taW5nX3N0YWNrX2JvdW5kYXJ5LgoKMjAwMy0wMy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChvdXRwdXRfc2ltb2RlX2JsZCk6IENsZWFyIHRoZQoJZGVzdGluYXRpb24gZmlyc3QgaWYgcG9zc2libGUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoZXh0enZfMV9yX2g4MzAwaHMpOiBBZGQgYW4KCWFsdGVybmF0aXZlLgoJKGV4dHp2XzFfcl9pbnZfaDgzMDBocyk6IExpa2V3aXNlLgoKMjAwMy0wMy0wNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogYmFzaWMtYmxvY2suaCAoRURHRV9JUlJFRFVDSUJMRV9MT09QLCBFREdFX0FMTF9GTEFHUyk6IE5ldy4KCSogY2ZnLmMgKGR1bXBfZWRnZV9pbmZvKTogQWRkIEVER0VfSVJSRURVQ0lCTEVfTE9PUCBmbGFnIGR1bXAuCgkqIGNmZ2xvb3AuYyAoZmxvd19sb29wX2ZyZWUpOiBNYWRlIGdsb2JhbC4KCShlc3RhYmxpc2hfcHJlZHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGZsb3dfbG9vcF90cmVlX25vZGVfYWRkKTogSGFuZGxlIHN1Ymxvb3BzIG9mIGFkZGVkIGxvb3AgY29ycmVjdGx5LgoJKGdldF9sb29wX2V4aXRfZWRnZXMpOiBOZXcuCgkodmVyaWZ5X2xvb3Bfc3RydWN0dXJlKTogVmVyaWZ5IEVER0VfSVJSRURVQ0lCTEVfTE9PUCBmbGFncy4KCSogY2ZnbG9vcC5oIChmbG93X2xvb3BfZnJlZSwgZ2V0X2xvb3BfZXhpdF9lZGdlcywgdW5sb29wKTogRGVjbGFyZS4KCSogY2ZnbG9vcGFuYWwuYyAobWFya19pcnJlZHVjaWJsZV9sb29wcyk6IE1hcmsgZWRnZXMgaW4gaXJyZWR1Y2libGUKCWxvb3BzLgoJKiBjZmdsb29wbWFuaXAuYyAobG9vcF9kZWxldGVfYnJhbmNoX2VkZ2UpOiBBbGxvdyB0byB0ZXN0IGZvcgoJcmVtb3ZhYmlsaXR5IG9mIGFuIGVkZ2UuCgkoZml4X2lycmVkdWNpYmxlX2xvb3BzKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShmaW5kX3BhdGgsIHJlbW92ZV9wYXRoKTogQWRkIGFiaWxpdHkgdG8gcmVtb3ZlIGVuY2xvc2luZyBsb29wcy4KCSh1bmxvb3ApOiBOZXcuCgkoY29weV9iYnMsIGR1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlKTogVXNlIEVER0VfSVJSRURVQ0lCTEVfTE9PUAoJZmxhZ3MuCgkqIGNmZ3J0bC5jICh2ZXJpZnlfZmxvd19pbmZvKTogSGFuZGxlIEVER0VfSVJSRURVQ0lCTEVfTE9PUCBmbGFnLgoJKiBsb29wLXVucm9sbC5jIChwZWVsX2xvb3BzX2NvbXBsZXRlbHkpOiBEbyBub3QgZHVwbGljYXRlIGxvb3AgaWYKCW5vdCBuZWNjZXNzYXJ5LgoJKGRlY2lkZV9wZWVsX2NvbXBsZXRlbHksIHBlZWxfbG9vcHNfY29tcGxldGVseSk6IEFsbG93IGNvbXBsZXRlIHBlZWxpbmcKCW9mIG5vbi1kdXBsaWNhYmxlIG9uY2Ugcm9sbGluZyBsb29wcy4KCSogbG9vcC11bnN3aXRjaC5jICh1bnN3aXRjaF9sb29wKTogVXBkYXRlIEVER0VfSVJSRURVQ0lCTEVfTE9PUCBmbGFncy4KCjIwMDMtMDMtMDUgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guaCAoT1ZFUlJJREVfT1BUSU9OUyk6IEZvciBUQVJHRVRfU0hNRURJQSwgdGhlIG1pbmltdW0gdmFsdWUKCWZvciBhbGlnbl9qdW1wcyBpcyA0LgoKCShTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTKTogSWYgcmVsb2FkaW5nIGEgUExVUyBpbnRvIEZQVUwsCgl1c2UgR0VORVJBTF9SRUdTLgoKMjAwMy0wMy0wNSAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKFBBRF9WQVJBUkdTX0RPV04pOiBEZWZpbmUgYW5kIHJldHVybgoJYWNjb3JkaW5nIHRvIHZhX2FyZyB0eXBlLgoJKEVYUEFORF9CVUlMVElOX1ZBX0FSRyk6IFJlbW92ZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX3ZhX2FyZyk6IFJlbW92ZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaCAobTY4aGMxMV92YV9hcmcpOiBSZW1vdmUuCgoyMDAzLTAzLTA1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmFyaWFibGVfaXNzdWUpOiBSZW1vdmUgdW5uZWNlc3NhcnkKCWVsc2UgY2xhdXNlcy4KCjIwMDMtMDMtMDUgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIGkzODYvaTM4Ni5jIChpeDg2X3NhdmVfcmVnKTogQWxzbyB0ZXN0CgljdXJyZW50X2Z1bmN0aW9uX3VzZXNfY29uc3RfcG9vbC4KCjIwMDMtMDMtMDUgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIHVud2luZC5oOiBBZGQgdGhlIEdQTCBleGNlcHRpb24uCgkqIE1ha2VmaWxlLmluIChVU0VSX0gpOiBBZGQgdW53aW5kLmguCgoyMDAzLTAzLTA1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIGMvOTc5OQoJKiBjLXR5cGVjay5jIChwdXNoX2luaXRfbGV2ZWwpOiBBZGQgc2FuaXR5IGNoZWNrLgoKMjAwMy0wMy0wNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiAgRGVmZXIgUlRMIGNvbXBpbGF0aW9uIG9ubHkgd2hlbgoJUlRMIGlubGluaW5nIGlzIGRvbmUuCgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9tYXJrX2xvY2FsX2Z1bmN0aW9ucyk6IE5ldyBsb2NhbCBmdW5jdGlvbi4KCShjZ3JhcGhfb3B0aW1pemUpOiBNYXJrIGxvY2FsIGZ1bmN0aW9ucy4KCSogaTM4Ni1wcm90b3MuaCAoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBpMzg2LmMgKGluaXRfY3VtdWxhdGl2ZV9hcmdzKTogVXNlIHJlZ2lzdGVyIHBhc3NpbmcgY29udmVudGlvbiBmb3IKCWxvY2FsIGZ1bmN0aW9ucy4KCgkqIGNncmFwaC5jIChjZ3JhcGhfZ2xvYmFsX2luZm9fcmVhZHkpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlCgkoY2dyYXBoX2xvY2FsX2luZm8sIGNncmFwaF9nbG9iYWxfaW5mbyk6IE5ldyBmdW5jdGlvbnMuCgkqIGNncmFwaC5oIChzdHJ1Y3QgY2dyYXBoX2xvY2FsX2luZm8sIGNncmFwaF9nbG9iYWxfaW5mbyk6IE5ldwoJc3RydWN0dXJlcy4KCShjZ3JhcGhfbG9jYWxfaW5mbywgY2dyYXBoX2dsb2JhbF9pbmZvLCBjZ3JhcGhfZ2xvYmFsX2luZm9fcmVhZHkpOgoJRGVjbGFyZS4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBTZXQgaW5saW5lX21hbnkuCgkoY2dyYXBoX21hcmtfZnVuY3Rpb25zX3RvX291dHB1dCk6IFVzZSBpbmxpbmVfbWFueS4KCShjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogRnJlZSBERUNMX1NBVkVEX1RSRUUgdW5jb25kdGlvbmFsbHkuCgkoY2dyYXBoX2V4cGFuZF9mdW5jdGlvbnMpOiBFeHBhbmQgaW5saW5lIGZ1bmN0aW9ucyBsYXN0LgoJKGNncmFwaF9vcHRpbWl6ZSk6IERvIG5vdCBlbWl0IHVuZWVkZWQgZnVuY3Rpb25zLgoKMjAwMy0wMy0wNCAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBleHByLmMgKGNvbnZlcnRfbW9kZXMpOiBDaGVjayBmb3IgbGVnYWwgaGFyZCByZWdpc3Rlci4KCjIwMDMtMDMtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChGcm9udCBFbmQgRGlyZWN0b3J5KTogRG9jdW1lbnQgdGFncy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjb25maWd1cmUuaW4gKHRhcmdldF9saXN0KTogQWRkZWQgdGFncy4KCSogTWFrZWZpbGUuaW4gKFRBR1MpOiBEZXBlbmQgb24gbGFuZy5jbGVhbi4gIEluY2x1ZGUgc3ViZGlyZWN0b3J5CglUQUdTIGZpbGVzIGJ5IHJlZmVyZW5jZS4KCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMudGFncyk6IE5ldyB0YXJnZXQuCgoyMDAzLTAzLTA0ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBnY292LWlvLmggKGdjb3Zfc2F2ZV9wb3NpdGlvbiwgZ2Nvdl9yZXNlcnZlX2xlbmd0aCwgZ2Nvdl9yZXN5bmMsCglnY292X3NraXAsIGdjb3Zfc2tpcF9zdHJpbmcsIGdjb3Zfd3JpdGVfdW5zaWduZWQsIGdjb3Zfd3JpdGVfY291bnRlciwKCWdjb3Zfd3JpdGVfc3RyaW5nLCBnY292X3JlYWRfdW5zaWduZWQsIGdjb3ZfcmVhZF9jb3VudGVyLAoJZ2Nvdl9yZWFkX3N0cmluZywgZ2Nvdl93cml0ZV9sZW5ndGgpOiBNb2RpZmllZCB0byBlbmFibGUgcmVhZGluZy8KCXdyaXRpbmcgb2Ygd2hvbGUgLmRhIGZpbGUganVzdCBvbmNlLgoJKGRhX2ZpbGVfb3BlbiwgZGFfZmlsZV9jbG9zZSwgZGFfZmlsZV9lb2YsIGRhX2ZpbGVfZXJyb3IsCglkYV9maWxlX3Bvc2l0aW9uLCBkYV9maWxlX3NlZWssIGRhX2ZpbGVfd3JpdGUsIGRhX2ZpbGVfcmVhZCk6IE5ldwoJZnVuY3Rpb25zLgoJKGFjdHVhbF9kYV9maWxlLCBhY3R1YWxfZGFfZmlsZV9wb3NpdGlvbiwgYWN0dWFsX2RhX2ZpbGVfbGVuZ3RoLAoJYWN0dWFsX2RhX2ZpbGVfYnVmZmVyLCBhY3R1YWxfZGFfZmlsZV9idWZmZXJfc2l6ZSk6IE5ldyBzdGF0aWMKCWZ1bmN0aW9ucy4KCSogbGliZ2Nvdi5jIChnY292X2V4aXQpOiBNb2RpZmllZCB0byByZWFkL3dyaXRlIHRoZSB3aG9sZSAuZGEgZmlsZSBhdAoJanVzdCBvbmNlLgoKCjIwMDMtMDMtMDQgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRml4IENGQQoJb2Zmc2V0IHdpdGhvdXQgZnJhbWUgcG9pbnRlci4KCjIwMDMtMDMtMDQgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IENhbGwgcHJvbW90ZV9tb2RlIHRvIHNldCB1bnNpZ25lZHAuCgoyMDAzLTAzLTA0ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgYWx3YXlzIGRlZmluZSBUQVJHRVRfU1lTVEVNX1JPT1QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGdjYy5jOiBDaGVjayB3aGV0aGVyIFRBUkdFVF9TWVNURU1fUk9PVCBpcyBkZWZpbmVkLgoKMjAwMy0wMy0wNCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgPG1lbWNoZWNrLmg+LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogY29uZmlnLmluOiBEZWZpbmUgSEFWRV9NRU1DSEVDS19ILgoKCSogZ2djLWNvbW1vbi5jOiBVc2UgPG1lbWNoZWNrLmg+IGlmIGF2YWlsYWJsZSBpbnN0ZWFkIG9mCgk8dmFsZ3JpbmQuaD4uCgkqIGdnYy1wYWdlLmM6IExpa2V3aXNlLgoJKiBjcHBmaWxlcy5jOiBMaWtld2lzZS4KCjIwMDMtMDMtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpleHR6dl84XzgpOiBGaXggY2MgYW5kIGxlbmd0aHMuCgoyMDAzLTAzLTA0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIGMvOTI2MgoJKiBjLXR5cGVjay5jIChkb19jYXNlKTogQXR0YWNoIHRoZSBmaXJzdCBjYXNlIGxhYmVsIHRvIHRoZSBTV0lUQ0hfQk9EWS4KCShjX2ZpbmlzaF9jYXNlKTogUmVjaGFpbiB0aGUgbmV4dCBzdGF0ZW1lbnRzIHRvIHRoZSBTV0lUQ0hfU1RNVC4KCjIwMDMtMDMtMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGRvYy9pbnZva2UudGV4aTogIERvY3VtZW50IHRoYXQgdW5pdC1hdC1hLXRpbWUgaXMgZW5hYmxlZCBmb3IgLU8zCgkqIHRvcGxldi5jIChwYXJzZV9vcHRpb25zX2FuZF9kZWZhdWx0X2ZsYWdzKTogRW5hYmxlIGZsYWdfdW5pdF9hdF9hX3RpbWUKCWZvciAtTzMuCgoyMDAzLTAzLTA0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogRGVsZXRlIHRocmVlIHVudXNlZCB2YXJpYWJsZXMuICBNb3ZlIGEgdmFyaWFibGUKCWRlZmluaXRpb24gY2xvc2VyIHRvIGl0cyB1c2UuICBTaW1wbGlmeSB1c2VfY29sbGVjdDIgbG9naWMuICBTdGFydCB0bwoJb3JnYW5pemUuICBTaW1wbGlmeSB0ZXN0cyBmb3IgaW4tdHJlZSBnYXMgYW5kIGxkLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTAzLTA0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlLgoJKiBjLWNvbW1vbi5jIChmbGFnX25vX2xpbmVfY29tbWFuZHMsIGZsYWdfbm9fb3V0cHV0LAoJZmxhZ19kdW1wX21hY3JvcywgZmxhZ19kdW1wX2luY2x1ZGVzKTogTmV3LgoJKiBjLWNvbW1vbi5oIChmbGFnX25vX2xpbmVfY29tbWFuZHMsIGZsYWdfbm9fb3V0cHV0LAoJZmxhZ19kdW1wX21hY3JvcywgZmxhZ19kdW1wX2luY2x1ZGVzLCBwcmVwcm9jZXNzX2ZpbGUpOiBOZXcuCgkoaW5pdF9jX2xleCk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGMtbGV4LmMgKGluaXRfY19sZXgpOiBVcGRhdGUgcHJvdG90eXBlOyBtb3ZlIHNvbWUgY29kZSB0bwoJY19jb21tb25faW5pdC4KCSogYy1vcHRzLmMgKHByZXByb2Nlc3NfZmlsZSk6IFN1YnN1bWUgaW50byBjX2NvbW1vbl9pbml0LgoJKGNfY29tbW9uX2RlY29kZV9vcHRpb24pOiBVcGRhdGUgZmxhZ3MuCgkoY19jb21tb25faW5pdCk6IE1vdmUgY29kZSBmcm9tIHByZXByb2Nlc3NfZmlsZSBhbmQgaW5pdF9jX2xleC4KCShzYW5pdGl6ZV9jcHBfb3B0cyk6IFVwZGF0ZS4KCSogYy1wcG91dHB1dC5jOiBOZXcsIGNwcG1haW4uYyBhbG1vc3QgdmVyYmF0aW0uCgkqIGNwcGhhc2guaCAoc3RydWN0IHByaW50ZXIpOiBSZW1vdmUuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgcHJpbnQuCgkqIGNwcGxpYi5oIChkdW1wX25vbmUsIGR1bXBfb25seSwgZHVtcF9uYW1lcywgZHVtcF9kZWZpbml0aW9ucywKCWNwcF9wcmVwcm9jZXNzX2ZpbGUpOiBSZW1vdmUuCgkoc3RydWN0IGNwcF9vcHRpb25zKTogUmVtb3ZlIG5vX291dHB1dCwgbm9fbGluZV9jb21tYW5kcywgZHVtcF9tYWNyb3MKCWFuZCBkdW1wX2luY2x1ZGVzLgoJKiBjcHBtYWluLmM6IFJlbW92ZS4KCSogZG9jL3Bhc3Nlcy50ZXhpOiBVcGRhdGUuCgoyMDAzLTAzLTA0ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogZnVuY3Rpb24uYyAoU1RBQ0tfQUxJR05NRU5UX05FRURFRCk6IE5ldyBtYWNyby4gIERlZmF1bHQgdG8gMS4KCShhc3NpZ25fc3RhY2tfbG9jYWxfMSk6IFBlcmZvcm0gb3ZlcmFsbCBzdGFjayBhbGlnbm1lbnQgb25seSB3aGVuCglTVEFDS19BTElHTk1FTlRfTkVFREVEIGlzIG5vbnplcm8uCgkqIGRvYy90bS50ZXhpIChTVEFDS19BTElHTk1FTlRfTkVFREVEKTogRG9jdW1lbnQuCgoJKiBwYS5jIChjb21wdXRlX2ZyYW1lX3NpemUpOiBSZW5hbWUgZnNpemUgdG8gc2l6ZS4gIEFjY291bnQgZm9yCglhbGlnbm1lbnQgdG8gYSB3b3JkIGJvdW5kYXJ5IGJlZm9yZSBnZW5lcmFsIHJlZ2lzdGVyIHNhdmUgYmxvY2suICBPbmx5CglhY2NvdW50IGZvciBkb3VibGUtd29yZCBhbGlnbm1lbnQgYmVmb3JlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVyIHNhdmUKCWJsb2NrIGlmIG9uZSBvciBtb3JlIGFyZSBzYXZlZC4gIERvbid0IGFsbG9jYXRlIHNwYWNlIGZvciAlcjMgd2hlbgoJZnJhbWUgcG9pbnRlciBpcyBuZWVkZWQuCgkoaHBwYV9leHBhbmRfcHJvbG9ndWUpOiBJbmNsdWRlIGFsaWdubWVudCB0byB3b3JkIGJvdW5kYXJ5IGluIGxvY2FsCglmcmFtZSBzaXplLgoJKiBwYS5oIChTVEFSVElOR19GUkFNRV9PRkZTRVQpOiBEZWZpbmUgdG8gOCBvbiBib3RoIDMyIGFuZCA2NC1iaXQgcG9ydHMuCgkoU1RBQ0tfQUxJR05NRU5UX05FRURFRCk6IERlZmluZS4KCjIwMDMtMDMtMDQgIEtldmluIEJ1ZXR0bmVyICA8a2V2aW5iQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAocnRsX2Zvcl9kZWNsX2xvY2F0aW9uKTogRG9uJ3QgcmV0dXJuIE5VTExfUlRYIGZvcgoJZ2xvYmFsIHJlZ2lzdGVyIHZhcmlhYmxlcy4KCjIwMDMtMDMtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcmVsb2FkLmMgKHJlbG9hZF9hZGp1c3RfcmVnX2Zvcl9tb2RlKTogTmV3IGZ1bmN0aW9uLgoJKHN1YnN0X3JlbG9hZHMpOiBDYWxsIGl0LgoJKG9wZXJhbmRzX21hdGNoX3ApOiBBZGp1c3QgcmVnaXN0ZXJzIHVzaW5nIEhBUkRfUkVHTk9fTlJFR1MuCgkqIHJlbG9hZC5oIChyZWxvYWRfYWRqdXN0X3JlZ19mb3JfbW9kZSk6IERlY2xhcmUuCgkqIHJlbG9hZDEuYyAoZW1pdF9pbnB1dF9yZWxvYWRfaW5zbnMsIGVtaXRfb3V0cHV0X3JlbG9hZF9pbnNucyk6CglDYWxsIGl0LgoKMjAwMy0wMy0wMyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25AdHVsaXB0cmVlLm9yZz4KCgkqIG9wdGFicy5jIChhZGRfZXF1YWxfbm90ZSk6IERlbGV0ZSBTVUJSRUdfUkVHIHVzZS4KCUZpeGVzIFBSIGMvNzg3Mi4KCjIwMDMtMDMtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCppeG9yc2kzX2FzaGlmdF8xNik6IE5ldy4KCSgqaXhvcnNpM19sc2hpZnRydF8xNik6IE5ldy4KCSgqaW9yc2kzX2FzaGlmdF8xNik6IFJlbW92ZS4KCjIwMDMtMDMtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpleHR6dl84XzgpOiBVc2UgJz8nIHRvIHNpbXBsaWZ5IHRoZQoJcGF0dGVybi4KCjIwMDMtMDMtMDMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMpOiBVcGRhdGUgZW50cnkgZm9yIHBvd2VycGMtZGFyd2luLgoKMjAwMy0wMy0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSEFWRV9BU19MVE9GRlhfTERYTU9WX1JFTE9DUyk6IERlZmF1bHQgdG8gMC4KCjIwMDMtMDMtMDMgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9tdWx0aXBhc3NfZGZhX2xvb2thaGVhZCk6IERlbGV0ZS4KCShUQVJHRVRfU0NIRURfRklSU1RfQ1lDTEVfTVVMVElQQVNTX0RGQV9MT09LQUhFQUQpOiBEZWxldGUuCgkocnM2MDAwX3ZhcmlhYmxlX2lzc3VlKTogRG8gbm90IHJldHVybiBuZWdhdGl2ZSB2YWx1ZS4KCShyczYwMDBfaXNzdWVfcmF0ZSk6IFVuaWZvcm1seSBzZXQgaXNzdWUgcmF0ZSB0byAxIGZvciBmaXJzdAoJc2NoZWR1bGluZyBwYXNzLgoKMjAwMy0wMy0wMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9maW5pc2gpOiBTd2FwIG9yZGVyIG9mIGJyZWFrX291dF9pbmNsdWRlcyBhbmQKCXBydW5lX3VudXNlZF90eXBlcyBjYWxscy4KCjIwMDMtMDMtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAoZmluZF9idWlsdGluX2xvbmdqbXBfY2FsbCk6IFNhdmUgYW5kIHJlc3RvcmUKCWxpbmVubyBhbmQgaW5wdXRfZmlsZW5hbWUuCgkoZmluZF9hbGxvY2FfY2FsbCk6IExpa2V3aXNlLgoJKGlubGluYWJsZV9mdW5jdGlvbl9wKTogUnVuIHRoZSBsYW5naG9vayBlYXJsaWVyLgoKCSogY2FsbHMuYyAoY29tcHV0ZV9hcmd1bWVudF9hZGRyZXNzZXMpOiBHaXZlIHRoZSBuZXcgTUVNcyBhCgltaW5pbXVtIGFsaWdubWVudCBvZiBQQVJNX0JPVU5EQVJZLgoKMjAwMy0wMy0wMyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoRVhUUkFfU1BFQ1MpOiBBZGQgc3VidGFyZ2V0X2FzbV9yZWxheF9zcGVjIGFuZAoJc3VidGFyZ2V0X2FzbV9pc2Ffc3BlYy4KCShTVUJUQVJHRVRfQVNNX1JFTEFYX1NQRUMsIFNVQlRBUkdFVF9BU01fSVNBX1NQRUMpOiBEZWZpbmUuCgkoQVNNX1NQRUMpOiBEZWZpbmUgYXMgU0hfQVNNX1NQRUMuCgkoU0hfQVNNX1NQRUMpOiBOZXc7IHRha2UgdGhlIHJvbGUgb2YgQVNNX1NQRUMsIGJ1dCBzYWZlIGZyb20gc3ZyNC5oLgoJVXNlIHN1YnRhcmdldF9hc21fcmVsYXhfc3BlYyBhbmQgc3VidGFyZ2V0X2FzbV9pc2Ffc3BlYy4KCSogY29uZmlnL3NoL2VsZi5oIChBU01fU1BFQyk6IFVzZSBTSF9BU01fU1BFQy4KCShTVUJUQVJHRVRfQVNNX0lTQV9TUEVDKTogVW5kZWYgLyBkZWZpbmUuCgoJKiBzaC5oIChPVkVSUklERV9PUFRJT05TKTogU2V0IGRlZmF1bHQgdmFsdWVzIGZvciBhbGlnbl9sb29wcwoJYW5kIGFsaWduX2p1bXBzIGlmIG5vdCBzZXQuCglGb3JjZSBhbGlnbl9qdW1wcyB0byBiZSBhdCBsZWFzdCAyLgoJV2hlbiByZWxheGluZywgZm9yY2UgYWxpZ25fZnVuY3Rpb25zIHRvIGJlIGF0IGxlYXN0IHRoZSBtYXhpbXVtIG9mCglhbGlnbl9sb29wcywgYWxpZ25fanVtcHMgYW5kIDQuCgkqIHNoLmMgKGZpbmRfYmFycmllciwgYmFycmllcl9hbGlnbik6IEhvbm91ciBhbGlnbl9qdW1wc19sb2cuCgkoc2hfbG9vcF9hbGlnbik6IEhvbm91ciBhbGlnbl9sb29wc19sb2cuCgoJKiBzaC5tZCAobGVuZ3RoIGF0dHJpYnV0ZSk6IFVzZSBwcmV2X25vbm5vdGVfaW5zbiBpbnN0ZWFkIG9mIFBSRVZfSU5TTgoJdG8gY2hlY2sgZm9yIGluZGlyZWN0X2p1bXBfc2NyYXRjaC4KCShpbmRpcmVjdF9qdW1wX3NjcmF0Y2gpOiBBZGQgc2Vjb25kIHNldC4KCSogc2guYyAob3V0cHV0X2Zhcl9qdW1wKTogVXNlIHByZXZfbm9ubm90ZV9pbnNuIGluc3RlYWQgb2YgUFJFVl9JTlNOCgl3aGVuIGxvb2tpbmcgZm9yIGluZGlyZWN0X2p1bXBfc2NyYXRjaC4KCUV4dHJhY3Qgc2NyYXRjaCByZWdpc3RlciB0YWtpbmcgbmV3IHN0cnVjdHVyZSBvZiBpbmRpcmVjdF9qdW1wX3NjcmF0Y2gKCWludG8gYWNjb3VudC4KCShnZW5fYmxvY2tfcmVkaXJlY3QpOiBTZXQgSU5TTl9TQ09QRSBmb3IgaW5kaXJlY3RfanVtcF9zY3JhdGNoLgoKMjAwMy0wMy0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAocnR4X2Zvcl9mdW5jdGlvbl9jYWxsKTogVGFrZSB0aGUgYWRkcmVzcyBhcyBhbiBhcmd1bWVudAoJKGV4cGFuZF9jYWxsKTogRG8gbm90IG1vZGlmeSB0aGUgZXhwcmVzc2lvbi4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogIEF2b2lkIGNmZ19jbGVhbnVwIGNhbGxzIHdoZW4gbm90CglvcHRpbWl6aW5nLgoKMjAwMy0wMy0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKml4b3JzaTNfemV4dF9oaSk6IFJlc3RyaWN0IHRvCglUQVJHRVRfSDgzMDBIIGFuZCBUQVJHRVRfSDgzMDBTLgoKMjAwMy0wMy0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoYSBwZWVwaG9sZTIpOiBOZXcuCgoyMDAzLTAzLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqZXh0enZfOF84KTogVXNlIHNob3J0ZXIgY29kZSB3aGVuCglvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0gYXJlIGRpZmZlcmVudC4KCjIwMDMtMDMtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBSZW1vdmUgdmFyaWFibGUgc3VjY2Vzcy4KCjIwMDMtMDMtMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdnYy1jb21tb24uYyAoZ2djX3JsaW1pdF9ib3VuZCk6IENhc3QgUkxJTV9JTkZJTklUWSB0byBhdm9pZAoJd2FybmluZ3MuCgoyMDAzLTAzLTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChIQVZFX0FTX0xUT0ZGWF9MRFhNT1ZfUkVMT0NTKTogTmV3IGlhNjQgdGVzdC4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlYnVpbGQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9sZF9hZGRyZXNzX2J5cGFzc19wKTogQWNjZXB0IGxvX3N1bS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobG9hZF9zeW1wdHIpOiBVc2UgaGlnaC9sb19zdW0gZm9yIHRoZQoJcGFpcmVkIGxkdG9mZnggYW5kIGxkeG1vdiBhbm5vdGF0aW9ucy4KCShsb2FkX3N5bXB0cl9pbnRlcm5hbDEpOiBSZW1vdmUuCgkobG9hZF9zeW1wdHJfaGlnaCwgbG9hZF9zeW1wdHJfbG93KTogTmV3LgoKMjAwMy0wMy0wMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1pbmNwYXRoLmMgKGFkZF9wYXRoKTogRml4IHN5c3AgYXNzaWdubWVudC4KCjIwMDMtMDMtMDIgIEt1cnQgR2FybG9mZiAgPGdhcmxvZmZAc3VzZS5kZT4KCgkqIHBhcmFtcy5kZWY6IEludHJvZHVjZSBwYXJhbWV0ZXIgbWF4LWlubGluZS1pbnNucy1ydGwgZm9yCglhIHNlcGFyYXRlIGxpbWl0IGZvciB0aGUgUlRMIGlubGluZXIuCgkqIHBhcmFtcy5oOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGZ1bmN0aW9uX2Nhbm5vdF9pbmxpbmVfcCk6IFVzZSBpdC4KCSogdG9wbGV2LmMgKGRlY29kZV9mX29wdGlvbik6IFNldCBtdWx0aXBsZSBwYXJhbWV0ZXJzCgljb250cm9sbGluZyBpbmxpbmluZyB3aXRoIC1maW5saW5lLWxpbWl0LgoJKiBwYXJhbXMuZGVmOiBGaXggb3J0aG9ncmFwaGljIGFuZCB0eXBvZ3JhcGhpYyBlcnJvcnMuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgcGFyYW1ldGVycyBjb250cm9sbGluZyBpbmxpbmluZwoJYW5kIHRoZSB3YXkgLWZpbmxpbmUtbGltaXQgc2V0cyBtdWx0aXBsZSBvZiB0aGVtLgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9kZWNsKTogSW50cm9kdWNlIGlubGluZWRfZnVuY3Rpb25fZmxhZywKCXJlY29yZGluZyB3aGV0aGVyIHRoZSBmdW5jdGlvbiBiZWNhbWUgZWxpZ2libGUgZm9yIGlubGluaW5nCglieSBhIGNvbXBpbGVyIGZsYWcgcmF0aGVyIHRoYW4gdGhlIGRlY2xhcmF0aW9uLgoJUHJvdmlkZSBESURfSU5MSU5FX0ZVTkMgbWFjcm8gdG8gYWNjZXNzIGl0LgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBTZXQgRElEX0lOTElORV9GVU5DLgoJKiBjcC9kZWNsLmMgKGdyb2tmbmRlY2wpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCSogY3Avb3B0aW1pemUgKG1heWJlX2Nsb25lX2JvZHkpOiBDb3B5IERJRF9JTkxJTkVfRlVOQy4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogUmVwb3J0IGl0LgoJKiBwYXJhbXMuZGVmOiBJbnRyb2R1Y2UgbmV3IG1heC1pbmxpbmUtaW5zbnMtYXV0byBsaW1pdC4KCSogcGFyYW1zLmg6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IEFwcGx5IGl0IHRvIGZ1bmN0aW9ucwoJd2l0aCBESURfSU5MSU5FX0ZVTkMgc2V0LgoJKiB0b3BsZXYuYyAoZGVjb2RlX2Zfb3B0aW9uKTogSW5pdGlhbGl6ZSBpdCBmcm9tIC1maW5saW5lLWxpbWl0Cgl2YWx1ZS4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBuZXcgcGFyYW1ldGVyLgoKMjAwMy0wMy0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogRG9uJ3QgcmVmZXJlbmNlIHNpbXBsaWZ5X3BhdGguCgoyMDAzLTAzLTAyICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9vdmVycmlkZV9vcHRpb25zKTogRG9uJ3QgZW5hYmxlCgltaW4vbWF4IGluc3RydWN0aW9ucyBieSBkZWZhdWx0IGFzIG1heSByZXN1bHQgaW4gcmVsb2FkIGVycm9ycy4KCjIwMDMtMDMtMDIgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QG5lcmltLmZyPgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCAoIm11bHFpMyIpOiBBbGxvdyBhZGRyZXNzIHJlZ2lzdGVyIHRvCglhdm9pZCByZWxvYWQgcHJvYmxlbXM7IGRlZmluZSBzcGxpdCBmb3IgaXQuCgoyMDAzLTAzLTAyICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9zaGlmdF9vcGVyYXRvcik6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaCAobTY4aGMxMV9zaGlmdF9vcGVyYXRvcik6IERlY2xhcmUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoUFJFRElDQVRFX0NPREVTKTogUmVnaXN0ZXIuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQgKCJyb3RyaGkzIiwgInJvdGxoaTMiKTogTmV3IHBhdHRlcm5zIGZvcgoJcm90YXRlcnQgYW5kIHJvdGF0ZS4KCSgicm90cmhpM19jb25zdCIsICJyb3RsaGkzX2NvbnN0Iik6IFJlbmFtZSBvZiBvbGQgJ3JvdHJoaTMnIGluc25zLgoJKCIqcm90cmhpMyIsICIqcm90bGhpMyIpOiBOZXcgaW5zbiBwYXR0ZXJuIGZvciBub24tY29uc3Qgcm90YXRlcnQuCgkoIipyb3RyaGkzX2FkZHIiKTogTmV3IHNwbGl0IGZvciBzaGlmdCBpbnNucyBvbiBhZGRyZXNzIHJlZ2lzdGVyLgoJKCIqbHNocmhpMyIsICIqYXNocmhpMyIsICIqYXNobGhpM18yIik6IFVzZSBuZXcgc3BsaXQuCgkqIGNvbmZpZy9tNjhoYzExL2xhcml0aC5hc20gKF9fX3JvdGxoaTMpOiBOZXcgYXNtIGZ1bmN0aW9uLgoJKF9fX3JvdHJoaTMpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvdC1tNjhoYzExLWdhcyAoTElCMUFTTUZVTkNTKTogQnVpbGQgdGhlbS4KCjIwMDMtMDMtMDIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIHRvcGxldi5jIChhdXhfYmFzZV9uYW1lKTogTW92ZWQgZnJvbSB0b3BsZXYuaC4KCShmaWxlbmFtZSk6IENvbnN0aWZ5LgoJKGxhbmdfZGVwZW5kZW50X2luaXQpOiBEb24ndCBkdXBsaWNhdGUgbmFtZS4KCShwcm9jZXNzX29wdGlvbnMpOiBTZXQgYXV4X2Jhc2VfbmFtZSBoZXJlLCBub3QuLi4KCShkb19jb21waWxlKTogLi4uaGVyZS4gIENoYW5nZSBwcm90b3lwZS4KCSh0b3BsZXZfbWFpbik6IE1vdmUgc29tZSBjb2RlIGZyb20gZG9fY29tcGlsZS4KCSogdG9wbGV2Lmg6IFJlbW92ZSBhdXhfYmFzZV9uYW1lLgoKMjAwMy0wMy0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaDogQWRkIGEgcHJvdG90eXBlIGZvcgoJaW9yeG9yX29wZXJhdG9yLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAnYycuCgkoaW9yeG9yX29wZXJhdG9yKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGlvcnhvcl9vcGVyYXRvci4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqaW9yaGkzX3pleHQpOiBSZW1vdmUuCgkoKmlvcnNpM196ZXh0aGkpOiBMaWtld2lzZS4KCSgqaW9yc2kzX3pleHRzaSk6IExpa2V3aXNlLgoJKCp4b3JoaTNfemV4dHFpKTogTGlrZXdpc2UuCgkoKnhvcnNpM196ZXh0aGkpOiBMaWtld2lzZS4KCSgqeG9yc2kzX3pleHRzaSk6IExpa2V3aXNlLgoJKCppeG9yaGkzX3pleHQpOiBOZXcuCgkoKml4b3JzaTNfemV4dF9xaSk6IExpa2V3aXNlLgoJKCppeG9yc2kzX3pleHRfaGkpOiBMaWtld2lzZS4KCjIwMDMtMDMtMDIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMtaW5jcGF0aC5jIChyZW1vdmVfY29tcG9uZW50X3AsIHNpbXBsaWZ5X3BhdGgpOiBNb3ZlIGJhY2sgdG8KCWNwcGZpbGVzLmMuCgkocmVtb3ZlX2R1cGxpY2F0ZXMpOiBVc2UgY3BwX3NpbXBsaWZ5X3BhdGguCgkqIGMtaW5jcGF0aC5oIChzaW1wbGlmeV9wYXRoKTogUmVtb3ZlLgoJKiBjLWxleC5jOiBEb24ndCBpbmNsdWRlIGMtaW5jcGF0aC5oLgoJKGluaXRfY19sZXgpOiBSZW1vdmUgc2ltcGxpZnlfcGF0aC4KCSogY3BwZmlsZXMuYyAocmVtb3ZlX2NvbXBvbmVudF9wLCBjcHBfc2ltcGxpZnlfcGF0aCk6IFJlc3RvcmUuCgkoZmluZF9vcl9jcmVhdGVfZW50cnksIHZhbGlkYXRlX3BjaCk6IFJldmVydC4KCjIwMDMtMDMtMDIgIEFzaGlmIEhhcmppICA8YXNoYXJqaUB1d2F0ZXJsb28uY2E+CgoJKiBnY2MuYyAoZGVmYXVsdF9jb21waWxlcnMpOiBBZGQgLW5vLWludGVncmF0ZWQtY3BwIGZsYWcgdG8gaW52b2tlCgkgIGFuIGV4dGVybmFsIGNwcCBkdXJpbmcgY29tcGlsYXRpb24uCgkob3B0aW9uX21hcCk6IExpa2V3aXNlLgoJKiBvYmpjL2xhbmctc3BlY3MuaCAoZGVmYXVsdF9jb21waWxlcnMpOiBTaW1pbGFybHkuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW5vLWludGVncmF0ZWQtY3BwIGZsYWcuCgoyMDAzLTAzLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICh6ZXJvX2V4dGVuZHFpc2kyKTogQ2hhbmdlIHRvIGFuCglleHBhbmRlci4KCSgqemVyb19leHRlbmRxaXNpMl9oODMwMCk6IE5ldy4KCSgqemVyb19leHRlbmRxaXNpMl9oODMwMGhzKTogTmV3LgoJKHR3byBzcGxpdHRlcnMpOiBOZXcuCgoyMDAzLTAzLTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmcC1iaXQuaCAoZmxvYXRfdG9fdXNpKTogRml4IGNvbmRpdGlvbiB3cmFwcGluZyBwcm90b3R5cGUuCgoyMDAzLTAzLTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IFJlbW92ZSBkZWFkIGNvZGUuCgoyMDAzLTAzLTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBjKysvOTM2NwoJKiBidWlsdGluLXR5cGVzLmRlZiAoREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzMpOiBOZXcgbWFjcm8uCgkoQlRfRk5fSU5UX0NPTlNUX1NUUklOR19WQUxJU1RfQVJHLAoJQlRfRk5fSU5UX1NUUklOR19DT05TVF9TVFJJTkdfVkFMSVNUX0FSRywKCUJUX0ZOX0lOVF9DT05TVF9TVFJJTkdfQ09OU1RfU1RSSU5HX1ZBTElTVF9BUkcsCglCVF9GTl9JTlRfU1RSSU5HX1NJWkVfQ09OU1RfU1RSSU5HX1ZBTElTVF9BUkcsCglCVF9GTl9JTlRfU1RSSU5HX0NPTlNUX1NUUklOR19WQVIsCglCVF9GTl9JTlRfQ09OU1RfU1RSSU5HX0NPTlNUX1NUUklOR19WQVIsCglCVF9GTl9JTlRfU1RSSU5HX1NJWkVfQ09OU1RfU1RSSU5HX1ZBUik6IE5ldyBidWlsdC1pbiB0eXBlcy4KCSogYnVpbHRpbi1hdHRycy5kZWYgKEFUVFJfTk9OTlVMTF8xLCBBVFRSX05PTk5VTExfMiwKCUFUVFJfTk9OTlVMTF8zKTogQWxzbyBpbmNsdWRlIHRoZSBub3Rocm93IGF0dHJpYnV0ZS4KCShzcHJpbnRmLCBzY2FuZiwgc3NjYW5mLCB2cHJpbnRmLCB2c3ByaW50Ziwgc25wcmludGYsCgl2c25wcmludGYsIHZzY2FuZiwgdnNzY2FuZik6IERvbid0IGRlZmluZSBhdHRyaWJ1dGVzIGhlcmUuCgkqIGJ1aWx0aW5zLmRlZiAocHV0Y2hhciwgcHV0cyk6IE1ha2UgZnVsbCBDODkgYnVpbHQtaW5zLgoJKHNucHJpbnRmLCBzcHJpbnRmLCBzY2FuZiwgc3NjYW5mLCB2cHJpbnRmLCB2c2NhbmYsCgl2c3NjYW5mLCB2c25wcmludGYsIHZzcHJpbnRmKTogTmV3IGJ1aWx0LWlucy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogSGFuZGxlIG5ldyBtYWNybwoJREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzMuCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IHRoZXNlIG5ldyBidWlsdC1pbiBmdW5jdGlvbnMuCgoyMDAzLTAzLTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IE5ldy4KCjIwMDMtMDMtMDEgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogcHJlZGljdC5jIChlc3RpbWF0ZV9iYl9mcmVxdWVuY2llcyk6IENvcnJlY3RseSBzZXQKCXJlYWxfdmFsdWVzX2luaXRpYWxpemVkIGFmdGVyIGluaXRpYWxpemF0aW9uLgoKMjAwMy0wMy0wMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW4gKENfQU5EX09CSkNfT0JKUywgYy1pbmNwYXRoLm8sIGMtbGV4Lm8sIExJQkNQUF9PQkpTLAoJY3BwaW5pdC5vLCBjcHBkZWZhdWx0Lm8sIGZpeC1oZWFkZXIpOiBVcGRhdGUuCgkqIGMtaW5jcGF0aC5jOiBOZXcgZmlsZS4KCSogYy1pbmNwYXRoLmg6IE5ldyBmaWxlLgoJKiBjLWxleC5jOiBJbmNsdWRlIGMtaW5jcGF0aC5oLgoJKGluaXRfY19sZXgpOiBSZWdpc3RlciBwYXRoIHNpbXBsaWZpZXIuCgkqIGMtb3B0cy5jOiBJbmNsdWRlIGNwcGRlZmF1bHQuaCBhbmQgYy1pbmNwYXRoLmguCgkoVEFSR0VUX1NZU1RFTV9ST09ULCB2ZXJib3NlLCBpcHJlZml4LCBzeXNyb290LCBzdGRfaW5jLAoJc3RkX2N4eF9pbmMsIHF1b3RlX2NoYWluX3NwbGl0LCBhZGRfcHJlZml4ZWRfcGF0aCk6IE5ldy4KCShDT01NQU5EX0xJTkVfT1BUSU9OUyk6IEFkZCBtb3JlIG9wdGlvbnMgZnJvbSBjcHBsaWIuCgkobWlzc2luZ19hcmcsIGNfY29tbW9uX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgdGhlbS4KCShjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBSZWdpc3RlciBpbmNsdWRlIGNoYWlucy4KCShwcmludF9oZWxwKTogVXBkYXRlLgoJKiBjcHBkZWZhdWx0LmggKHN0cnVjdCBkZWZhdWx0IGluY2x1ZGUpOiBVcGRhdGUuCglNb3ZlIHNvbWUgbWFjcm9zIHRvIC4uLgoJKiBjcHBkZWZhdWx0LmM6IC4uLiBoZXJlLgoJKGNwcF9pbmNsdWRlX2RlZmF1bHRzKTogQWRkIGV4dHJhIGZpZWxkIGFkZF9zeXNyb290LgoJKiBjcHBmaWxlcy5jIChpbmNsdWRlX2ZpbGUsIHNlYXJjaF9mcm9tLCBmaW5kX29yX2NyZWF0ZV9lbnRyeSwKCWNwcF9pbmNsdWRlZCwgZmluZF9pbmNsdWRlX2ZpbGUsIHJlbWFwX2ZpbGVuYW1lKTogVXBkYXRlIGZvcgoJcmVuYW1pbmcgb2Ygc2VhcmNoX3BhdGggdG8gY3BwX3BhdGgsIGFuZCBvZiB0aGUgY2hhaW4gaGVhZGVycy4KCShyZW1vdmVfY29tcG9uZW50X3AsIF9jcHBfc2ltcGxpZnlfcGF0aG5hbWUpOiBNb3ZlIHRvIGMtaW5jcGF0aC5jLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBzZWFyY2hfcGF0aCk6IE1vdmUgdG8gY3BwbGliLmguCgkoc3RydWN0IGNwcF9idWZmZXIsIHN0cnVjdCBjcHBfcmVhZGVyKTogVXBkYXRlLgoJKF9jcHBfc2ltcGxpZnlfcGF0aG5hbWUpOiBSZW1vdmUuCgkqIGNwcGluaXQuYzogRG9uJ3QgaW5jbHVkZSBwcmVmaXguaCBhbmQgY3BwZGVmYXVsdC5oLgoJKElOT19UX0VRLCBJTk9fVF9DT1BZLCBwYXRoX2luY2x1ZGUsIGFwcGVuZF9pbmNsdWRlX2NoYWluLAoJcmVtb3ZlX2R1cF9kaXIsIHJlbW92ZV9kdXBfbm9uc3lzX2RpcnMsIHJlbW92ZV9kdXBfZGlycywKCWluaXRfc3RhbmRhcmRfaW5jbHVkZXMsIEJSQUNLRVQsIFNZU1RFTSwgQUZURVIsIG5vX2RpciwKCW5vX3B0aCwgY3BwX2hhbmRsZV9vcHRpb25zKTogUmVtb3ZlLgoJKHN0cnVjdCBwZW5kaW5nX29wdGlvbik6IFJlbW92ZSBjaGFpbiBtZW1iZXJzLgoJKGNwcF9kZXN0cm95LCBjcHBfcmVhZF9tYWluX2ZpbGUsIENPTU1BTkRfTElORV9PUFRJT05TLAoJY3BwX2hhbmRsZV9vcHRpb24pOiBVcGRhdGUuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3BhdGgsIGNwcF9zZXRfaW5jbHVkZV9jaGFpbnMpOiBOZXcuCgkoc3RydWN0IGNwcF9vcHRpb25zKTogUmVtb3ZlIHF1b3RlX2luY2x1ZGUsIGJyYWNrZXRfaW5jbHVkZSwKCWluY2x1ZGVfcHJlZml4LCBpbmNsdWRlX3ByZWZpeF9sZW4sIHZlcmJvc2UsIGlnbm9yZV9zcmNkaXIsCglub19zdGFuZGFyZF9pbmNsdWRlcywgbm9fc3RhbmRhcmRfY3BsdXNwbHVzX2luY2x1ZGVzLgoJKHN0cnVjdCBjcHBfY2FsbGJhY2tzKTogQWRkIHNpbXBsaWZ5X3BhdGguCgkoY3BwX2hhbmRsZV9vcHRpb25zKTogUmVtb3ZlLgoJKiBmaXgtaGVhZGVyLmM6IEluY2x1ZGUgYy1pbmNwYXRoLmguCgkocmVhZF9zY2FuX2ZpbGUpOiBVcGRhdGUgdG8gdXNlIGMtaW5jcGF0aCBmdW5jdGlvbmFsaXR5LgoJKiBkb2MvcGFzc2VzLnRleGk6IFVwZGF0ZS4KCjIwMDMtMDMtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoYml0X29wZXJhbmQpOiBBY2NlcHQgTUVNIG9ubHkgaWYgaXQKCXNhdGlzZmllcyBFWFRSQV9DT05TVFJBSU5UICdVJy4KCjIwMDMtMDMtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCp0c3RfZXh0enZfYml0cWlfMV9uKTogVGFrZSBhIHNjcmF0Y2gKCXJlZ2lzdGVyLgoJKCp0c3RfZXh0enZfbWVtcWlfMV9uKTogQ2hhbmdlIHRvIGEgc3BsaXR0ZXIuCgkoYSBwZWVwaG9sZTIpOiBVcGRhdGUuCgoyMDAzLTAzLTAxICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfYmJfZnJlcXVlbmNpZXMpOiBJbml0aWFsaXplIHRoZSBzcmVhbAoJY29uc3RhbnRzIG9uY2UgcGVyIGNvbXBpbGF0aW9uLgoKMjAwMy0wMi0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChmbGFnX2VsaW1pbmF0ZV91bnVzZWRfZGVidWdfdHlwZXMpOiBFbmFibGUgYnkgZGVmYXVsdC4KCjIwMDMtMDItMjggIHNjb3R0IHNueWRlciAgPHNueWRlckBmbmFsLmdvdj4KCgkqIGZsYWdzLmg6IEFkZCBmbGFnX2VsaW1pbmF0ZV91bnVzZWRfZGVidWdfdHlwZXMuCgkqIHRvcGxldi5jOiBBZGQgZmxhZ19lbGltaW5hdGVfdW51c2VkX2RlYnVnX3R5cGVzLgoJKGZfb3B0aW9ucyk6IEFkZCAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMuCgkqIGR3YXJmMm91dC5jIChzdHJ1Y3QgZmlsZV90YWJsZSk6IEFkZCBlbWl0dGVkIG1lbWJlci4KCShzcGxpY2VfY2hpbGRfZGllKTogRml4IHRoZSBwYXJlbnQgcG9pbnRlciBmb3IgdGhlIGNoaWxkIGJlaW5nCglzcGxpY2VkLgoJKGxvb2t1cF9maWxlbmFtZSk6IE1haW50YWluIGZpbGVfdGFibGUuZW1pdHRlZCBhcnJheS4gIERvbid0CglvdXRwdXQgLmZpbGUgZGlyZWN0aXZlIGhlcmUuCgkobWF5YmVfZW1pdF9maWxlKTogKG5ldykKCShpbml0X2ZpbGVfdGFibGUpOiBTZXQgdXAgZmlsZV90YWJsZS5lbWl0dGVkLgoJKGR3YXJmMm91dF9zb3VyY2VfbGluZSk6IFVzZSBtYXliZV9lbWl0X2ZpbGUuCgkoZHdhcmYyb3V0X3N0YXJ0X3NvdXJjZV9maWxlKTogVXNlIG1heWJlX2VtaXRfZmlsZS4KCShkd2FyZjJvdXRfaW5pdCk6IFVzZSBtYXliZV9lbWl0X2ZpbGUuCgkocHJ1bmVfdW51c2VkX3R5cGVzX3dhbGtfYXR0cmlicyk6IChuZXcpCgkocHJ1bmVfdW51c2VkX3R5cGVzX21hcmspOiAobmV3KQoJKHBydW5lX3VudXNlZF90eXBlc193YWxrKTogKG5ldykKCShwcnVuZV91bnVzZWRfdHlwZXNfcHJ1bmUpOiAobmV3KQoJKHBydW5lX3VudXNlZF90eXBlcyk6IChuZXcpCgkoZHdhcmYyb3V0X2ZpbmlzaCk6IENhbGwgcHJ1bmVfdW51c2VkX3R5cGVzIGlmCglmbGFnX2VsaW1pbmF0ZV91bnVzZWRfZGVidWdfdHlwZXMgaXMgc2V0LgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGlvbiBTdW1tYXJ5KTogQWRkCgktZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMuCgkoRGVidWdnaW5nIE9wdGlvbnMpOiBMaWtld2lzZS4KCjIwMDMtMDItMjggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBDaGFuZ2UgLnBjaCB0byAuZ2NoLgoJKiBjcHBmaWxlcy5jIChvcGVuX2ZpbGVfcGNoKTogTGlrZXdpc2UuCgkqIGdjYy5jIChkZWZhdWx0X2NvbXBpbGVycyk6IExpa2V3aXNlLgoKMjAwMy0wMi0yOCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZmxvYXRsaWIuYzogUmVtb3ZlLgoKMjAwMy0wMi0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBzdG9yLWxheW91dC5jICh2YXJpYWJsZV9zaXplKTogTGVhdmUgYSAibWludXMgMSIgb3V0c2lkZSB0aGUKCVNBVkVfRVhQUi4KCjIwMDMtMDItMjggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcG93ZXI0Lm1kOiBBZGQgY29tcGFyZSBieXBhc3MuCgoyMDAzLTAyLTI4ICBKYXNvbiBUaG9ycGUgIDx0aG9ycGVqQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL25ldGJzZC5oOiBVcGRhdGUgY29weXJpZ2h0IHllYXJzLgoJKE5FVEJTRF9DUFBfU1BFQyk6IERlZmluZSBfUkVFTlRSQU5UIGFuZCBfUFRIUkVBRFMgaWYKCS1wdGhyZWFkIGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgoKMjAwMy0wMi0yOCAgRGFsZSBKb2hhbm5lc2VuIDxkYWxlakBhcHBsZS5jb20+CgoJKiBsb29wLmMgKHN0cnVjdCBtb3ZhYmxlKTogQWRkIGluc2VydF90ZW1wLCBzaHJpbmsgc2F2ZW1vZGUuCgkoc2Nhbl9sb29wKTogQWNjZXB0IGludmFyaWFudHMgdGhhdCByZXF1aXJlIGNvcHlpbmc7IG1hcmsgYXMKCWluc2VydF90ZW1wLgoJKGNvbWJpbmVfbW92YWJsZXMpOiBEb24ndCBjb21iaW5lIGluc2VydF90ZW1wIG1vdmFibGVzLgoJKG1vdmVfbW92YWJsZXMpOiBJbnNlcnQgY29waWVzIGZvciBpbnNlcnRfdGVtcCBtb3ZhYmxlcy4KCURvbid0IHJlY29yZCB0aGUgaW5mbyBiYXNlZCBvbiByZWdubyBmb3IgaW5zZXJ0X3RlbXAncy4KCjIwMDMtMDItMjggIEpvZWwgU2hlcnJpbGwgPGpvZWxAT0FSY29ycC5jb20+CgoJUFIgOTYzOC9vdGhlcgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKERFRkFVTFRfUENDX1NUUlVDVF9SRVRVUk4pOiBFbnN1cmUgdGhlCgl0aGlzIGNvbnN0YW50IGRlZmF1bHRzIHRvIDEuCgoyMDAzLTAyLTI4ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnLmdjYyAoeHRlbnNhLSotbGludXgqKTogQWRkIHQtc2xpYmdjYy1lbGYtdmVyIHRvIHRtYWtlX2ZpbGUuCgoyMDAzLTAyLTI4ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAobXVsaGlzaTMsIG11bGhpc2kzYWRkc2ksIG11bGhpZGkzYWRkZGkpOiBFbmFibGUgZm9yIGFueQoJQVJNdjVlIHByb2Nlc3Nvciwgbm90IGp1c3QgZm9yIFhTY2FsZS4gIEluc3RydWN0aW9ucyBhcmUgcHJlZGljYWJsZS4KCShtdWxoaXNpM3RiLCBtdWxoaXNpM2J0LCBtdWxoaXNpM3R0KTogTmV3IHBhdHRlcm5zIGZvciBBUk12NWUuCgoyMDAzLTAyLTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAobm90ZV9pbnZhbGlkX2NvbnN0YW50cyk6IENoYW5nZSBwYXJhbWV0ZXIgdHlwZQoJZnJvbSBib29sIHRvIGludC4KCjIwMDMtMDItMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCp0c3RfZXh0enZfYml0cWlfMV9uKTogQWNjZXB0IHRoZQoJdGVzdCBvZiBiaXQgNy4KCSgqdHN0X2V4dHp2X21lbXFpXzFfbik6IExpa2V3aXNlLgoJKGEgcGVlcGhvbGUyKTogTmV3LgoKMjAwMy0wMi0yOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBXcmFwIGluCgkjaWZuZGVmIF9fbWlwczE2LgoKMjAwMy0wMi0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChnZW5fbG93cGFydF9mb3JfY29tYmluZSk6IFVwZGF0ZSBoYW5kbGluZyBvZgoJc3VicmVnc19vZl9tb2RlCgkqIGZsb3cuYyAobGlmZV9hbmFseXNpcywgbWFya191c2VkX3JlZ3MpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAoc3VicmVnc19vZl9tb2RlKTogVHVybiBpbnRvIHNpbmdsZSBiaXRtYXAuCgkoY2Fubm90X2NoYW5nZS1tb2RlX3NldF9yZWdzLCBpbnZhbGlkX21vZGVfY2hhbmdlX3ApOiBVcGRhdGUKCWRlYWxpbmcgd2l0aCBzdWJyZWdzX29mX21vZGUKCSogcmVncy5oIChzdWJyZWdzX29mX21vZGUpOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMy0wMi0yOCAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZW1pdC1ydGwuYyAoc2V0X3JlZ19hdHRyc19mb3JfcGFybSk6IE5ldyBmdW5jdGlvbi4KCSogcnRsLmggKHNldF9yZWdfYXR0cnNfZm9yX3Bhcm0pOiBOZXcgZXhwb3J0ZWQgZnVuY3Rpb24uCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IFVzZSBzZXRfcmVnX2F0dHJzX2Zvcl9wYXJtIGluc3RlYWQgb2YKCXNldF9yZWdfYXR0cnNfZnJvbV9tZW0uCgoyMDAzLTAyLTI3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBaYWNrIFdlaW5iZXJnIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY2MuYyAoZG9fc3BlY18xKTogIFRyZWF0ICVVIGxpa2UgJXUgZm9yIHVuaXF1ZSBhc3NvY2lhdGlvbnMuCgoyMDAzLTAyLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcmVsb2FkMS5jIChzZXh0X2Zvcl9tb2RlKTogUmVtb3ZlLgoJKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBVc2UgdHJ1bmNfaW50X2Zvcl9tb2RlIGluc3RlYWQgb2YKCXNleHRfZm9yX21vZGUuCgkobW92ZTJhZGRfbm90ZV9zdG9yZSk6IExpa2V3aXNlLgoJUmVzZXQgcmVnaXN0ZXIgaW5mb3JtYXRpb24gaWYgd2Ugc2VlIGEgc2V0IGluIG5vbi1pbnRlZ2VyCgltb2RlLgoKMjAwMy0wMi0yNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9haXg0My5oIChBU01fU1BFQyk6IE9ubHkgZW1pdCAtbXBwYzY0IGlmIG5vIC1tY3B1CglvcHRpb24uCgkoQVNNX0NQVV9TUEVDKTogVXNlIC1tNjIwIGZvciBQb3dlcjMsIFBvd2VyNCwgNjIwLCA2MzAuCgkqIGNvbmZpZy9yczYwMDAvYWl4NTEuaDogU2FtZS4KCSogY29uZmlnL3JzNjAwMC9haXg1Mi5oOiBTYW1lLgoJKiBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZDogQWRkaXRpb25hbCBWTVggYnlwYXNzZXMuCgoyMDAzLTAyLTI3ICAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogdG9wbGV2LmMgKHByaW50X3ZlcnNpb24pOiBBZGQgaW5kZW50YXRpb24gZm9yIEdHQyBoZXVyaXN0aWNzIGFuZAoJb3V0cHV0IGFmdGVyIHByaW50aW5nIHZlcnNpb24gaW5mb3JtYXRpb24uCgoyMDAzLTAyLTI3ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkB0dWxpcHRyZWUub3JnPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogUmVxdWlyZSBpbnRlZ3JhbCBtb2RlIHdoZW4KCXBlcm11dGluZyBTVUJSRUcgd2l0aCBBTkQuCgoyMDAzLTAyLTI3ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2hwdXguaCAoU1RBUlRGSUxFX1BSRUZJWF9TUEVDKTogUmVtb3ZlLgoKMjAwMy0wMi0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChleHRlbmRzZmRmMik6IEFkZCBwYXR0ZXJuIGFjY2lkZW50YWxseQoJZGVsZXRlZCB3aGVuIGNpcnJ1cyBpbnN0cnVjdGlvbnMgd2VyZSBhZGRlZC4KCjIwMDMtMDItMjcgIEphc29uIFRob3JwZSAgPHRob3JwZWpAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWcuZ2NjICgqLSotbmV0YnNkWzItOV0qLCAqLSotbmV0YnNkZWxmWzItOV0qKTogRW5hYmxlCglQT1NJWCB0aHJlYWQgc3VwcG9ydCBieSBkZWZhdWx0LgoKMjAwMy0wMi0yNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaDogRG9uJ3QgaW5jbHVkZSBhbnkgb3RoZXIgZmlsZXMgZGlyZWN0bHkuCgkqIGNvbmZpZy9pMzg2L21pbmd3MzIuaDogRG9uJ3QgaW5jbHVkZSBjeWd3aW4uaCBkaXJlY3RseS4KCSogY29uZmlnLmdjYyAoY3lnd2luLCBtaW5ndzMyLCB1d2luKTogSW5zdGVhZCBtYWtlIHRoZXNlIGZpbGVzCglleHBsaWNpdCBpbiB0aGUgdG1fZmlsZXMgdmFyaWFibGUuCgoyMDAzLTAyLTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEFkZCBUSSBjb25zdGFudCBzcGxpdHRlci4KCjIwMDMtMDItMjYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAocHVyZ2VfYnVpbHRpbl9jb25zdGFudF9wKTogSGFuZGxlIHN1YnJlZyBvZgoJY29uc3RhbnRfcF9ydHggdG9vLgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3N0YWNrX2xvY2FsXzEpOiBUcnVuY2F0ZSBjb25zdGFudCBhZGRlZCB0bwoJZnJhbWVfcG9pbnRlcl9ydHggb3IgdmlydHVhbF9zdGFja192YXJzX3J0eCBmb3IgUG1vZGUuCgoyMDAzLTAyLTI2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBBZGQgcG93ZXI0IHRvIFBvd2VyUEMgd2l0aF9jcHUgbGlzdC4KCjIwMDMtMDItMjYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG9iamMtYWN0LmM6IChtYXJrX3JlZmVyZW5jZWRfbWV0aG9kcyk6IEZpeCBjb21waWxhdGlvbiBwcm9ibGVtLgoKMjAwMy0wMi0yNiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2Nvdi1kdW1wLmMgKHByaW50X3ByZWZpeCk6IEZpeCBzaWduZWRuZXNzIHdhcm5pbmcuCgkqIGdjb3YtaW8uaCAoc3RydWN0IGNvdW50ZXJfc2VjdGlvbiwgc3RydWN0IGNvdW50ZXJfc2VjdGlvbl9kYXRhKTogTmV3LgoJKHN0cnVjdCBmdW5jdGlvbl9pbmZvKTogbl9hcmNfY291bnRzIGZpZWxkIHJlbW92ZWQsIG5fY291bnRlcl9zZWN0aW9ucywKCWNvdW50ZXJfc2VjdGlvbnMgZmllbGRzIGFkZGVkLgoJKHN0cnVjdCBnY292X2luZm8pOiBhcmNfY291bnRzLCBuX2FyY19jb3VudHMgZmllbGRzIHJlbW92ZWQsCgluX2NvdW50ZXJfc2VjdGlvbnMsIGNvdW50ZXJfc2VjdGlvbnMgZmllbGRzIGFkZGVkLgoJKiBsaWJnY292LmMgKGdjb3ZfZXhpdCwgX19nY292X2ZsdXNoKTogQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlCglwcm9maWxlIHNlY3Rpb25zLgoJKiBwcm9maWxlLmggKE1BWF9DT1VOVEVSX1NFQ1RJT05TKTogTmV3LgoJKHN0cnVjdCBzZWN0aW9uX2luZm8pOiBOZXcuCgkoc3RydWN0IHByb2ZpbGVfaW5mbyk6IGNvdW50X2luc3RydW1lbnRlZF9lZGdlcywKCWNvdW50X2VkZ2VzX2luc3RydW1lbnRlZF9ub3cgZmllbGRzIHJlbW92ZWQsIG5fc2VjdGlvbnMsIHNlY3Rpb25faW5mbwoJZmllbGRzIGFkZGVkLgoJKGZpbmRfY291bnRlcnNfc2VjdGlvbik6IERlY2xhcmUuCgkqIHByb2ZpbGUuYyAoc3RydWN0IGZ1bmN0aW9uX2xpc3QpOiBjb3VudF9lZGdlcyBmaWVsZCByZW1vdmVkLAoJbl9jb3VudGVyX3NlY3Rpb25zLCBjb3VudGVyX3NlY3Rpb25zIGZpZWxkcyBhZGRlZC4KCShzZXRfcHVycG9zZSwgbGFiZWxfZm9yX3RhZywgYnVpbGRfY291bnRlcl9zZWN0aW9uX2ZpZWxkcywKCWJ1aWxkX2NvdW50ZXJfc2VjdGlvbl92YWx1ZSwgYnVpbGRfY291bnRlcl9zZWN0aW9uX2RhdGFfZmllbGRzLAoJYnVpbGRfY291bnRlcl9zZWN0aW9uX2RhdGFfdmFsdWUsIGJ1aWxkX2Z1bmN0aW9uX2luZm9fZmllbGRzLAoJYnVpbGRfZnVuY3Rpb25faW5mb192YWx1ZSwgYnVpbGRfZ2Nvdl9pbmZvX2ZpZWxkcywKCWJ1aWxkX2djb3ZfaW5mb192YWx1ZSk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGZpbmRfY291bnRlcnNfc2VjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShpbnN0cnVtZW50X2VkZ2VzLCBnZXRfZXhlY19jb3VudHMsIGNvbXB1dGVfYnJhbmNoX3Byb2JhYmlsaXRpZXMsCglicmFuY2hfcHJvYiwgY3JlYXRlX3Byb2ZpbGVyKTogTW9kaWZpZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBwcm9maWxlCglzZWN0aW9ucy4KCjIwMDMtMDItMjYgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChjb21wdXRlX2ZyYW1lX3NpemUpOiBEb24ndCBhc3N1bWUgUFJFRkVSUkVEX1NUQUNLX0JPVU5EQVJZCglpcyA4ICogU1RBQ0tfQk9VTkRBUlkuCgkqIHBhLmggKFBSRUZFUlJFRF9TVEFDS19CT1VOREFSWSk6IENoYW5nZSB0byAxMjggb24gNjQtYml0IHBvcnQuCgoyMDAzLTAyLTI2ICBNaWNoYWVsIE1hdHogIDxtYXR6QHN1c2UuZGU+CgoJKiByYS1jb2xvcml6ZS5jIChtZXJnZV9tb3Zlcyk6IEZpeCBsaXN0IGhhbmRsaW5nLgoKMjAwMy0wMi0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGlzX2xvYWRfYWRkcmVzcyk6IFJlbmFtZSB0by4uLgoJKGFybV9tZW1vcnlfbG9hZF9wKSAuLi4gdGhpcyBhbmQgbWFrZSBpdCBjaGVjayBmb3IgU1VCUkVHcyBhbmQKCWNvbnN0YW50IGxvYWRzIHRoYXQgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBsb2FkcyBmcm9tIHRoZQoJbWluaXBvb2wuCgkoaXNfY2lycnVzX2luc24pOiBSZW5hbWUgdG8gLi4uCgkoYXJtX2NpcnJ1c19pbnNuX3ApOiAuLi4gdGhpcywgZm9yIGNvbnNpc3RlbmN5LiAgUmVwbGFjZSB0ZXN0CglvZiBDSVJSVVNfTk8gd2l0aCBDSVJSVVNfTk9ULgoJKGNpcnJ1c19yZW9yZyk6IFVzZSByZW5hbWVkIGZ1bmN0aW9ucy4KCShub3RlX2ludmFsaWRfY29uc3RhbnRzKTogQ2hhbmdlIGZyb20gYSB2b2lkIGZ1bmN0aW9uIHRvIGJvb2wuCglBZGQgYW4gZXh0cmEgcGFyYW1ldGVyLCBzYXlpbmcgd2hldGhlciB0aGUgZml4dXBzIHNob3VsZCBiZQoJcHVzaGVkLiAgUmV0dXJuIHRydWUgaWYgZml4dXBzIGFyZSBuZWVkZWQuCgkoYXJtX3Jlb3JnKTogVXNlIHJlbmFtZWQgZnVuY3Rpb25zLiAgVXNlIElOU05fUC4gIFJlcGxhY2UgdGVzdAoJb2YgQ0lSUlVTX05PIHdpdGggQ0lSUlVTX05PVC4KCSogY29uZmlnL2FybS9hcm0uaCAoRkxPQVRfV09SRFNfQklHX0VORElBTik6IE1lbnRpb24gdGhhdAoJb3RoZXIgZmxvYXRpbmcgcG9pbnQgY28tcHJvY2Vzc29ycyBjYW4gYWxzbyBhZmZlY3QgdGhpcy4KCSogY29uZmlnL2FybS9hcm0ubWQgKCJ0eXBlIiBhdHRyaWJ1dGUpOiBBZGQgbWF2X2Zhcml0aCBhbmQKCW1hdl9kbXVsdC4gIFJlcGxhY2UgcmVmZXJlbmNlcyB0byAiY2lycnVzX3R5cGUiIGF0dHJpYnV0ZSB3aXRoCgkidHlwZSIuCgkqIGNvbmZpZy9hcm0vY2lycnVzLm1kICgiY2lycnVzX2ZwdSIgYXR0cmlidXRlKTogRGVsZXRlLgoJKCJjaXJydXNfdHlwZSIgYXR0cmlidXRlKTogRGVsZXRlIC0gdXNlICJ0eXBlIiBpbnN0ZWFkLgoJKCJjaXJydXMiIGF0dHJpYnV0ZSk6IFJlcGxhY2UgJ25vJyB3aXRoICdub3QnIGFuZCAneWVzJyB3aXRoCgknbm9ybWFsJy4KCjIwMDMtMDItMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG9iamMtYWN0LmM6IEluY2x1ZGUgY2dyYXBoLmgKCShtYXJrX3JlZmVyZW5jZWRfbWV0aG9kcyk6IE5ldyBmdW5jdGlvbi4KCShvYmpjX2luaXQpOiBDYWxsIGl0LgoJKiBvYmpjLWxhbmcuYyAoTEFOR19IT09LU19DQUxMR1JBUEhfRVhQQU5EX0ZVTkNUSU9OKTogU2V0LgoKCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IEhvbm9yIGNhbl9kZWZlcl9wIGV2ZW4gaW4gdW5pdC1hdC1hLXRpbWUKCW1vZGUuCgoJKiBvcHRhYnMuYyAoZXhwYW5kX2ZpeCk6IERvIG5vdCB3aWRlbiB0aGUgaW5wdXQgb3BlcmFuZC4KCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9zdG9yZSk6ICBGaXggY3Jhc2ggd2hlbiBjb252ZXJ0aW5nIHNpbmdsZQoJcmVnaXN0ZXIgaW50byBjb21wbGV4IHJlZ2lzdGVyLgoKCSogTWFrZWZpbGUuaW4gKGp1bXAubywgcmVnY2xhc3MubywgYWxpYXMubyk6IEFkZCBkZXBlbmRlbmN5IG9uIHRpbWV2YXIuaAoJKiBhbGlhcy5jOiBJbmNsdWRlIHRpbWV2YXIuaAoJKGluaXRfYWxpYXNfYW5hbHlzaXMpOiAgU2V0IHRpbWV2YXIKCSoganVtcC5jOiBJbmNsdWRlIHRpbWV2YXIuaAoJKHJlYnVpbGRfanVtcF9sYWJlbHMpOiAgU2V0IHRpbWV2YXIKCSogcmVnY2Fsc3MuYzogSW5jbHVkZSB0aW1ldmFyLmgKCShyZWdfc2Nhbik6ICBTZXQgdGltZXZhcgoJKiB0aW1ldmFyLmRlZiAoVFZfQUxJQVNfQU5BTFlTSVMsIFRWX1JFR19TQ0FOLCBUVl9SRUJVSUxEX0pVTVApOiBOZXcKCjIwMDMtMDItMjYgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNzZS5jIChjb3VudF9yZWdfdXNhZ2UpOiBGaXggaGFuZGxpbmcgb2YgUkVHX0VRVUFMIG5vdGVzLgoKCSogTWFrZWZpbGUuaW4gKGxvb3AtdW5yb2xsLm8pOiBOZXcuCgkqIGNmZ2xvb3AuaCAoVUFQX1BFRUwsIFVBUF9VTlJPTEwsIFVBUF9VTlJPTExfQUxMKTogTmV3LgoJKHVucm9sbF9hbmRfcGVlbF9sb29wcyk6IERlY2xhcmUuCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfYW5hbHlzaXMpOiBGbGFnX3Vucm9sbF9sb29wcyByZW5hbWVkIHRvCglmbGFnX29sZF91bnJvbGxfbG9vcHMuCgkqIGxvb3AuYyAobG9vcF9pbnZhcmlhbnRfcCk6IERpdHRvLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBGbGFnX3Vucm9sbF9hbGxfbG9vcHMgcmVuYW1lZCB0bwoJZmxhZ19vbGRfdW5yb2xsX2FsbF9sb29wcy4KCSogZmxhZ3MuaCAoZmxhZ191bnJvbGxfbG9vcHMpOiBSZW5hbWVkIHRvIGZsYWdfb2xkX3Vucm9sbF9sb29wcy4KCShmbGFnX3Vucm9sbF9hbGxfbG9vcHMpOiBSZW5hbWVkIHRvIGZsYWdfb2xkX3Vucm9sbF9hbGxfbG9vcHMuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9VTlJPTExFRF9JTlNOUyk6IERlZmF1bHQgdmFsdWUgY2hhbmdlZC4KCShQQVJBTV9NQVhfQVZFUkFHRV9VTlJPTExFRF9JTlNOUywgUEFSQU1fTUFYX1VOUk9MTF9USU1FUywKCVBBUkFNX01BWF9QRUVMRURfSU5TTlMsIFBBUkFNX01BWF9QRUVMX1RJTUVTLAoJUEFSQU1fTUFYX0NPTVBMRVRFTFlfUEVFTEVEX0lOU05TLCBQQVJBTV9NQVhfQ09NUExFVEVMWV9QRUVMX1RJTUVTLAoJUEFSQU1fTUFYX09OQ0VfUEVFTEVEX0lOU05TKTogTmV3LgoJKiB0b3BsZXYuaCAoZmxhZ19vbGRfdW5yb2xsX2xvb3BzLCBmbGFnX29sZF91bnJvbGxfYWxsX2xvb3BzKTogTmV3LgoJKGZsYWdfdW5yb2xsX2xvb3BzLCBmbGFnX3Vucm9sbF9hbGxfbG9vcHMpOiBVc2VkIGZvciBuZXcgdW5yb2xsZXIKCWluc3RlYWQgb2Ygb2xkIG9uZS4KCShmbGFnX3BlZWxfbG9vcHMpOiBOZXcuCgkobGFuZ19pbmRlcGVuZGVudF9vcHRpb25zKTogVGhlIG5ldyBmbGFncyBhZGRlZC4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBuZXcgdW5yb2xsZXIuCgkocHJvY2Vzc19vcHRpb25zKTogU2V0dXAgZmxhZ3MgZm9yIGNvZXhpc3RlbmNlIG9mIG9sZCBhbmQgbmV3IHVucm9sbGVyLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyBvcHRpb25zLgoJKiBkb2MvcGFzc2VzLnRleGk6IERvY3VtZW50IG5ldyB1bnJvbGxlciBwYXNzLgoKMjAwMy0wMi0yNiAgRGF2aWQgQmlsbGluZ2h1cnN0IDxEYXZpZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tPgoKCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZQoKMjAwMy0wMi0yNiAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogU2V0IHJlZ19hdHRycyBmb3IgcGFyYW1ldGVycyBwYXNzZWQgaW4KCXJlZ2lzdGVycy4KCjIwMDMtMDItMjYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0Lzk2ODEKCSogdGxpbmsuYyAoc2Nhbl9saW5rZXJfb3V0cHV0KTogRHJvcCBsZWFkaW5nICcuJyBmcm9tIHN5bWJvbCBuYW1lcy4KCjIwMDMtMDItMjUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAveGNvZmYuaCAoQVNNX0ZJTEVfU1RBUlQpOiBEbyBub3QgZW1pdCBtYWNoaW5lCglwc2V1ZG8tb3AuCgoyMDAzLTAyLTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgsIHNpbXBsZnlfY29tcGFyaXNvbik6ICBVc2UgQ0MwX1AuCgkqIGNzZS5jIChpbnZhbGlkYXRlX3NraXBwZWRfc2V0KTogIExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoc3Vic3RfY29uc3RhbnRzKTogIExpa2V3aXNlLgoJKiBqdW1wLmMgKHJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cyk6ICBMaWtld2lzZS4KCSogbG9vcC5jIChjYW5vbmljYWxpemVfY29uZGl0aW9uKTogIExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiAgTGlrZXdpc2UuCgoyMDAzLTAyLTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmRlZiAoREVGX0xJQl9BTFdBWVNfQlVJTFRJTiwgREVGX1VOVVNFRF9CVUlMVElOKTogRGVsZXRlLgoJKGFicywgbGFicywgZmFicywgZmFic2YsIGZhYnNsLCBhYm9ydCwgZXhpdCwgX2V4aXQsIF9FeGl0KTogIFVzZQoJdGhlIGFwcHJvcHJpYXRlIG1hY3JvIHRvIGRlZmluZSBidWlsdC1pbiBmdW5jdGlvbi4KCShmbW9kLGZtb2RmLGZtb2RsKTogTmV3IGJ1aWx0LWluIGZ1bmN0aW9ucy4KCgkqIGRvYy9leHRlbmQudGV4aSAoZm1vZCxmbW9kZixmbW9kbCk6IERvY3VtZW50IG5ldyBidWlsdC1pbnMuCgoyMDAzLTAyLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChmdW5jdGlvbl9hcmcpOiBQYXNzIHZhcmlhYmxlIHNpemVkCglzdHJ1Y3R1cmVzIGNvcnJlY3RseSBvbiB0aGUgc3RhY2suCgoyMDAzLTAyLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY3NlX21vdmUyYWRkKTogVXNlIFNUUklDVF9MT1dfUEFSVCBpZiBQTFVTCglkb2VzIG5vdCByZWR1Y2UgdGhlIGNvc3Qgb2YgU0VULgoKMjAwMy0wMi0yNSAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCVBSIHRhcmdldC85NzMyCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZpcnN0X3JlZ190b19zYXZlKTogSGFuZGxlCglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTSBmb3IgLWZQSUMgdG9vLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkocnM2MDAwX2VtaXRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBNYWtlCglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTSBhIGZpeGVkIHJlZ2lzdGVyIGZvciAtZlBJQy4KCjIwMDMtMDItMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWFsLmMgKHJlYWxfdG9faW50ZWdlcjIpOiBGb3JjZSBvdmVyZmxvdyByZXN1bHQgb25seSBmb3IKCXVuc2lnbmVkIG92ZXJmbG93LgoKMjAwMy0wMi0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGdjc2UuYyAoY3Byb3BfanVtcCk6IFJldmVydCB0aGUgMjAwMy0wMi0yMyBjaGFuZ2UuCgoyMDAzLTAyLTI1ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAdG9rZS50b3JvbnRvLnJlZGhhdC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNjaGVkLWViYi5jIChhZGRfZGVwc19mb3Jfcmlza3lfaW5zbnMpOiBBZGQgdGhlIGRlcGVuZGVuY2Ugd2hlbgoJdGhlcmUgaXMgbm8gc2ltaWxhciBsb2FkLgoKMjAwMy0wMi0yNSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNjaGVkLWludC5oIChJTlNOX1RSQVBfQ0xBU1MsIFdPUlNUX0NMQVNTKTogTW92ZSB0aGVtIGZyb20KCXNjaGVkLXJnbi5jLgoJKGFkZF9mb3J3YXJkX2RlcGVuZGVuY2UpOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlLgoKCSogc2NoZWQtcmduLmMgKElOU05fVFJBUF9DTEFTUywgV09SU1RfQ0xBU1MpOiBNb3ZlIHRoZW0gdG8KCXNjaGVkLWluaXQuaC4KCShDT05TVF9CQVNFRF9BRERSRVNTX1AsIG1heV90cmFwX2V4cCwgaGFpZmFfY2xhc3NpZnlfaW5zbik6IE1vdmUKCXRoZW0gdG8gaGFpZmEtc2NoZWQuYy4KCgkqIGhhaWZhLXNjaGVkLmMgKENPTlNUX0JBU0VEX0FERFJFU1NfUCwgbWF5X3RyYXBfZXhwLAoJaGFpZmFfY2xhc3NpZnlfaW5zbik6IE1vdmUgdGhlbSBmcm9tIHNjaGVkLXJnbi5jLgoKCSogc2NoZWQtZGVwcy5jIChhZGRfZGVwZW5kZW5jZSk6IFJldHVybiBmbGFnIG9mIGNyZWF0aW5nIGEgbmV3CgllbnRyeS4KCShhZGRfZm9yd2FyZF9kZXBlbmRlbmNlKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXB1dGVfZm9yd2FyZF9kZXBlbmRlbmNlcyk6IFVzZSB0aGUgZnVuY3Rpb24uCgoJKiBzY2hlZC1lYmIuYyAoZWFybGllc3RfYmxvY2tfd2l0aF9zaW1pbGlhcl9sb2FkKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9kZXBzX2Zvcl9yaXNreV9pbnNucyk6IE5ldyBmdW5jdGlvbi4KCShzY2hlZHVsZV9lYmIpOiBDYWxsIHRoZSBmdW5jdGlvbi4KCjIwMDMtMDItMjAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBSZW5hbWUgVEFSR0VUX1ZFQ1RPUl9UWVBFU19DT01QQVRJQkxFIHRvCglUQVJHRVRfVkVDVE9SX09QQVFVRV9QLiAgRG9jdW1lbnQgYWNjb3JkaW5nbHkuCgoJKiB0ZXN0c3VpdGUvZ2NjLmRnLzIwMDMwMjE4LTEuYzogQ2hlY2sgdGhhdCBpbml0aWFsaXphdGlvbiBvZgoJb3BhcXVlIHR5cGVzIGZhaWwuCgoJKiBjLXR5cGVjay5jIChjb21wdHlwZXMpOiBDaGFuZ2UgY2FsbCB0byB2ZWN0b3JfdHlwZXNfY29tcGF0aWJsZQoJdG8gdmVjdG9yX29wYXF1ZV9wLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBDYWxsIHZlY3Rvcl9vcGFxdWVfcCBpbnN0ZWFkIG9mCgl2ZWN0b3JfdHlwZXNfY29tcGF0aWJsZS4KCShyZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCk6IERpc2FsbG93IGluaXRpYWxpemF0aW9uIG9mIG9wYXF1ZQoJdHlwZXMuCgoJKiB0YXJnZXQtZGVmLmg6IFJlbW92ZSBUQVJHRVRfVkVDVE9SX1RZUEVTX0NPTVBBVElCTEUuCglEZWZpbmUgVEFSR0VUX1ZFQ1RPUl9PUEFRVUVfUC4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBTYW1lLgoKCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogUmVtb3ZlIHZlY3Rvcl90eXBlc19jb21wYXRpYmxlLgoJQWRkIHZlY3Rvcl9vcGFxdWVfcC4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9zcGVfdmVjdG9yX3R5cGVzX2NvbXBhdGlibGUpOgoJUmVtb3ZlLgoJKGlzX2V2NjRfb3BhcXVlX3R5cGUpOiBDaGVjayBmb3IgVEFSR0VUX1NQRSBhbmQgbWFrZSBzdXJlIHR5cGUgaXMKCWEgdmVjdG9yIHR5cGUuICBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gYm9vbC4KCShUQVJHRVRfVkVDVE9SX1RZUEVTX0NPTVBBVElCTEUpOiBSZW1vdmUuCgkoVEFSR0VUX1ZFQ1RPUl9PUEFRVUVfUCk6IERlZmluZS4KCgkqIGNwL3BhcnNlci5jIChjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogQ2FsbCB2ZWN0b3Jfb3BhcXVlX3AKCXRhcmdldCBob29rLgoJSW5jbHVkZSB0YXJnZXQuaC4KCShjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogRml4IHR5cG8gaW4gZnVuY3Rpb24gY29tbWVudHMuCgoyMDAzLTAyLTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5pbiAobGNtLm8pOiAgQWRkIGRlcGVuZGVuY3kgb24gZnVuY3Rpb24uaAoJKiBsY20uYyAoZnVuY3Rpb24uaCk6IEluY2x1ZGUuCgkqIGkzODYuYyAobWFjaGluZV9mdW5jdGlvbiwgaXg4Nl9zdGFja19sb2NhbHMsCgkqIGl4ODZfc2F2ZV92YXJyYXJnc19yZWdpc3RlcnMpIDogTW92ZSB0bwoJLi4uCgkqIGkzODYuaCAobWFjaGluZV9mdW5jdGlvbiwgaXg4Nl9zdGFja19sb2NhbHMsCglpeDg2X3NhdmVfdmFycmFyZ3NfcmVnaXN0ZXJzKTogLi4uIGhlcmU7IGFkZCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZwoJKGl4ODZfb3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBOZXcuCgkqIGkzODYubWQgKGZpeCBwYXR0ZXJucyk6IFNldCBpeDg2X29wdGltaXplX21vZGVfc3dpdGNoaW5nCgoyMDAzLTAyLTI1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2QzMHYvZDMwdi5jIChkMzB2X2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogRml4IHR5cG8uICBOYW1lCglvZiBmb3VydGggYXJnIGlzICdmbmRlY2wnIG5vdCAnaW5kaXJlY3QnLiAgVXBkYXRlIGNvbW1lbnQKCWRlc2NyaWJpbmcgdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KCjIwMDMtMDItMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2hpZnRfY29uc3QpOiAgRml4IHByZXZpb3VzIHBhdGNoLgoKMjAwMy0wMi0yNCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGkzODYubWQgKHRlc3RkaV8xX3JleDY0KTogRGlzY291cmFnZSByZWxvYWQgZnJvbSB1c2luZyB0aGUgJWVheAoJYWx0ZXJuYXRpdmUuCgkodGVzdHNpXzEsIHRlc3RoaV8xLCB0ZXN0cWlfMSk6IExpa2V3aXNlLgoKMjAwMy0wMi0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvYWxwaGEvb3NmLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBSZW5hbWUKCV9fRVhURVJOX1BSRUZJWCB0byBfX1BSQUdNQV9FWFRFUk5fUFJFRklYLgoJKiBkb2MvZXh0ZW5kLnRleGkgKFRydTY0IFByYWdtYXMpOiBSZWZsZWN0IHRoaXMuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhbHBoYV9fX2V4dGVybl9wcmVmaXgpOiBJbmRpY2F0ZSAjcHJhZ21hCglleHRlcm5fcHJlZml4IHN1cHBvcnQgZm9yIFRydTY0IFVOSVggVjUgPHN5cy9zdGF0Lmg+LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvc3RhdC5oIFtBTFBIQV9fX0VYVEVSTl9QUkVGSVhfQ0hFQ0tdOiBOZXcKCXRlc3RjYXNlLgoJRml4ZXMgUFIgYy81MDU5LCBjLzYxMjYsIG90aGVyLzk2NzEuCgoyMDAzLTAyLTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGdjYy5jIChkb19zcGVjXzEpIFsneyddOiAgSGFuZGxlIHBlbmRpbmcgYXJndW1lbnQgdXBvbiByZXR1cm4KCWZyb20gaGFuZGxlX2JyYWNlcyBpbiAiJXsuLi59Ii4KCjIwMDMtMDItMjQgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKFRBUkdFVF9IQVZFX1RMUyk6IENvbmRpdGlvbmFsbHkgZGVmaW5lLgoJKHByZXBhcmVfbW92ZV9vcGVyYW5kcyk6IEhhbmRsZSBUTFMgb3BlcmFuZHMuCgkodGxzX3N5bWJvbGljX29wZXJhbmQpOiBOZXcuCgkobm9ucGljX3N5bWJvbF9tZW50aW9uZWRfcCk6IEhhbmRsZSBUTFMgVU5TUEVDcy4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogRG8gbm90aGluZyBmb3IgdGhlIFRMUyBzeW1ib2wuCgkoc2hfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEhhbmRsZSBUTFMgY2FzZS4KCShzaF9zdHJpcF9uYW1lX2VuY29kaW5nKTogRHJvcCBUTFMgZW5jb2RpbmcuCgkqIGNvbmZpZy9zaC9zaC1wcm90b3MuaCAodGxzX3N5bWJvbGljX29wZXJhbmQpOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvc2gvc2guaCAoU0hfVExTX0VOQ09ESU5HKTogRGVmaW5lLgoJKFRMU19TWU1OQU1FX1AsIFNUUklQX1RMU19FTkNPRElORyk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBEcm9wIFRMUyBlbmNvZGluZy4KCShPVVRQVVRfQUREUl9DT05TVF9FWFRSQSk6IEhhbmRsZSBUTFMgVU5TUEVDcy4KCSogY29uZmlnL3NoL3NoLm1kOiBEZWZpbmUgVExTIFVOU1BFQyBjb25zdGFudHMuCgkodHlwZSk6IEFkZCB0bHNfbG9hZC4KCSgidGxzX2dsb2JhbF9keW5hbWljIiwgInRsc19sb2NhbF9keW5hbWljIik6IE5ldyBpbnNucy4KCSgic3ltMkRUUE9GRiIsICJzeW1EVFBPRkYycmVnIiwgInN5bTJHT1RUUE9GRiIpOiBOZXcgZXhwYW5kZXJzLgoJKCJ0bHNfaW5pdGlhbF9leGVjIik6IE5ldyBpbnNuLgoJKCJzeW0yVFBPRkYiLCAic3ltVFBPRkYycmVnIik6IE5ldyBleHBhbmRlcnMuCgkoImxvYWRfZ2JyIik6IE5ldyBpbnNuLgoKCSogY29uZmlndXJlLmluIChIQVZFX0FTX1RMUyk6IEFkZCBzaC0qLSogYW5kIHNoWzM0XSotKi0qIGNhc2VzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTAyLTI0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIDkyOTcsIFBSIDk3MjIKCSogY2FsbHMuYyAoc3RvcmVfb25lX2FyZyk6IFJldmVydCAxOTk5LTAyLTE2IGNoYW5nZS4gIFJldmVydAoJMjAwMC0xMi0xNyBjaGFuZ2UuICBQYXNzIEVYUEFORF9TVEFDS19QQVJNIHRvIGV4cGFuZF9leHByLgoJKiBleHByLmggKGVudW0gZXhwYW5kX21vZGlmaWVyKTogRGVmaW5lIEVYUEFORF9TVEFDS19QQVJNLgoJKGVudW0gYmxvY2tfb3BfbWV0aG9kcyk6IFJlb3JkZXIgZm9yIGJldHRlciBzdG9yZV9leHByIG9wdGltaXphdGlvbi4KCSogZXhwci5jIChzdG9yZV9leHByKTogVGVzdCBiaXQgMSBvZiAid2FudF92YWx1ZSIgZm9yIGNhbGwgcGFyYW0KCXN0b3JlcywgdGVzdCBiaXQgMCBmb3Igb3JpZ2luYWwgd2FudF92YWx1ZSBtZWFuaW5nLiAgUGFzcwoJQkxPQ0tfT1BfQ0FMTF9QQVJNIHRvIGVtaXRfYmxvY2tfbW92ZSB3aGVuIGJpdCAxIHNldC4gIEFkanVzdAoJcmVjdXJzaXZlIGNhbGxzLCBhbmQgY2FsbHMgdG8gZXhwYW5kX3BhcmFtLgoJKGV4cGFuZF9leHByKTogSGFuZGxlIEVYUEFORF9TVEFDS19QQVJNIG1vZGlmaWVyLiAgV2hlbiBjc2UKCWV4cGVjdGVkLCBzZXQgdGFyZ2V0IHRvIDAgcmF0aGVyIHRoYW4gdG8gc3VidGFyZ2V0LiAgRm9ybWF0dGluZy4KCjIwMDMtMDItMjMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnY3NlLmMgKGNwcm9wX2p1bXApOiBVc2UgdGhlIFJFR19FUVVBTCBub3RlIGlmIGF2YWlsYWJsZS4KCjIwMDMtMDItMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aSAoZ2djLW1pbi1leHBhbmQsIGdnYy1taW4taGVhcHNpemUpOiBEb2N1bWVudAoJbmV3IGRlZmF1bHQgYmVoYXZpb3IuCgkqIGdnYy1jb21tb24uYzogSW5jbHVkZSBzeXMvcmVzb3VyY2UuaC4KCShnZ2NfcmxpbWl0X2JvdW5kKTogTmV3IGZ1bmN0aW9uLgoJKGdnY19taW5fZXhwYW5kX2hldXJpc3RpYywgZ2djX21pbl9oZWFwc2l6ZV9oZXVyaXN0aWMpOiBVcGRhdGUKCWRlZmF1bHRzIHRvIGFjY291bnQgZm9yIHJsaW1pdHMuCgoyMDAzLTAyLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaTM4Ni5jLCBpMzg2LmggKFRVTkVNQVNLKTogUmVuYW1lIGZyb20gQ1BVTUFTSy4KCjIwMDMtMDItMjIgIEtlbGxleSBDb29rIDxrZWxsZXlAZHdob29wcy5pbmZvPgoKCSogaTM4Ni5oLCBpMzg2LmMsIGkzODYubWQgKGl4ODZfdHVuZSk6IFJlbmFtZSBmcm9tIGl4ODZfY3B1LgoJKGl4ODZfdHVuZV9zdHJpbmcpOiBSZW5hbWUgZnJvbSBpeDg2X2NwdV9zdHJpbmcuCgoyMDAzLTAyLTIyICBLZWxsZXkgQ29vayA8a2VsbGV5Y29va0Bjb21jYXN0Lm5ldD4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogUmVwbGFjZSAibWNwdSIgd2l0aCAibXR1bmUiLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9PUFRJT05TKTogTGlrZXdpc2UuCgkoQ0MxX0NQVV9TUEVDKTogTGlrZXdpc2UuIE5ldyB3YXJuaW5nIGZvciAiLW1jcHUiLgoJKiBkb2MvaW52b2tlLnRleGkgKGkzODYgYW5kIHg4Ni02NCBPcHRpb25zKTogUmVwbGFjZSAibWNwdSIKCXdpdGggIm10dW5lIi4gIE5vdGUgdGhhdCAibWNwdSIgaXMgYSBkZXByZWNhdGVkIHN5bm9ueW0gZm9yICJtdHVuZSIuCgoyMDAzLTAyLTIzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY29uZmlnLmdjYzogRGVsZXRlIHJlZmVyZW5jZXMgdG8gbTY4ay90LWxpbnV4IGFuZAoJbTY4ay90LWxpbnV4LWFvdXQuCgkqIGNvbmZpZy9tNjhrL3QtbGludXgsIGNvbmZpZy9tNjhrL3QtbGludXgtYW91dDogUmVtb3ZlZC4KCjIwMDMtMDItMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogIEFwcGx5IGZvdGdvdHRlbiBodW5rCglvZiB0cmFjayBzY2hlZHVsaW5nIHBhdGNoLgoKMjAwMy0wMi0yMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29uZmlnL2xpbnV4LmggKFRBUkdFVF9IQVNfRl9TRVRMS1cpOiBEZWZpbmUuCgkqIGNvbmZpZy9hbHBoYS9saW51eC5oIChUQVJHRVRfSEFTX0ZfU0VUTEtXKTogTGlrZXdpc2UKCjIwMDMtMDItMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGMtZGVjbC5jIChjX2V4cGFuZF9ib2R5XzEpOiBGaXguCgoyMDAzLTAyLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHBtZWQuYyAoZXhwYW5kX2Rpdm1vZCk6IFVuZG8gc2lnbiBleHRlbnNpb25zIGZvciB1bnNpZ25lZCBvcGVyYW5kcwoKCSogY2ZnY2xlYW51cC5jICh0cnlfZm9yd2FyZF9lZGdlcyk6ICBEb24ndCBjaGVjayBsb29wIHN0cnVjdHVyZXMKCXdoZW4gbm90IG9wdGltaXppbmcuCgkoY2xlYW51cF9jZmcpOiBEbyBub3QgaXRlcmF0ZSB0cm91Z2h0IGRlbGV0ZV90cml2aWFsbHlfZGVhZF9pbnNucwoJd2hlbiBub3QgZXhwZW5zaXZlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6ICBEdXBsaWNhdGUgbG9vcCBoZWFkZXJzIG9ubHkgd2hlbgoJb3B0aW1pemluZzsgIERlbGV0ZSB0cml2aWFsbHkgZGVhZCBpbnNucyBlYXJseTsgZml4IG9wdGltaXplIGNoZWNrLgoKCSogTWFrZWZpbGUuaW4gKGMtZGVjbC5vLCBjLW9iamMtY29tbW9uLm8sIGNncmFwaC5vLCB0cmVlLWlubGluZS5vKTogQWRkCglkZXBlbmRlbmN5IG9uIGNncmFwaC5oCgkqIGMtZGVjbC5jOiBJbmNsdWRlIGNncmFwaC5oCgkoZmluaXNoX2Z1bmN0aW9uKTogVXBkYXRlIGNhbGwgb2YgdHJlZV9pbmxpbmFibGVfZnVuY3Rpb25fcC4KCSogYy1vYmpjLWNvbW1vbi5jOiBJbmNsdWRlIGNncmFwaC5oCgkqIGNncmFwaC5oOiBOZXcgZmlsZS4KCSogY2dyYXBodW5pdC5jOiBOZXcgZmlsZS4KCSogY2dyYXBoLmMgKGNncmFwaF9ub2RlLCBjZ3JhcGhfZWRnZSk6IE1vdmUgaW50byBjZ3JhcGguaAoJKGNncmFwaF9ub2RlcywgY2dyYXBoX25fbm9kZXMpOiBHbG9iYWxpemUuCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uLCBjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdAoJY2dyYXBoX2NyZWF0ZV9lZGdlcywgY2dyYXBoX29wdGltaXplLCBjZ3JhcGhfbWFya19uZWVkZWRfbm9kZSk6CglNb3ZlIGludG8gY2dyYXBodW5pdC5jCgkqIHRyZWUtaW5saW5lLmM6IEluY2x1ZGUgY2dyYXBoLmgKCSogdHJlZS1pbmxpbmUuYzogSW5jbHVkZSBjZ3JhcGguaAoKMjAwMy0wMi0yMiAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZDogVXNlIGdlbl9sb3dwYXJ0IGluc3RlYWQgb2YgZ2VuX3J0eF9SRUcKCWZvciBjb3B5aW5nIGEgcmVnaXN0ZXIuCgoyMDAzLTAyLTIyICBTdGV2ZW4gQm9zc2NoZXIgIDxzLmJvc3NjaGVyQHN0dWRlbnQudHVkZWxmdC5ubD4KCglQUiBvdGhlci8zNzgyCgkqIHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBJZiBmbGFnX2RldGFpbGVkX3N0YXRpc3RpY3MgaXMgc2V0LAoJdGhlbiBzZXQgdGltZV9yZXBvcnQgYXMgd2VsbC4KCglQUiBjLzg4MjgKCSoganVtcC5jIChuZXZlcl9yZWFjaGVkX3dhcm5pbmcpOiBEb24ndCBmYWxsIHRocm91Z2ggQkFSUlJJRVIKCWluc25zLiAgVXBkYXRlIGNvbW1lbnRzIHRvIHJlZmxlY3Qgd2hhdCB0aGUgZnVuY3Rpb24gcmVhbGx5IGRvZXMuCgoyMDAzLTAyLTIxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAob21pdF9vbmVfb3BlcmFuZCk6IE5vIGxvbmdlciBzdGF0aWMuCgkqIHRyZWUuaCAob21pdF9vbmVfb3BlcmFuZCk6IFByb3RvdHlwZSBoZXJlLgoJKGRpdl9hbmRfcm91bmRfZG91YmxlKTogS2VlcCBmb2xkLWNvbnN0LmMgcHJvdG90eXBlcyB0b2dldGhlci4KCSogYnVpbHRpbnMuYyAoYnVpbHRpbl9tYXRoZm5fY29kZSk6IEhhbmRsZSBiaW5hcnkgYnVpbHQtaW4KCWZ1bnRpb25zLCBzdWNoIGFzICJwb3ciIGFuZCAiYXRhbjIiLgoJKGZvbGRfYnVpbHRpbik6IE9wdGltaXplIGJvdGggcG93KHgsMC4wKSBhbmQgcG93KDEuMCx5KSB0byAxLjAuCglTaW1wbGlmeSBvcHRpbWl6YXRpb25zIHVzaW5nICJ0eXBlIiB0aGUgYnVpbHRpbidzIHJldHVybiB0eXBlLgoKMjAwMy0wMi0yMiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfcnR4X2Nvc3RzKTogQmxvY2tpZnkgZGFuZ2xpbmcgZWxzZS4KCUZpeCBmdW5jdGlvbmFsaXphdGlvbiB0eXBvLgoKCSogcmVnbW92ZS5jIChvcHRpbWl6ZV9yZWdfY29weV8xKTogRG8gbm90IHJlcGxhY2UgYSBoYXJkIHJlZ2lzdGVyCglpbiBhbiBhc20uCgoyMDAzLTAyLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZ2djLWNvbW1vbi5vKTogRGVwZW5kIG9uICQoUEFSQU1TX0gpCgkqIGRvYy9pbnZva2UudGV4aSAoZ2djLW1pbi1leHBhbmQsIGdnYy1taW4taGVhcHNpemUpOiBVcGRhdGUKCWRvY3VtZW50YXRpb24uCgkqIGdnYy1jb21tb24uYzogSW5jbHVkZSBwYXJhbXMuaAoJKGdnY19taW5fZXhwYW5kX2hldXJpc3RpYywgZ2djX21pbl9oZWFwc2l6ZV9oZXVyaXN0aWMsCglpbml0X2dnY19oZXVyaXN0aWNzKTogTmV3IGZ1bmN0aW9ucy4KCSogZ2djLmggKGdnY19taW5fZXhwYW5kX2hldXJpc3RpYywgZ2djX21pbl9oZWFwc2l6ZV9oZXVyaXN0aWMsCglpbml0X2dnY19oZXVyaXN0aWNzKTogUHJvdG90eXBlLgoJKiB0b3BsZXYuYyAocHJpbnRfdmVyc2lvbik6ICBPdXRwdXQgR0dDIGhldXJpc3RpY3MuCgkocGFyc2Vfb3B0aW9uc19hbmRfZGVmYXVsdF9mbGFncyk6IENhbGwgaW5pdF9nZ2NfaGV1cmlzdGljcy4KCjIwMDMtMDItMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoZGVmX2J1aWx0aW4pOiAgU3BlY2lhbCBjYXNlIDY0Yml0IGJ1aWx0aW5zLgoJKE1BU0tfU1NFMTY0LCBNQVNLX1NTRTI2NCk6IE5ldyBjb25zdGFudHMuCgkoYnVpbHRpbl9kZXNjcmlwdGlvbik6IEFkZCA2NGJpdCBidWlsdGlucy4KCShpeDg2X2luaXRfbW14X3NzZV9idWlsdGlucyk6IExpa2V3aXNlLgoJKiBpMzg2LmggKGVudW0gaXg4Nl9idWlsdGlucyk6IExpa2V3aXNlLgoJKiBpMzg2Lm1kIChjdnRzczJzaXEsIGN2dHRzczJzaXEsIGN2dHNkMnNpcSwgY3Z0dHNkMnNpcSwgY3Z0c2kyc2RxLAoJc3NlMl9tb3ZxMmRxX3JleDY0LCBzc2UyX21vdnNxMnFfcmV4NjQpOiBOZXcuCgkoc3NlMl9tb3ZxMmRxLCBzc2UyX21vdnNxMnEpOiBEaXNhYmxlIGZvciA2NGJpdC4KCSogbW1pbnRyaW4uaCAoX21tX2N2dHNpNjR4X3NpNjQsIF9tbV9zZXRfcGk2NHgsIF9tbV9jdnRzaTY0X3NpNjR4KTogTmV3LgoJKiB4bW1pbnRyaW4uaCAoX21tX2N2dHNzX3NpNjR4LCBfbW1fY3Z0dHNzX3NpNjR4LCBfbW1fY3Z0c2k2NHhfc3MsCglfbW1fc2V0X2VwaTY0eCwgX21tX3NldDFfZXBpNjR4LCBfbW1fY3Z0c2Rfc2k2NHgsIF9tbV9jdnR0c2Rfc2k2NHgsCglfbW1fY3Z0c2k2NHhfc2QsIF9tbV9jdnRzaTY0eF9zaTEyOCwgX21tX2N2dHNpMTI4X3NpNjR4KTogTmV3LgoKMjAwMy0wMi0yMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChidWlsdGluX2Rlc2NyaXB0aW9uKTogQWRkIF9fYnVpbHRpbl9pYTMyX3BhZGRxIGFuZAoJX19idWlsdGluX2lhMzJfcHN1YnEuIEZpeCBfX2J1aWx0aW5faWEzMl9wYWRkcTEyOAoJIGFuZCBfX2J1aWx0aW5faWEzMl9wc3VicTEyOC4KCSogaTM4Ni5oIChJWDg2X0JVSUxUSU5fUEFERFEsIElYODZfQlVJTFRJTl9QU1VCUSk6IE5ldy4KCSogaTM4Ni5tZCAoYWRkdiosIG1teF9pb3IqLCBtbXhfeG9lKiwgbW14X2FuZCopOiBBZGQgbWlzc2luZyAnJScuCgkobW14X2FkZGRpMywgbW14X3N1YmRpMyk6IE5ldy4KCSogbW1pbnRyaW4uaCAoX21tX2FkZF9zaTY0LCBfbW1fc3ViX3NpNjQpOiBOZXcuCgkqIHhtbWludHJpbi5oIChfbW1fbW92ZXBpNjRfcGk2NCk6IE5ldy4KCShfbW1fYWRkX2VwaTY0LCBfbW1fc3ViX2VwaTY0KTogZml4LgoJKF9tbV9tdWxfcHUxNik6IFJlbmFtZSB0by4uLgoJKF9tbV9tdWxfc3UzMik6IC4uLiB0aGlzIG9uZS4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2V4cGVjdCk6ICBEbyBub3QgcHJlZGljdAoJZmxhZ19ndWVzc19icmFuY2hfcHJvYiBpcyBub3Qgc2V0LgoJKiBjLXNlbWFudGljcy5jIChleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKiBwcmVkaWN0LmMgKHByZWRpY3RfaW5zbik6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9jb250aW51ZV9sb29wKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG8gbm90IGNhbGwKCW5vdGVfcHJlZGljdGlvbl90b19icl9wcm9iIGFuZCBub3RlX3ByZWRpY3Rpb25fdG9fYnJfcHJvYgoJd2hlbiBub3Qgb3B0aW1pemluZy4KCjIwMDMtMDItMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ3J0bC5jIChjb21taXRfZWRnZV9pbnNlcnRpb25zKTogIENhbGwKCWZpbmRfbWFueV9zdWJfYmFzaWNfYmxvY2sgb25seSB3aGVuIHNvbWUgY29kZSBoYXMgYmVlbiBlbWl0dGVkLgoJKGNvbW1pdF9lZGdlX2luc2VydGlvbnNfd2F0Y2hfY2FsbHMpOiBCcmluZyBpbnRvIHN5bmMgd2l0aAoJY29tbWl0X2VkZ2VfaW5zZXJ0aW9ucwoKMjAwMy0wMi0yMSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC5oIChPVkVSUklERV9PUFRJT05TKTogRml4IGNvZGUgdGhhdCBjbGVhcnMgJ2UnIHJlZ2lzdGVyIGNsYXNzLgoKCSogc2gubWQgKGJpbmFyeV9zZl9vcCk6IFVzZSBleHRyYSBjb25zdGFudCBvcGVyYW5kIGluc3RlYWQgb2YKCW5lZ2F0aW5nIGNvbnN0YW50IG9wZXJhbmQgNC4KCSogc2guYyAoc2hfZXhwYW5kX2Jpbm9wX3Yyc2YpOiBTdXBwbHkgaXQuCgoyMDAzLTAyLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgbGV4ZXJfc3RhdGUpOiBBZGQgZGlyZWN0aXZlX3dhbnRzX3BhZGRpbmcuCgkqIGNwcGxpYi5jIChfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBTZXQgZGlyZWN0aXZlX3dhbnRzX3BhZGRpbmcKCWZvciBkaXJlY3RpdmVzIG9mIHR5cGUgSU5DTC4KCShnbHVlX2hlYWRlcl9uYW1lLCBwYXJzZV9pbmNsdWRlKTogVXNlIGdldF90b2tlbl9ub19wYWRkaW5nLgoJKiBjcHBtYWNyby5jIChyZXBsYWNlX2FyZ3MpOiBJZiBkaXJlY3RpdmVfd2FudHNfcGFkZGluZywKCXByb3ZpZGUgcGFkZGluZyB0b2tlbnMuCgoyMDAzLTAyLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IE5ldy4KCjIwMDMtMDItMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ3J0bC5jIChjb21taXRfb25lX2VkZ2VfaW5zZXJ0aW9uKTogT25seSBtYXJrIEJCIGZvciBzcGxpdHRpbmcuCgkoY29tbWl0X2VkZ2VfaW5zZXJ0aW9ucyk6IENhbGwgZmluZF9tYW55X3N1Yl9iYXNpY19ibG9ja3MKCgkqIHJlZy1zdGFjay5jIChjb252ZXJ0X3JlZ3MpOiBDbGVheCBhdXggZm9yIGJsb2Nrcy4KCjIwMDMtMDItMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRvcGxldi5jIChwYXJzZV9vcHRpb25zX2FuZF9kZWZhdWx0X2ZsYWdzKTogVW5kbyBhY2NpZGVudGFsIGNvbW1pdC4KCjIwMDMtMDItMjEgIEdsZW4gTmFrYW11cmEgIDxnbGVuQGltb2R1bG8uY29tPgoKCVBSIG9wdGltaXphdGlvbi84NjEzCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogRW1pdCBwb3N0aW5jcmVtZW50cyBiZWZvcmUgZXhwYW5kaW5nCglidWlsdGluIGZ1bmN0aW9ucy4KCjIwMDMtMDItMjEgIEJlbiBFbGxpc3RvbiAgPGJqZUByZWRoYXQuY29tPgoKCVBSIG90aGVyLzU2MzQKCSogZG9jL2luc3RhbGwudGV4aSAoQ29uZmlndXJhdGlvbik6IEV4cGxhaW4gdXNpbmcgJEhPTUUgaW5zdGVhZCBvZgoJdGhlIH4gbWV0YWNoYXJhY3RlciB3aGVuIHJlZmVycmluZyB0byBob21lIGRpcmVjdG9yaWVzLgoKMjAwMy0wMi0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKFRBUkdFVF9TWVNURU1fUk9PVCk6IFNldCBkZWZhdWx0IHRvCgkke2V4ZWNfcHJlZml4fS8ke3RhcmdldF9hbGlhc30vc3lzLXJvb3QuICBNYXRjaCBleHBsaWNpdAoJJyR7ZXhlY19wcmVmaXh9JyAoaW4gYWRkaXRpb24gdG8gdGhlIGV4cGFuc2lvbiB0aGVyZW9mKSBhcwoJcmVsb2NhdGFibGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDMtMDItMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGFkZGhpM19pbmNkZWMpOiBDaGFuZ2UgdGhlIG5hbWUgdG8KCSphZGRoaTNfaW5jZGVjLgoJKGFkZHNpM19pbmNkZWMpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gKmFkZHNpM19pbmNkZWMuCgoyMDAzLTAyLTIwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cGxvdy5jIChmb3JjZV9yZWcpOiBBdm9pZCB1c2VsZXNzIFJFR19FUVVBTCBub3Rlcy4KCjIwMDMtMDItMjAgIFRvb24gTW9lbmUgIDx0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sPgoKCVBSIGZvcnRyYW4vOTAzOAoJKiBjLW9wdHMuYyAoc2FuaXRpemVfY3BwX29wdHMpOiBBZGQgRm9ydHJhbiBmcm9udCBlbmQKCW9wdGlvbnMgdG8gYmUgaWdub3JlZC4KCShjX2NvbW1vbl9kZWNvZGVfb3B0aW9uKTogSWdub3JlIHRoZW0gd2hlbiBwcmVwcm9jZXNzaW5nLgoKMjAwMy0wMi0yMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKGZsYWdfc2NoZWQyX3VzZV9zdXBlcmJsb2NrcywgZmxhZ19zY2hlZDJfdXNlX3RyYWNlcyk6IE5ldwoJZ2xvYmFsIHZhcmlhYmxlcy4KCShsYW5nX2luZGVwZW5kZW50X29wdGlvbnMpOiAgQWRkIC1mc2NoZWQyLXVzZS1zdXBlcmJsb2NrcwoJLWZzY2VkMi11c2UtdHJhY2VzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEZWFsIHdpdGggaXQuCgkqIGludm9rZS50ZXhpICgtZnNjaGVkMi11c2UtdHJhY2VzLCBmc2NoZWQyLXVzZS1zdXBlcmJsb2Nrcyk6ICBEZWNsYXJlLgoJKiBmbGFncy5oIChmbGFnX3NjaGVkMl91c2Vfc3VwZXJibG9ja3MsIGZsYWdfc2NoZWQyX3VzZV90cmFjZXMpOgoJRGVjbGFyZS4KCSogcnRsLmggKHJlZ190b19zdGFjayk6ICBVcGRhdGUgcHJvdG90eXBlLgoJKiByZWctc3RhY2suYyAocmVnX3RvX3N0YWNrKTogUmV0dXJuIHdoZW4gc29tZXRoaW5nIGhhcyBjaGFuZ2VkOwoJdXBkYXRlIGxpdmVuZXNzIHdoZW4gZXhlY3V0aW5nIGFmdGVyIHN1cGVyYmxvY2sgc2NoZWR1bGluZy4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2hpZnRfY29uc3QpOiAgU2ltcGxpZnkgZmV3IHNwZWNpYWwgY2FzZXMKCWludG8gY29uc3RhbnRzLgoKMjAwMy0wMi0yMCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IChhdHRyICJ0eXBlIik6IEFkZCBmYXN0X2NvbXBhcmUuCgkoYWRkLixzdWJmLixuZWcuKTogQ2hhbmdlIGF0dHJpYnV0ZSB0byBmYXN0X2NvbXBhcmUuCglBbGwgREZBIGRlc2NyaXB0aW9ucyB1cGRhdGVkLgoKMjAwMy0wMi0yMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglDaGFuZ2UgYmFzZSBjbGFzcyBhY2Nlc3MgcmVwcmVzZW50YXRpb24uCgkqIHRyZWUuaCAoVFJFRV9WSUFfUFVCTElDLCBUUkVFX1ZJQV9QUk9URUNURUQsCglUUkVFX1ZJQV9QUklWQVRFKTogUmVtb3ZlLgoJKEJJTkZPX0JBU0VBQ0NFU1NFUyk6IE5ldyBiaW5mbyBlbHQuCgkoQklORk9fQkFTRUFDQ0VTUyk6IE5ldyBhY2Nlc3Nvci4KCShCSU5GT19FTFRTKTogSW5jcmVhc2UuCgkoVElfQUNDRVNTX1BVQkxJQywgVElfQUNDRVNTX1BST1RFQ1RFRCwgVElfQUNDRVNTX1BSSVZBVEUpOiBOZXcuCgkoYWNjZXNzX3B1YmxpY19ub2RlLCBhY2Nlc3NfcHJvdGVjdGVkX25vZGUsCglhY2Nlc3NfcHJpdmF0ZV9ub2RlKTogTmV3IGdsb2JhbCBub2Rlcy4KCSogdHJlZS5jIChidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogSW5pdGlhbGl6ZSBhY2Nlc3Mgbm9kZXMuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IEFkanVzdC4KCSogZHdhcmYyb3V0LmMgKGdlbl9pbmhlcml0YW5jZV9kaWUpOiBBZGQgYWNjZXNzIHBhcmFtZXRlci4KCShnZW5fbWVtYmVyX2RpZSk6IEFkanVzdC4KCSogZHdhcmZvdXQuYyAob3V0cHV0X2luaGVyaXRhbmNlX2RpZSk6IEFSRyBpcyBhcnJheSBvZiB0d28gdHJlZXMuCgkob3V0cHV0X3R5cGUpOiBBZGp1c3QuCgkqIHRyZWUtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogQWRqdXN0IGJpbmZvIGR1bXBpbmcuCgoJQ2hhbmdlIGJhc2UgY2xhc3MgYWNjZXNzIHJlcHJlc2VudGF0aW9uLiBTaGFyZSB2aXJ0dWFsIGJhc2UKCWJpbmZvcy4KCSogY3AvY2FsbC5jIChidWlsZF9zcGVjaWFsX21lbWJlcl9jYWxsKTogUmVtb3ZlIGJpbmZvX2Zvcl92YmFzZQoJY2FsbC4KCSogY3AvY2xhc3MuYyAoYnVpbGRfYmFzZV9wYXRoKTogTGlrZXdpc2UuCgkoYnVpbGRfcHJpbWFyeV92dGFibGUpOiBBZGp1c3QgQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQgdXNlLgoJKGJ1aWxkX3NlY29uZGFyeV92dGFibGUpOiBSZW1vdmUgRk9SX1RZUEUgYXJnLiBBZGp1c3QuCgkobWFrZV9uZXdfdnRhYmxlKTogQWRqdXN0LgoJKGZvcmNlX2Nhbm9uaWNhbF9iaW5mb19yKTogRGVsZXRlLgoJKGZvcmNlX2Nhbm9uaWNhbF9iaW5mbyk6IERlbGV0ZS4KCShtYXJrX3ByaW1hcnlfdmlydHVhbF9iYXNlKTogRGVsZXRlLgoJKGRmc191bnNoYXJlZF92aXJ0dWFsX2Jhc2VzKTogRGVsZXRlLgoJKG1hcmtfcHJpbWFyeV9iYXNlcyk6IEFkanVzdC4KCShtYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzKTogQWRqdXN0LgoJKGRmc19iYXNlX2Rlcml2ZWRfZnJvbSk6IERlbGV0ZS4KCShiYXNlX2Rlcml2ZWRfZnJvbSk6IEZvbGxvdyB0aGUgaW5oZXJpdGFuY2UgY2hhaW4uCgkoc3RydWN0IGZpbmRfZmluYWxfb3ZlcnJpZGVyX2RhdGEpOiBBZGQgdnBhdGggbWVtYmVyLgoJKGRmc19maW5kX2ZpbmFsX292ZXJyaWRlcik6IEFkanVzdC4KCShkZnNfZmluZF9maW5hbF9vdmVycmlkZXJfcSwgZGZzX2ZpbmRfZmluYWxfb3ZlcnJpZGVyX3Bvc3QpOiBOZXcuCgkoZmluZF9maW5hbF9vdmVycmlkZXIpOiBBZGp1c3QuCgkodXBkYXRlX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBBZGp1c3QuCgkobW9kaWZ5X2FsbF92dGFibGVzKTogQWRqdXN0LgoJKHdhbGtfc3Vib2JqZWN0X29mZnNldHMpOiBBZGp1c3QuCgkobGF5b3V0X25vbmVtcHR5X2Jhc2Vfb3JfZmllbGQpOiBBZGp1c3QuCgkobGF5b3V0X2VtcHR5X2Jhc2UpOiBSZW1vdmUgbGFzdCBwYXJhbWV0ZXIuIEFkanVzdC4KCShidWlsZF9iYXNlX2ZpZWxkKTogQWRqdXN0LgoJKGJ1aWxkX2Jhc2VfZmllbGRzKTogQWRqdXN0LgoJKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogUmVtb3ZlIGxhc3QgcGFyYW1ldGVyLiBBZGp1c3QuCgkoZGZzX3NldF9vZmZzZXRfZm9yX3Vuc2hhcmVkX3ZiYXNlcyk6IERlbGV0ZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IEFkanVzdC4KCShmaW5pc2hfc3RydWN0XzEpOiBBZGp1c3QuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogRG9uJ3QgaW5pdCBhY2Nlc3Mgbm9kZXMuCgkoZGZzX2dldF9wcmltYXJ5X2JpbmZvKTogRGVsZXRlLgoJKGdldF9wcmltYXJ5X2JpbmZvKTogQWRqdXN0LgoJKGR1bXBfY2xhc3NfaGllcmFyY2h5X3IpOiBSZW1vdmUgbW9zdCBkZXJpdmVkIGFyZywgYWRkIElHTwoJcGFyYW1ldGVyLiBBZGp1c3QuCgkoZHVtcF9jbGFzc19oaWVyYXJjaHkpOiBBZGp1c3QuCgkoZmluaXNoX3Z0YmxzKTogQWRqdXN0LgoJKGdldF9vcmlnaW5hbF9iYXNlKTogRGVsZXRlLgoJKGJ1aWxkX3Z0dF9pbml0cyk6IEFkanVzdC4KCShkZnNfYnVpbGRfc2Vjb25kYXJ5X3ZwdHJfdnR0X2luaXRzKTogQWRqdXN0LgoJKGRmc19jdG9yX3Z0YWJsZV9iYXNlc19xdWV1ZV9wKTogQWRqdXN0LgoJKGJ1aWxkX2N0b3JfdnRibF9ncm91cCk6IEFkanVzdC4KCShkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogQWRqdXN0LgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBBZGp1c3QuCgkoYnVpbGRfdmJhc2Vfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IEFkanVzdC4KCShhZGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllc18xKTogQWRqdXN0LgoJKiBjcC9jcC10cmVlLmggKENQVElfQUNDRVNTXyopOiBSZW1vdmUuCgkoYWNjZXNzXypfbm9kZSk6IFJlbW92ZS4KCShDQU5PTklDQUxfQklORk8pOiBEZWxldGUuCgkoQklORk9fVU5TSEFSRURfTUFSS0VEKTogUmVtb3ZlLgoJKEJJTkZPX01BUktFRCk6IFNldCBMQU5HX0ZMQUdfMCBkaXJlY3RseS4KCShTRVRfQklORk9fTUFSS0VELCBDTEVBUl9CSU5GT19NQVJLRUQpOiBEZWxldGUuCgkoQklORk9fVlRBQkxFX1BBVEhfTUFSS0VEKTogU2V0IExBTkdfRkxBR18zIGRpcmVjdGx5LgoJKFNFVF9CSU5GT19WVEFCTEVfUEFUSF9NQVJLRUQsIENMRUFSX0JJTkZPX1ZUQUJMRV9QQVRIX01BUktFRCk6CglEZWxldGUuCgkoQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQpOiBTZXQgTEFOR19GTEFHXzQgZGlyZWN0bHkuCgkoU0VUX0JJTkZPX05FV19WVEFCTEVfTUFSS0VEKTogQWRqdXN0LgoJKFNFVF9CSU5GT19QVVNIREVDTFNfTUFSS0VELCBDTEVBUl9CSU5GT19QVVNIREVDTFNfTUFSS0VEKToKCURlbGV0ZS4KCShCSU5GT19ERVBFTkRFTlRfQkFTRV9QKTogTmV3LgoJKGRmc193YWxrLCBkZnNfd2Fsa19yZWFsKTogUXVldWUgZnVuY3Rpb24gdGFrZXMgZGVyaXZlZCBiaW5mbyBhbmQKCWluZGV4LgoJKG1hcmtlZHAsIHVubWFya2VkcCk6IEFkanVzdC4KCShkZnNfdW5tYXJrZWRfcmVhbF9iYXNlc19xdWV1ZV9wLCBkZnNfbWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCwKCWRmc19za2lwX3ZiYXNlcywgbWFya2VkX3Z0YWJsZV9wYXRocCwgdW5tYXJrZWRfdnRhYmxlX3BhdGhwLAoJZmluZF92YmFzZV9pbnN0YW5jZSwgYmluZm9fZm9yX3ZiYXNlKTogRGVsZXRlLgoJKGNvcGllZF9iaW5mbywgb3JpZ2luYWxfYmluZm8pOiBEZWNsYXJlLgoJKGZpbmlzaF9iYXNlX3NwZWNpZmllcik6IEFkZCB2aXJ0dWFsX3AgYXJnLgoJKHVuc2hhcmVfYmFzZV9iaW5mb3MpOiBEZWxldGUuCgkoY29weV9iYXNlX2JpbmZvcyk6IERlY2xhcmUuCgkocmV2ZXJzZV9wYXRoKTogRGVsZXRlLgoJKiBjcC9kZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogQWNjZXNzIGFuZCB2aXJ0dWFsaXR5IHBhc3NlZAoJZGlmZmVyZW50bHkuIERvbid0IGNvcHkgZGlyZWN0IGJhc2UgYmluZm9zIGhlcmUuIENhbGwKCWNvcHlfYmFzZV9iaW5mb3MuCgkqIGNwL2luaXQuYyAoZGZzX2luaXRpYWxpemVfdnRibF9wdHJzKTogQWRqdXN0LgoJKGluaXRpYWxpemVfdnRibF9wdHJzKTogQWRqdXN0LgoJKGV4cGFuZF9tZW1iZXJfaW5pdCk6IEFkanVzdC4KCSogY3AvcGFyc2VyLmMgKGNwX3BhcnNlcl9iYXNlX3NwZWNpZmllcik6IEFkanVzdC4KCSogY3AvcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBBZGp1c3QuCgkoZ2V0X3RlbXBsYXRlX2Jhc2VfcmVjdXJzaXZlKTogQWRqdXN0LgoJKiBjcC9ydHRpLmMgKGdldF9wc2V1ZG9fdGlfaW5pdCk6IEFkanVzdC4KCShnZXRfcHNldWRvX3RpX2Rlc2MpOiBBZGp1c3QuCgkqIGNwL3RyZWUuYyAodW5zaGFyZV9iYXNlX2JpbmZvcyk6IFJlbmFtZSB0byAuLi4KCShjb3B5X2Jhc2VfYmluZm9zKTogLi4uIGhlcmUsIHJlaW1wbGVtZW50LgoJKG1ha2VfYmluZm8pOiBTZXQgQklORk9fREVQRU5ERU5UX0JBU0VfUC4KCShyZXZlcnNlX3BhdGgpOiBSZW1vdmUuCgkqIGNwL3R5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IEFkanVzdCBlcnJvciBtZXNzYWdlcy4KCSogY3Avc2VtYW50aWNzLmMgKGZpbmlzaF9iYXNlX3NwZWNpZmllcik6IEFkZCB2aXJ0dWFsIGFyZywgYWRqdXN0LgoJKiBjcC9zZWFyY2guYyAobG9va3VwX2Jhc2Vfcik6IEFkanVzdC4KCShkeW5hbWljX2Nhc3RfYmFzZV9yZWN1cnNlKTogQWRqdXN0LgoJKGNhbm9uaWNhbF9iaW5mbyk6IFJlbW92ZS4KCShkZnNfY2Fub25pY2FsX3F1ZXVlKTogUmVtb3ZlLgoJKGRmc19hc3NlcnRfdW5tYXJrZWRfcCk6IFJlbW92ZS4KCShhc3NlcnRfY2Fub25pY2FsX3VubWFya2VkKTogUmVtb3ZlLgoJKHNoYXJlZF9tYXJrZWRfcCwgc2hhcmVkX3VubWFya2VkX3ApOiBSZW1vdmUuCgkoQklORk9fQUNDRVNTLCBTRVRfQklORk9fQUNDRVNTKTogVXNlIFRSRUVfUFVCTElDICYgVFJFRV9QUklWQVRFLgoJKGRmc19hY2Nlc3NfaW5fdHlwZSk6IEFkanVzdC4KCShhY2Nlc3NfaW5fdHlwZSk6IEFkanVzdC4KCShkZnNfYWNjZXNzaWJsZV9xdWV1ZV9wKTogQWRqdXN0LgoJKGRmc19hY2Nlc3NpYmxlX3ApOiBBZGp1c3QuCgkoaXNfc3Vib2JqZWN0X29mX3BfMSwgaXNfc3Vib2JqZWN0X29mX3ApOiBSZW1vdmUuCgkoc3RydWN0IGxvb2t1cF9maWVsZF9pbmZvKTogUmVtb3ZlIGZyb21fZGVwX2Jhc2VfcCBmaWVsZC4KCShsb29rdXBfZmllbGRfcXVldWVfcCk6IEFkanVzdCwgdGVzdCBCSU5GT19ERVBFTkRFTlRfQkFTRV9QLgoJKGxvb2t1cF9maWVsZF9yKTogUmVtb3ZlIGRlcGVuZGVudCBiYXNlIGNvZGUuCgkobG9va3VwX21lbWJlcik6IExpa2V3aXNlLgoJKGRmc193YWxrLCBkZnNfd2Fsa19yZWFsKTogQWRkIGFjY2VzcyBhcmcgdG8gcXVldWUgZm4uCgkoZGZzX3VubWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IFJlbW92ZS4KCShkZnNfbWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IFJlbW92ZS4KCShkZnNfc2tpcF92YmFzZXMpOiBSZW1vdmUuCgkoZGZzX2dldF9wdXJlX3ZpcnR1YWxzKTogQWRqdXN0LgoJKG1hcmtlZHAsIHVubWFya2VkcCk6IEFkanVzdC4KCShtYXJrZWRfdnRhYmxlX3BhdGhwLCB1bm1hcmtlZF92dGFibGVfcGF0aHApOiBSZW1vdmUuCgkobWFya2VkX3B1c2hkZWNsc19wLCB1bm1hcmtlZF9wdXNoZGVjbHNfcCk6IEFkanVzdC4KCShkZnNfdW5tYXJrKTogQWRqdXN0LgoJKGRmc19nZXRfdmJhc2VfdHlwZXMpOlJlbW92ZS4KCShkZnNfYnVpbGRfaW5oZXJpdGFuY2VfZ3JhcGhfb3JkZXIpOiBSZW1vdmUuCgkoZ2V0X3ZiYXNlX3R5cGVzKTogUmVtb3ZlCgkoZGZzX2ZpbmRfdmJhc2VfaW5zdGFuY2UpOiBSZW1vdmUuCgkoZmluZF92YmFzZV9pbnN0YW5jZSk6IFJlbW92ZS4KCShkZnNfZGVidWdfdW5tYXJrZWRwKTogQWRqdXN0LgoJKGRlcGVuZGVudF9iYXNlX3ApOiBSZW1vdmUuCgkoZGZzX3B1c2hfdHlwZV9kZWNscyk6IEFkanVzdC4KCShkZnNfcHVzaF9kZWNscyk6IEFkanVzdC4KCShkZnNfbm9fb3ZlcmxhcF95ZXQpOiBBZGp1c3QuCgkoY29waWVkX2JpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKG9yaWdpbmFsX2JpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGJpbmZvX2Zvcl92YmFzZSk6IFJlbW92ZS4KCglDaGFuZ2UgYmFzZSBjbGFzcyBhY2Nlc3MgcmVwcmVzZW50YXRpb24uCgkqIGphdmEvY2xhc3MuYyAoc2V0X3N1cGVyX2luZm8pOiBEb24ndCBzZXQgVFJFRV9WSUFfUFVCTElDLgoJKGFkZF9pbnRlcmZhY2VfZG8pOiBMaWtld2lzZS4KCjIwMDMtMDItMjAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoQVNNX09VVFBVVF9NQVhfU0tJUF9BTElHTik6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9wb3dlcjQubWQgKHBvd2VyNC1zdG9yZSxwb3dlcjQtdmVjc3RvcmUpOiBOZXcKCWluc24gcmVzZXJ2YXRpb25zLgoJKHBvd2VyNC1mcHN0b3JlKTogQ29tcGFjdC4KCjIwMDMtMDItMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCppb3JzaTNfdyk6IE5ldy4KCjIwMDMtMDItMjAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IEtpbGwgUkVHX0VYRUNfQ09VTlQuCgkqIHJ0bC5jIChyZWdfbm90ZV9uYW1lKTogTGlrZXdpc2UuCgkqIHJ0bC5oIChlbnVtIHJlZ19ub3RlKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9ydGwudGV4aTogTGlrZXdpc2UuCgoyMDAzLTAyLTIwICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBiYi1yZW9yZGVyLmMgKGZpbmRfdHJhY2VzXzFfcm91bmQpOiBGaXggY29tbWVudCB0eXBvLgoKMjAwMy0wMi0xOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfcmVhbF96ZXJvX2FkZGl0aW9uX3ApOiBEb24ndCBmb2xkIGEgemVybwoJYWRkaXRpb24gaW4gdGhlIHByZXNlbmNlIG9mIHNpZ25hbGluZyBOYU5zLgoKMjAwMy0wMi0xOSAgS3Jpc3RlciBXYWxmcmlkc3NvbiAgPGNhdG9AZGYubHRoLnNlPgoKCSogdG0udGV4aSAoSU5JVF9DVU1VTEFUSVZFX0FSR1MpOiBGaXggdHlwby4KCjIwMDMtMDItMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAob3V0cHV0X2xvZ2ljYWxfb3ApOiBPcHRpbWl6ZSBvci5sIHdoZW4KCU9SaW5nIHdpdGggMHhmZmZmPz8wMCB3aXRoIHRoZSBoaWdoZXN0IGJpdCBvZiB0aGUgPz8gcGFydCBzZXQuCgkoY29tcHV0ZV9sb2dpY2FsX29wX2xlbmd0aCk6IFVwZGF0ZS4KCShjb21wdXRlX2xvZ2ljYWxfb3BfY2MpOiBMaWtld2lzZS4KCjIwMDMtMDItMTkgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGJiLXJlb3JkZXIuYyAoZmluZF90cmFjZXNfMV9yb3VuZCk6IEZpeGVkIGNvbmRpdGlvbiBmb3Igc21hbGwKCWRlc3RpbmF0aW9uIGJsb2NrIHdpdGggbXVsdGlwbGUgcHJlZGVjZXNzb3JzLgoJKGNvbm5lY3RfdHJhY2VzKTogQ2hlY2sgd2hldGhlciB0aGUgYmxvY2sgaXMgYSBzdGFydCBvZiB0cmFjZS4KCjIwMDMtMDItMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogVXBkYXRlIGNhbGwgb2YgSU5JVF9DVU1VTEFUSVZFX0FSR1MKCSogZnVuY3Rpb24uYyAoYXNzaWduX3BhcmFtcyk6IExpa2V3aXNlLgoJKiBhcm0tcHJvdG9zLmggKGFybV9pbml0X2N1bXVsYXRpdmVfYXJncyk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGFybS5jIChhcm1faW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBVcGRhdGUgZnVuY3Rpb24uCgkqIGFybS5oIChJTklUX0NVTVVMQVRJVkVfQVJHUyk6IFVwZGF0ZS4KCSogYXZyLXByb3Rvcy5oIChpbml0X2N1bXVsYXRpdmVfYXJncyk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGF2ci5jIChpbml0X2N1bXVsYXRpdmVfYXJncyk6IFVwZGF0ZSBmdW5jdGlvbi4KCSogYXZyLmggKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogVXBkYXRlLgoJKiBkMzB2LXByb3Rvcy5oIChkMzB2X2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogVXBkYXRlIHByb3RvdHlwZS4KCSogZDMwdi5jIChkMzB2X2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogVXBkYXRlIGZ1bmN0aW9uLgoJKiBkMzB2LmggKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogVXBkYXRlLgoJKiBmcnYtcHJvdG9zLmggKGZydl9pbml0X2N1bXVsYXRpdmVfYXJncyk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGZydi5jIChmcnZfaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBVcGRhdGUgZnVuY3Rpb24uCgkqIGZydi5oIChJTklUX0NVTVVMQVRJVkVfQVJHUyk6IFVwZGF0ZS4KCSogbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sZ3VlKTogVXBkYXRlIGNhbGwgb2YgSU5JVF9DVU1VTEFUSVZFX0FSR1MuCgkqIHBhLmggKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogVXBkYXRlLgoJKiBzcGFyYy1wcm90b3MuaCAoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBzcGFyYy5jIChpbml0X2N1bXVsYXRpdmVfYXJncyk6IFVwZGF0ZSBmdW5jdGlvbi4KCSogc3BhcmMuaCAoSU5JVF9DVU1VTEFUSVZFX0FSR1MpOiBVcGRhdGUuCgkqIHRtLnRleGkgKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoyMDAzLTAyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqaW9yc2kzX3R3b19xaV9zZXh0KTogTmV3LgoJKCphc2hpZnRzaV9zZXh0cWlfNyk6IExpa2V3aXNlLgoKMjAwMy0wMi0xOSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fYzk5IGZvcgoJSVNPIEM5OSBhbmQgQysrLgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoaXJpeF9fX3Jlc3RyaWN0KTogRG9uJ3QgY2hhbmdlIF9fcmVzdHJpY3QKCWZvciBDKysgb24gSVJJWCA2LjUuMVs4OV0uCgkqIGZpeGluYy90ZXN0cy9iYXNlL2ludGVybmFsL3NnaW1hY3Jvcy5oOiBOZXcgZmlsZS4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGlyaXhfd2NzZnRpbWUpOiBVc2UgWFBHNSB2YXJpYW50IGZvciBDOTkuCgkqIGZpeGluYy90ZXN0cy9iYXNlL2ludGVybmFsL3djaGFyX2NvcmUuaDogTmV3IGZpbGUuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChpcml4X3NvY2tsZW5fdCk6IEZpeCBicm9rZW4gSVJJWCA2LjUuMVs3OF0KCXNvY2tsZW5fdCBkZWZpbml0aW9uLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvc29ja2V0Lmg6IE5ldyBmaWxlLgoJRml4ZXMgUFIgbGliZ2NqLzk2NTIuCgoyMDAzLTAyLTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtb3ZzZmNjXzEsIG1vdmRmY2NfMSk6IEZpeCBjb25zdHJhaW5zLgoKMjAwMy0wMi0xOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplCglhbGlnbl9qdW1wc19tYXhfc2tpcCBhbmQgYWxpZ25fbG9vcHNfbWF4X3NraXAuCgoyMDAzLTAyLTE5ICBUaGllcnJ5IE1vcmVhdSAgPHRoaWVycnkubW9yZWF1QGNvbm5vdGVjaC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IERvIG5vdAoJdGVzdCBzaXplIGlmIG5hbWVkIHNlY3Rpb24uCgoyMDAzLTAyLTE5ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBVc2UgZ2VuX2ludF9tb2RlIGZvciB0aGUgYXJndW1lbnQKCXRvIGdlbl9ydHhfTVVMVC4KCjIwMDMtMDItMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGNvc3hmMik6ICBGaXggY29uZGl0aW9uYWwuCgoyMDAzLTAyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChleHRlbmRxaXNpMik6IENoYW5nZSB0byBhbiBleHBhbmRlci4KCSgqZXh0ZW5kcWlzaTJfaDgzMDApOiBOZXcuCgkoKmV4dGVuZHFpc2kyX2g4MzAwaHMpOiBMaWtld2lzZS4KCjIwMDMtMDItMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IFVwZGF0ZSB0aGUgcHJvdG90eXBlIGZvcgoJc3BsaXRfYWRkc19zdWJzLiAgUmVtb3ZlIHRoZSBwcm90b3R5cGVzIGZvcgoJY29uc3RfaW50X2xlXzJfb3BlcmFuZCBhbmQgY29uc3RfaW50X2xlXzZfb3BlcmFuZC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKHNwbGl0X2FkZHNfc3ViKTogRG9uJ3Qgb3V0cHV0IGluYy9kZWMuCgkoY29uc3RfaW50X2xlXzJfb3BlcmFuZCk6IFJlbW92ZS4KCShjb25zdF9pbnRfbGVfNl9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUgdGhlIGVudHJpZXMKCWZvciBjb25zdF9pbnRfbGVfMl9vcGVyYW5kIGFuZCBjb25zdF9pbnRfbGVfNl9vcGVyYW5kLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IFVwZGF0ZSBhbGwgdXNlcyBvZiBzcGxpdF9hZGRzX3N1YnMuCgkoYSBwZWVwaG9sZTIpOiBOZXcuCgoyMDAzLTAyLTE4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoTlBSRURFQ0VTT1JDLCBTRVRfTlBSRURFQ0VTT1JTKTogS2lsbC4KCShjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogUmV3cml0ZS4KCjIwMDMtMDItMTggIE1hdHQgQXVzdGVybiA8YXVzdGVybkBhcHBsZS5jb20+CgoJKiB0b3BsZXYuYywgbGFuZ2hvb2tzLmMsIGxhbmdob29rcy1kZWYuaDogTW92ZQoJd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyBmcm9tIHRvcGxldi5jIHRvIGxhbmdob29rcy5jLgoKMjAwMy0wMi0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChnZW5lcmFsX29wZXJhbmRfc3JjKTogQWx3YXlzIGNoZWNrCglNT0RFLgoJKGdlbmVyYWxfb3BlcmFuZF9kc3QpOiBMaWtld2lzZS4KCjIwMDMtMDItMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29udmVydC5jIChjb252ZXJ0X3RvX3JlYWwpOiBBbHNvIG9wdGltaXplIChmbG9hdClsb2coeCkgaW50bwoJbG9nZih4KSB3aGVyZSB4IGlzIGEgZmxvYXQsIGkuZS4gYWxzbyBoYW5kbGUgQlVJTFRfSU5fTE9HeyxMfS4KCjIwMDMtMDItMTggIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKHVuc3BlY19jYWxsZXJfcnR4X3ApOiBOZXcuCgkoc2hfY2Fubm90X2NvcHlfaW5zbl9wKTogTmV3LgoJKFRBUkdFVF9DQU5OT1RfQ09QWV9JTlNOX1ApOiBOZXcuCgoyMDAzLTAyLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoaGFuZGxlX3VzZWRfYXR0cmlidXRlKTogQWNjZXB0IHN0YXRpYyBkYXRhIHRvby4KCjIwMDMtMDItMTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgkgICAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogdGVzdHN1aXRlL2djYy5kZy8yMDAzMDIxOC0xLmM6IE5ldy4KCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBUQVJHRVRfVkVDVE9SX1RZUEVTX0NPTVBBVElCTEUuCgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZAoJVEFSR0VUX1ZFQ1RPUl9UWVBFU19DT01QQVRJQkxFLgoJKFRBUkdFVF9WRUNUT1JfVFlQRVNfQ09NUEFUSUJMRSk6IE5ldyBtYWNyby4KCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBmaWVsZCB2ZWN0b3JfdHlwZXNfY29tcGF0aWJsZS4KCgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFRha2UgaW50byBhY2NvdW50CglUQVJHRVRfVkVDVE9SX1RZUEVTX0NPTVBBVElCTEUuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFNhbWUuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChpc19ldjY0X29wYXF1ZV90eXBlKTogTmV3LgoJKHJzNjAwMF9zcGVfdmVjdG9yX3R5cGVzX2NvbXBhdGlibGUpOiBOZXcuCgkoVEFSR0VUX1ZFQ1RPUl9UWVBFU19DT01QQVRJQkxFKTogRGVmaW5lLgoKMjAwMy0wMi0xOSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluICh0b3BsZXYubyk6IERlcGVuZCBvbiAkKExBTkdIT09LU19ERUZfSCkuCgkqIHRvcGxldi5jOiBJbmNsdWRlIGxhbmdob29rcy1kZWYuaC4KCjIwMDMtMDItMTggIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKGVudW0gcHJvY2Vzc29yX3R5cGUpOiBTb3J0IGVudHJpZXMKCWFscGhhYmV0aWNhbGx5LgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkZWZpbmVfYXR0ciBjcHUpOiBTeW5jIHdpdGggcHJvY2Vzc29yX3R5cGUKCWVudW0gdmFsdWVzLCBpbmNsdWRpbmcgYWRkaW5nIGVudHJpZXMgdGhhdCB3ZXJlIG1pc3NpbmcuCgoyMDAzLTAyLTE4ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmMgKGNhbGNfbGl2ZV9yZWdzKTogQWxzbyBjaGVjayBHRVRfQ09ERSB3aGVuIGNoZWNraW5nIGlmCglpbml0aWFsIHZhbHVlIGZvciBQUl9SRUcgaXMgc3RpbGwgdGhlIFBSX1JFRyByZWdpc3Rlci4KCjIwMDMtMDItMTggIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGZsb2F0ZGlkZjIsIGZsb2F0ZGlzZjIpOiBBZGQgJSwgYmVmb3JlIHNlY29uZAoJaW5zdHJ1Y3Rpb24gaW4gb3V0cHV0IHRlbXBsYXRlLgoJKGJzcF92YWx1ZSk6IENoYW5nZSBvdXRwdXQgdGVtcGxhdGUgZnJvbSBzdHJpbmcgdG8gQyBjb2RlLCBhZGQgJSwKCWJlZm9yZSBhY3R1YWwgaW5zdHJ1Y3Rpb24uCgkoZmx1c2hycyk6IE1hcmsgYXMgbm90IHByZWRpY2FibGUuCgoyMDAzLTAyLTE4ICBLcmlzdGVyIFdhbGZyaWRzc29uICA8Y2F0b0BkZi5sdGguc2U+CgoJKiBpbmNsaGFjay5kZWYgKG5ldGJzZF9ib2d1c19zZW1pY29sb24pOiBOZXcgZml4LgoJKiBmaXhpbmNsLng6IFJlYnVpbHQuCgkqIHRlc3RzL2Jhc2UvY3R5cGUuaDogVXBkYXRlLgoKMjAwMy0wMi0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG5lZ2F0ZV9leHByX3ApOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIKCWFuIGV4cHJlc3Npb24gY2FuIGJlIG5lZ2F0ZWQgY2hlYXBseS4KCShmb2xkKSBbTUlOVVNfRVhQUl06IFVzZSBpdCB0byBkZXRlcm1pbmUgd2hldGhlciB0byB0cmFuc2Zvcm0KCS1BIC0gQiBpbnRvIC1CIC0gQSBmb3IgZmxvYXRpbmcgcG9pbnQgdHlwZXMuCgoyMDAzLTAyLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNiaXRtYXAuYyAoc2JpdG1hcF9yZXNpemUpOiBOZXcgZnVuY3Rpb24uCgkqIHNiaXRtYXAuaCAoc2JpdG1hcF9yZXNpemUpOiBQcm90b3R5cGUgaGVyZS4KCSogcmVjb2cuYyAoc3BsaXRfYWxsX2luc25zKTogVXNlIHNiaXRtYXBfcmVzaXplLgoKMjAwMy0wMi0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKnplcm9fZXh0ZW5kaGlzaTJfaDgzMDApOiBGaXggdGhlCglpbnNuIGxlbmd0aC4KCShleHRlbmRxaXNpMik6IExpa2V3aXNlLgoJKCpleHRlbmRoaXNpMl9oODMwMCk6IExpa2V3aXNlLgoKMjAwMy0wMi0xOCAgTWF0dCBBdXN0ZXJuIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIGxhbmdob29rcy5oLCBsYW5naG9va3MtZGVmLmg6IGludHJvZHVjZSBuZXcgbGFuZ2hvb2ssCglmaW5hbF93cml0ZV9nbG9iYWxzLCB3aXRoIHdyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMgYXMgZGVmYXVsdC4KCSogdG9wbGV2LmM6IE1vdmUgaW52b2NhdGlvbiBvZiB3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyBmcm9tCgljb21waWxlX2ZpbGUgdG8gbmV3IGZ1bmN0aW9uLCB3cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zLiAgQ2hhbmdlCgljb21waWxlX2ZpbGUgdG8gdXNlIGZpbmFsX3dyaXRlX2dsb2JhbHMgaG9vay4gIENoYW5nZQoJd3JhcHVwX2dsb2JhbF9kZWNsYXJhdGlvbnMgc28gd3JpdGluZyB0byBERUNMX0RFRkVSX09VVFBVVCBpcwoJY29uZGl0aW9uYWwuCgoyMDAzLTAyLTE4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQ6IENvcnJlY3QgYW5kIGVuaGFuY2UgY29tbWVudC4KCjIwMDMtMDItMTggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2NjLmMgKHZhbGlkYXRlX3N3aXRjaGVzKTogRG9uJ3Qgc2NhbiBwYXN0IGNsb3NpbmcgJ30nLgoKMjAwMy0wMi0xOCAgQmVuIEVsbGlzdG9uICA8YmplQHJlZGhhdC5jb20+CgoJUFIgYysrLzE2MDcKCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRG9jdW1lbnQgdGhlIGVmZmVjdCBvZgoJdGhlIEMrKyAidGhpcyIgcGFyYW1ldGVyIG9uIHRoZSBjb3VudGluZyBvZiBhcmd1bWVudHMgZm9yIHRoZQoJImZvcm1hdCIgYW5kICJmb3JtYXRfYXJnIiBhdHRyaWJ1dGVzLgoKMjAwMy0wMi0xNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUuaCAoX19ldl9zdGRkKTogQ2FzdCAybmQgYXJnLgoJKF9fZXZfc3Rkdyk6IFNhbWUuCgkoX19ldl9zdGRoKTogU2FtZS4KCjIwMDMtMDItMTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlY29nLmMgKHNwbGl0X2FsbF9pbnNucyk6ICBGaXggbWVtb3J5IG92ZXJmbG93LgoKMjAwMy0wMi0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoY21wcWkpOiBSZW1vdmUgbW9kZSBmcm9tIGNvbXBhcmUuCgkoY21waGkpOiBMaWtld2lzZS4KCSgqY21waGlfaDgzMDApOiBMaWtld2lzZS4KCSgqY21waGlfaDgzMDBocyk6IExpa2V3aXNlLgoJKGNtcHNpKTogTGlrZXdpc2UuCgkoNyBwZWVwaG9sZTIpOiBMaWtld2lzZS4KCjIwMDMtMDItMTYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6ICBGb2xkIGNvbnN0YW50IHZhcmlhYmxlcyBpbnRvCglpbml0aWFsIHZhbHVlcy4KCjIwMDMtMDItMTYgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFNwZWNpZmljKTogRml4IGxpbmsgZm9yIG02OGstYXR0LXN5c3YuCgkoQmluYXJpZXMpOiBEaXR0byBmb3IgU2luaXgvUmVsaWFudCBVbml4LgoKMjAwMy0wMi0xNiBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fcmVsb2FkX2luX2hpKTogRW5zdXJlIHRoYXQgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIgZG9lcwoJbm90IG92ZXJsYXAgdGhlIGZpbmFsIHJlc3VsdCByZWdpc3Rlci4KCjIwMDMtMDItMTYgQXJlbmQgQmF5ZXIgPGFyZW5kLmJheWVyQHdlYi5kZT4KCSAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgYy84MDY4CgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXZfMSk6IFJlbmFtZSBmcm9tIGV4dHJhY3RfbXVsZGl2OwoJcmVhcnJhbmdlIG11bHQgYXJndW1lbnRzIGZvciBsZXNzIHJlY3Vyc2lvbi4KCShleHRyYWN0X211bGRpdik6IE5ldy4gIFByZXZlbnQgcnVuYXdheSByZWN1cnNpb24uCgoyMDAzLTAyLTE2ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvY3lnd2luLmggKFRBUkdFVF9TVUJUQVJHRVRfREVGQVVMVCk6IFNldAoJTUFTS19BTElHTl9ET1VCTEUuCgoyMDAzLTAyLTE1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoeDg2X2V4dF84MDM4N19jb25zdGFudHMpOiBVc2UgODAzODcgaW5zbnMKCXRvIGxvYWQgbWF0aGVtYXRpY2FsIGNvbnN0YW50cyBvbiBLNiwgQXRobG9uLCBQZW50aXVtIDQgYW5kIFBQcm8uCgkoZXh0XzgwMzg3X2NvbnN0YW50c190YWJsZSk6IEdsb2JhbCB0YWJsZSBvZiA4MDM4NyBzcGVjaWFsIGNvbnN0YW50cwoJZ3VhcmRlZCBieSBleHRfODAzODdfY29uc3RhbnRzX2luaXQgZmxhZyB3aGVuIG5vdCBpbml0aWFsaXplZC4KCShpbml0X2V4dF84MDM4N19jb25zdGFudHMpOiBOZXcgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGlzIHRhYmxlLgoJKHN0YW5kYXJkXzgwMzg3X2NvbnN0YW50X3ApOiBFeHRlbmQgdG8gcmVjb2duaXplIGV4dHJhIDgwMzg3Cgljb25zdGFudHMsIGluIFhGbW9kZSwgb24gcHJvY2Vzc29ycyB3aGVyZSB0aGlzIGlzIGEgd2luLgoJKHN0YW5kYXJkXzgwMzg3X2NvbnN0YW50X29wY29kZSk6IE5ldyBmdW5jdGlvbiB0byByZXR1cm4gdGhlCglvcGNvZGUgYXNzb2NpYXRlZCB3aXRoIHN0YW5kYXJkXzgwMzg3X2NvbnN0YW50X3AuCgkoc3RhbmRhcmRfODAzODdfY29uc3RhbnRfcnR4KTogTmV3IGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgWEZtb2RlCglDT05TVF9ET1VCTEUgYXNzb2NpYXRlZCB3aXRoIHN0YW5kYXJkXzgwMzg3X2NvbnN0YW50X3AuCgkoaXg4Nl9ydHhfY29zdHMpOiBHaXZlIHRoZSBuZXcgY29uc3RhbnRzIHRoZSBzYW1lIGNvc3QgYXMgMS4wLgoKCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoc3RhbmRhcmRfODAzODdfY29uc3RhbnRfb3Bjb2RlKToKCVByb3RvdHlwZSBoZXJlLgoJKHN0YW5kYXJkXzgwMzg3X2NvbnN0YW50X3J0eCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKm1vdnNmMSwgKm1vdnNmMV9ub2ludGVydW5pdCwgKm1vdmRmX25vaW50ZWdlciwKCSptb3ZkZl9pbnRlZ2VyLCAqbW92eGZfbm9pbnRlZ2VyLCAqbW92dGZfbm9pbnRlZ2VyLCAqbW92eGZfaW50ZWdlciwKCSptb3Z0Zl9pbnRlZ2VyKTogU2ltcGxpZnkgdXNpbmcgbmV3IHN0YW5kYXJkXzgwMzg3X2NvbnN0YW50X29wY29kZS4KCjIwMDMtMDItMTUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChPcHRpbWl6ZSBPcHRpb25zKTogQ29ycmVjdCBAb3B0aW9uIHN5bnRheC4KCjIwMDMtMDItMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY2ZnbGF5b3V0Lm8pOiBEZXBlbmQgb24gVEFSR0VUX0guCgkqIGNmZ2xheW91dC5jOiBJbmNsdWRlIHRhcmdldC5oLgoJKGNmZ19sYXlvdXRfY2FuX2R1cGxpY2F0ZV9iYl9wKTogQ2hlY2sgdGFyZ2V0bS5jYW5ub3RfY29weV9pbnNuX3AuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0NBTk5PVF9DT1BZX0lOU05fUCk6IE5ldy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIGNhbm5vdF9jb3B5X2luc25fcC4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9jYW5ub3RfY29weV9pbnNuX3ApOiBOZXcuCgkoVEFSR0VUX0NBTk5PVF9DT1BZX0lOU05fUCk6IE5ldy4KCShvdmVycmlkZV9vcHRpb25zKTogUmV2ZXJ0IDIwMDMtMDItMDggaGFjay4KCjIwMDMtMDItMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKGJ5cGFzc19ibG9jayk6IFVzZSBCTE9DS19GT1JfSU5TTiBmb3IgcmVzb2x2aW5nIExBQkVMX1JFRnMuCgkoYnlwYXNzX2NvbmRpdGlvbmFsX2p1bXBzKTogQWNjZXB0IGNvbXB1dGVkX2p1bXBfcCBpbnNucyBhcyB3ZWxsLgoKMjAwMy0wMi0xNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocHJvY2Vzc29yX3R5cGUpOiBBZGQgUFBDNDQwLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfU0NIRURfVVNFX0RGQV9QSVBFTElORV9JTlRFUkZBQ0UsCglUQVJHRVRfU0NIRURfRklSU1RfQ1lDTEVfTVVMVElQQVNTX0RGQV9MT09LQUhFQUQsCglUQVJHRVRfU0NIRURfVkFSSUFCTEVfSVNTVUUpOiBEZWZpbmUuCgkocnM2MDAwX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9tdWx0aXBhc3NfZGZhX2xvb2thaGVhZCk6IE5ldyBGdW5jdGlvbi4KCShyczYwMDBfdmFyaWFibGVfaXNzdWUpOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2FkanVzdF9jb3N0KTogQWRkIENNUCBhbmQgREVMQVlFRF9DUiB0eXBlcy4KCShyczYwMDBfaXNzdWVfcmF0ZSk6IEFkZCBQUEM0NDAuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICh1bnNwZWMgbGlzdCk6IENvcnJlY3QgdHlwby4KCShhdHRyICJ0eXBlIik6IEFkZCBsb2FkX2V4dCwgbG9hZF9leHRfdSwgbG9hZF9leHRfdXgsIGxvYWRfdSwKCXN0b3JlX3V4LCBzdG9yZV91LCBmcGxvYWRfdXgsIGZwbG9hZF91LCBmcHN0b3JlX3V4LCBmcHN0b3JlX3UsCgljbXAsIGRlbGF5ZWRfY3IsIG1mY3IsIG10Y3IuCgkoYXV0b21hdGFfb3B0aW9uKTogU2V0ICJuZGZhIi4KCShleHRlbmRNTU5OMik6IFVwZGF0ZSBhdHRyaWJ1dGVzLgoJKG1vdmNjX2ludGVybmFsMSk6IERpc2NvdXJhZ2UgbW92ZSB0byBub24tY3IwLiAgVXBkYXRlCglhdHRyaWJ1dGVzLgoJKG1vdk1NX3VwZGF0ZSk6IFVwZGF0ZSBhdHRyaWJ1dGVzLgoJKGNtcE1NX2ludGVybmFsKTogVXBkYXRlIGF0dHJpYnV0ZXMuCgkoc0NDIENSIG1hdGVyaWFsaXphdGlvbik6IFVwZGF0ZSBhdHRyaWJ1dGVzLgoJKGJyYW5jaCBwYXR0ZXJucyk6IERvIG5vdCBkaXNjb3VyYWdlIG5vbi1jcjAuCgkoY3IgbG9naWNhbCBwYXR0ZXJucyk6IFByZWZlciBkZXN0cnVjdGl2ZSByZWdpc3RlciBhbGxvY2F0aW9uLgoJVXBkYXRlIGF0dHJpYnV0ZXMuCgkobW92ZXNpX2Zyb21fY3IpOiBVcGRhdGUgYXR0cmlidXRlLgoJKG10Y3JmX29wZXJhdGlvbik6IFVwZGF0ZSBhdHRyaWJ1dGUuCgkobXRjcmZzaSk6IFVwZGF0ZSBhdHRyaWJ1dGUuCgkqIGNvbmZpZy9yczYwMDAvNDB4Lm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL3JzNjAwMC82MDMubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwLzZ4eC5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvNzQ1MC5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvN3h4Lm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL3JzNjAwMC9tcGMubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL3Bvd2VyNC5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvcmlvczEubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL3Jpb3MyLm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL3JzNjAwMC9yczY0Lm1kOiBOZXcgZmlsZS4KCVtTb21lIERGQSBkZXNjcmlwdGlvbnMgYmFzZWQgb24gd29yayBieSBNaWNoYWVsIEhheWVzXQoKMjAwMy0wMi0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAoZmluZF90cmFjZXNfMV9yb3VuZCk6IERvbid0IGNvbm5lY3QgZWFzeSB0byBjb3B5CglzdWNjZXNzb3JzIHdpdGggbXVsdGlwbGUgcHJlZGVjZXNzb3JzLgoJKGNvbm5lY3RfdHJhY2VzKTogVHJ5IGhhcmRlciB0byBjb3B5IHRyYWNlcyBvZiBsZW5ndGggMS4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEFkZCBjb21wdXRlZF9nb3RvX2NvbW1vbl9sYWJlbCwKCWNvbXB1dGVkX2dvdG9fY29tbW9uX3JlZy4KCSogZnVuY3Rpb24uYyAoZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IFphcCB0aGVtLgoJKiBzdG10LmMgKGV4cGFuZF9jb21wdXRlZF9nb3RvKTogVXNlIHRoZW0gdG8gcHJvZHVjZSBvbmUKCWluZGlyZWN0IGJyYW5jaCBwZXIgZnVuY3Rpb24uCgoyMDAzLTAyLTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2ZnY2xlYW51cC5jOiBJbmNsdWRlIHBhcmFtcy5oLgoJKHRyeV9jcm9zc2p1bXBfYmIpOiBVc2UgUEFSQU1fTUFYX0NST1NTSlVNUF9FREdFUy4gIEZpeCB0ZXN0IGZvcgoJdG9vIG1hbnkgb3V0Z29pbmcgZWRnZXMgZnJvbSBhIGJsb2NrLgoJKiBNYWtlZmlsZS5pbiAoY2ZnY2xlYW51cC5vKTogRGVwZW5kIG9uIFBBUkFNU19ILgoJKiBwYXJhbXMuZGVmIChtYXgtY3Jvc3NqdW1wLWVkZ2VzKTogTmV3LgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IGl0LgoKMjAwMy0wMi0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlY29nLmMgKHNwbGl0X2FsbF9pbnNucyk6IEluY2x1ZGUgbmV3IGJsb2NrcyBpbiBsaWZlIHVwZGF0ZTsKCWRvIGEgZ2xvYmFsIGxpZmUgdXBkYXRlLgoKMjAwMy0wMi0xNSAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L21pbmd3MzIuaCAoTElCR0NDX1NQRUMpOiBBZGQgbGlibWluZ3dleC5hLgoJVXBkYXRlIGNvcHlyaWdodC4KCSogY29uZmlnL2kzODYvY3lnd2luLmggKExJQkdDQ19TUEVDKTogQWRkIGxpYm1pbmd3ZXguYSBmb3IKCS1tbm8tY3lnd2luIGNhc2UuCgoyMDAzLTAyLTE0ICBGYWxrIEh1ZWZmbmVyICA8ZmFsay5odWVmZm5lckBzdHVkZW50LnVuaS10dWViaW5nZW4uZGU+CgoJUFIgb3B0aW1pemF0aW9uLzc3MDIKCSogcmVsb2FkMS5jIChyZWxvYWRfY3NlX3NpbXBsaWZ5X3NldCk6IEhvbm9yCglDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MuCgoyMDAzLTAyLTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF93aWRlX2NvbnN0X2xvYWRfdXNlc19jbHIpOiBOZXcKCWZ1bmN0aW9uLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oOiBEZWNsYXJlIGl0LgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZkaSwgbW92ZGYpOiBVc2UgaXQgdG8gY29tcHV0ZQoJYXR0cmlidXRlIGNjIG9mIGluc3RydWN0aW9ucyB0aGF0IG1heSB1c2UgY2xyLgoKMjAwMy0wMi0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKTogU2ltcGxpZnkgfnkgd2hlbgoJKHggLSAoeCAmIHkpKSBpcyBmb3VuZC4KCjIwMDMtMDItMTQgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluOiBGaXggdHlwby4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wMi0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmlvcnNpMl9hbmRfMV9sc2hpZnRydF8xKTogTmV3LgoKMjAwMy0wMi0xMyAgQWRhbSBOZW1ldCAgPGFuZW1ldEBsbnh3LmNvbT4KCglQUiBvcHQvMjM5MQoJKiBjb21iaW5lLmM6IEZpeCBzcGVsbGluZyBpbiBjb21tZW50LgoJKGNhY2hlZF9ub256ZXJvX2JpdHMpOiBOZXcgZnVuY3Rpb24uCgkoY2FjaGVkX251bV9zaWduX2JpdF9jb3BpZXMpOiBOZXcgZnVuY3Rpb24uCgkobm9uemVyb19iaXRzX3dpdGhfa25vd24pOiBOZXcgbWFjcm8uCgkobnVtX3NpZ25fYml0X2NvcGllc193aXRoX2tub3duKTogTmV3IG1hY3JvLgoJKG5vbnplcm9fYml0czEpOiBSZW5hbWUgZnJvbSBub256ZXJvX2JpdHMuICBBZGQgdGhyZWUgbmV3Cglhcmd1bWVudHMuICBDaGFuZ2UgY2FsbHMgZnJvbSBub256ZXJvX2JpdHMgdG8KCW5vbnplcm9fYml0c193aXRoX2tub3duLgoJKG51bV9zaWduX2JpdF9jb3BpZXMxKTogUmVuYW1lIGZyb20gbnVtX3NpZ25fYml0X2NvcGllcy4gIEFkZAoJdGhyZWUgbmV3IGFyZ3VtZW50cy4gIENoYW5nZSBjYWxscyBmcm9tIG51bV9zaWduX2JpdF9jb3BpZXMgdG8KCW51bV9zaWduX2JpdF9jb3BpZXNfd2l0aF9rbm93bi4KCShub256ZXJvX2JpdHMpOiBOZXcgbWFjcm8uCgkobnVtX3NpZ25fYml0X2NvcGllcyk6IE5ldyBtYWNyby4KCSh1cGRhdGVfdGFibGVfdGljayk6IERvbid0IHRyYXZlcnNlIGlkZW50aWNhbCBzdWJleHByZXNzaW9uIG1vcmUKCXRoYW4gb25jZS4KCShnZXRfbGFzdF92YWx1ZV92YWxpZGF0ZSk6IExpa2V3aXNlLgoKMjAwMy0wMi0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdCk6IFVzZSBnZ2NfYWxsb2MgZm9yIHJlZ25vX3JlZ19ydHguCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBlbWl0X3N0YXR1cyk6IExlbmd0aCBvZiByZWdub19wb2ludGVyX2FsaWduCglhbmQgeF9yZWdub19yZWdfcnR4IGFzIHNlZW4gYnkgZ2VuZ3R5cGUgaXMgb25seSB4X3JlZ19ydHhfbm8sCglub3QgcmVnbm9fcG9pbnRlcl9hbGlnbl9sZW5ndGggKGkuZS4gbGVuZ3RoIGFjdHVhbGx5IHVzZWQsIG5vdAoJbGVuZ3RoIGFzIGFsbG9jYXRlZCkKCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoc3RydWN0IHN0YWNrX2xvY2FsX2VudHJ5KTogTmV3LgoJKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogUmVwbGFjZSBodWdlIGFycmF5IHdpdGggYWxpc3QuCgkoYXNzaWduXzM4Nl9zdGFja19sb2NhbCk6IENoYW5nZSB0byBtYXRjaC4KCjIwMDMtMDItMTMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNybmMuZ2MuY2E+CgoJKiBpbmNsaGFjay5kZWYgKGhwdXhfbG9uZ19kb3VibGUpOiBUaWdodGVuIHNlbGVjdCBhbmQgYWRkIGJ5cGFzcwoJcmVnZXhwLgoJKiBmaXhpbmNsLng6IFJlYnVpbHQuCgoyMDAzLTAyLTEzICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBjZmdjbGVhbnVwLmMgKG91dGdvaW5nX2VkZ2VzX21hdGNoKTogV2hlbiB0aGVyZSBpcyBzaW5nbGUgb3V0Z29pbmcKCWVkZ2UgYW5kIGJsb2NrIGVuZHMgd2l0aCBhIGp1bXAgaW5zbiBpdCBtdXN0IGJlIHNpbXBsZSBqdW1wLgoKMjAwMy0wMi0xMyAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoUFJFUFJPQ0VTU09SX0RFRklORVMpOiBBZGQKCUBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQC4KCSogY29uZmlndXJlLmluIChQUkVGSVhfSU5DTFVERV9ESVIpOiBEb24ndCBkZWZpbmUgaWYgJHdpdGhfc3lzcm9vdAoJaXMgc3BlY2lmaWVkIG9yIGlmIGJ1aWxkaW5nIGEgY3Jvc3MgY29tcGlsZXIuCgkoVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSk6IEFkZCBUQVJHRVRfU1lTVEVNX1JPT1RfUkVMT0NBVEFCTEUKCWlmIHRoZSBzeXNyb290IGlzIHVuZGVyICRleGVjX3ByZWZpeC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY3BwZGVmYXVsdC5oOiBVc2UgbmF0aXZlIGluY2x1ZGUgcGF0aHMgaWYgVEFSR0VUX1NZU1RFTV9ST09UIGlzCglkZWZpbmVkLgoJKHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUpOiBBZGQgYWRkX3N5c3Jvb3QgZmllbGQuCgkoY3BwX1NZU1JPT1QpOiBEZWNsYXJlLgoJKiBjcHBkZWZhdWx0LmMgKGNwcF9pbmNsdWRlX2RlZmF1bHRzKTogRmlsbCBpbiBhZGRfc3lzcm9vdAoJZmllbGQuCgkoY3BwX1NZU1JPT1QpOiBOZXcgdmFyaWFibGUuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBJbml0aWFsaXplCglDUFBfT1BUSU9OIChwZmlsZSwgc3lzcm9vdCkuCgkoaW5pdF9zdGFuZGFyZF9pbmNsdWRlcyk6IEhhbmRsZSBhZGRfc3lzcm9vdC4gIERvIG5vdAoJYWRkIHVucmVsb2NhdGVkIGNvcGllcyBvZiByZWxvY2F0ZWQgZGlyZWN0b3JpZXMuCgkoQ09NTUFORF9MSU5FX09QVElPTlMpOiBBZGQgLWlzeXNyb290LgoJKGNwcF9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIC1pc3lzcm9vdC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IEFkZCBzeXNyb290IG1lbWJlci4KCSogZ2NjLmMgKFRoZSBTcGVjcyBMYW5ndWFnZSk6IFVwZGF0ZSBkZXNjcmlwdGlvbiBvZiAlSS4KCSh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCk6IE5ldyB2YXJpYWJsZS4KCShwcm9jZXNzX2NvbW1hbmQpOiBDb25kaXRpb25hbGl6ZSBtYWtlX3JlbGF0aXZlX3ByZWZpeCBjYWxsCglvbiAhVk1TIGFuZCBUQVJHRVRfU1lTVEVNX1JPT1RfUkVMT0NBVEFCTEUuICBTZXQKCXRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkLgoJKGRvX3NwZWNfMSk6IEFkZCAtaXN5c3Jvb3QgdG8gJUkuCgkqIGRvYy9pbnZva2UudGV4aSAoU3BlYyBGaWxlcyk6IFVwZGF0ZSBkZXNjcmlwdGlvbiBvZiAlSS4KCSogZG9jL2luc3RhbGwudGV4aSAoLS13aXRoLXN5c3Jvb3QpOiBVcGRhdGUgY29tbWVudCBhYm91dAoJcmVsb2NhdGlvbi4KCjIwMDMtMDItMTMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGEgcGVlcGhvbGUyKTogTmV3LgoKMjAwMy0wMi0xMyAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCSAgICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChTcGVjaWZpYyk6IFVwZGF0ZSB0aHJlZSBTQ08tcmVsYXRlZCBVUkxzLgoKMjAwMy0wMi0xMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNncmFwaC5jIChTRVRfTlBSRURFQ0VTT1JTKTogQWRkIGludGVybWVkaWF0ZSBjYXN0IHRvIHNpemVfdC4KCVBhcmVudGhlc2l6ZSBwcm9wZXJseS4KCShOUFJFREVDRVNPUlMpOiBQYXJlbnRoZXNpemUgcHJvcGVybHkuCgoyMDAzLTAyLTEzICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHRpbWV2YXIuaCAoUE9QX1RJTUVWQVJfQU5EX1JFVFVSTik6IE5ldyBtYWNyby4KCjIwMDMtMDItMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoVU5TUEVDX0ZQQVRBTik6IE5ldyBVTlNQRUMgY29uc3RhbnQuCgkoYXRhbjJzZjMsIGF0YW4yZGYzLCBhdGFuMnhmMywgYXRhbjJ0ZjMpOiBOZXcgcGF0dGVybnMuCgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiBBZGQgc3VwcG9ydCBmb3IgYmluYXJ5CglVTlNQRUMgaW5zdHJ1Y3Rpb25zIChlLmcuICJmcGF0YW4iKS4KCjIwMDMtMDItMTIgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogdmFycmF5LmMgKGVsZW1lbnRfc2l6ZSk6IFJlbW92ZS4KCSh1c2VzX2dnYyk6IFJlbW92ZS4KCShlbGVtZW50KTogQWRkLgoJKHZhcnJheV9pbml0KTogVXNlIG5ldyBpbnRlcmZhY2UuCgkodmFycmF5X2dyb3cpOiBVc2UgbmV3IGludGVyZmFjZS4KCSh2YXJyYXlfY2xlYXIpOiBVc2UgbmV3IGludGVyZmFjZS4KCjIwMDMtMDItMTIgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLmg6IEFkZCBjYXN0cyB0byB0aGUgYXJndW1lbnRzIG9mIHRoZSBmb2xsb3dpbmcKCW1hY3JvczogZXZmc2FicywgZXZmc25hYnMsIGV2ZnNuZWcsIGV2ZnNhZGQsIGV2ZnNzdWIsIGV2ZnNtdWwsCglldmZzZGl2LCBldmZzY2Z1aSwgZXZmc2Nmc2kgZXZmc2NmdWYgZXZmc2Nmc2YsIGV2ZnNjdHVpLCBldmZzY3RzaSwKCWV2ZnNjdHVmLCBldmZzY3RzZiwgZXZmc2N0dWl6LCBldmZzY3RzaXosIF9fZXZfZ2V0X3VwcGVyKiwKCV9fZXZfZ2V0X2xvd2VyKiwgX19ldl9nZXRfdTMyLCBfX2V2X2dldF9zMzIsIF9fZXZfZ2V0X2ZzLAoJX19ldl9nZXRfdTE2LCBfX2V2X2dldF9zMTYuCgoyMDAzLTAyLTEyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IE5ldy4KCjIwMDMtMDItMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluIChDUlRTVFVGRl9DRkxBR1MpOiBBZGQgLWZuby11bml0LWF0LWEtdGltZQoJKE9CSlMpOiBBZGQgY2dyYXBoLm8KCShjZ3JhcGgubyk6IE5ldy4KCSogYy1kZWNsLmMgKGV4cGFuZF9ib2R5XzEpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShleHBhbmRfYm9keSk6IFRoaXMgb25lOyAgY2hhbmdlIGNhbGxpbmcgY29udmVudGlvbgoJKGZpbmlzaF9mdW5jdGlvbik6IE1vdmUgc29tZSBvZiBleHBhbmRfYm9keSBsb2dpYyBoZXJlLgoJKGNfZXhwYW5kX2RlZmVycmVkX2Z1bmN0aW9uKTogVXBkYXRlIGNhbGwgb2YgZXhwYW5kX2JvZHkKCShjX2V4cGFuZF9zdG10KTogVXNlIGNfZXhwYW5kX2JvZHlfMS4KCSogYy1sYW5nLmMgKExBTkdfSE9PS1NfQ0FMTEdSQVBIX0VYUEFORF9GVU5DVElPTik6IERlZmluZS4KCSogYy1vYmpjLWNvbW1pbi5jIChjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlKTogVXNlIGNhbGxncmFwaCBjb2RlLgoJKiBjLXRyZWUuaCAoY19leHBhbmRfYm9keSk6IERlY2xhcmUuCgkqIGNncmFwaC5jOiBOZXcgZmlsZS4KCSogZmxhZ3MuaCAoZmxhZ191bml0X2F0X2FfdGltZSk6IERlY2xhcmUuCgkqIGxhbmdob29rcy5oIChMQU5HX0hPT0tTX0NBTExHUkFQSF9MT1dFUl9GVU5DVElPTiwKCUxBTkdfSE9PS1NfQ0FMTEdSQVBIX0VYUEFORF9GVU5DVElPTiwKCUxBTkdfSE9PS1NfQ0FMTEdSQVBIX0lOSVRJQUxJWkVSKTogTmV3IG1hY3Jvcy4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl9jYWxsZ3JhcGgpOiBOZXcuCgkoc3RydWN0IGxhbmdfaG9va3MpOiBBZGQgY2FsbGdyYXBoIGZpZWxkLgoJKiB0b3BsZXYuYyAoZmxhZ191bml0X2F0X2FfdGltZSk6IE5ldy4KCShsYW5nX2luZGVwZW5kZW50X29wdGlvbnMpOiBBZGQgZmxhZ191bml0X2F0X2FfdGltZS4KCShwcm9jZXNzX29wdGlvbnMpOiBEaXNhYmxlIHVuaXQtYXQtYS10aW1lIG1vZGUgZm9yIGZyb250ZW5kcyBub3QKCXN1cHBvcnRpbmcgY2FsbGdyYXBoLgoJKiB0cmVlLWlubGluZS5jICh0eXBlZGVmIHN0cnVjdCBpbmxpbmVfZGF0YSk6IEFkZCAiZGVjbCIKCShleHBhbmRfY2FsbF9pbmxpbmUpOiBVcGRhdGUgY2FsbGdyYXBoLgoJKG9wdGltaXplX2lubGluZV9jYWxscyk6IFNldCBpZC5kZWNsLgoJKiB0cmVlLmggKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbiwgY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQsCgljZ3JhcGhfY3JlYXRlX2VkZ2VzLCBkdW1wX2NncmFwaCwgY2dyYXBoX29wdGltaXplLCBjZ3JhcGhfcmVtb3ZlX2NhbGwKCWNncmFwaF9jYWxsc19wKTogRGVjbGFyZS4KCSogaW52b2tlLnRleGkgKC1mdW5pdC1hdC1hLXRpbWUpOiBEb2N1bWVudC4KCjIwMDMtMDItMTIgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLmg6IEZpeCBtaXNjIGZvcm1hdHRpbmcuCgkoX19ldl9jcmVhdGVfdWZpeDMyX2ZzKTogQ2FzdCBldiBhcmd1bWVudC4KCShfX2V2X2NyZWF0ZV9zZml4MzJfZnMpOiBTYW1lLgoJKF9fZXZfZ2V0X3NmaXgzMl9mc19pbnRlcm5hbCk6IENhc3QgYXJndW1lbnRzIHRvIGJ1aWx0aW5zLgoJKF9fZXZfZ2V0X3VmaXgzMl9mc19pbnRlcm5hbCk6IFNhbWUuCgoyMDAzLTAyLTEyICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIGRvYy90bS50ZXhpIChNT0RJRllfSk5JX01FVEhPRF9DQUxMKTogRG9jdW1lbnQuCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oIChNT0RJRllfSk5JX01FVEhPRF9DQUxMKTogTmV3IG1hY3JvLgoKMjAwMy0wMi0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGxpYi5jIChkb19pbmNsdWRlX2NvbW1vbik6IE1vdmUgd2FybmluZ3MgZm9yCgkjaW5jbHVkZV9uZXh0IGFuZCAjaW1wb3J0IG91dCB0byBjYWxsZXJzLiAgVXNlIGVhcmx5LXJldHVybgoJaW5zdGVhZCBvZiBuZXN0ZWQgaWZzLiAgRG9uJ3QgZG8gY2hlY2tfZW9sIGhlcmUuCgkocGFyc2VfaW5jbHVkZSk6IERvIGNoZWNrX2VvbCBoZXJlIHdpdGggdGhlIHJlc3Qgb2YgdGhlCglwYXJzaW5nIHN0dWZmLgoJKGRvX2luY2x1ZGVfbmV4dCwgZG9faW1wb3J0KTogTm93IGhhbmRsZSB3YXJuaW5ncy4KCjIwMDMtMDItMTEgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFNwZWNpZmljKTogVXBkYXRlIEFWUi0gYW5kIERhcndpbi1yZWxhdGVkIFVSTHMuCgoyMDAzLTAyLTEyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogIEZpeCByb3VuZG9mZiBlcnJvci4KCjIwMDMtMDItMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGEgcGVlcGhvbGUyKTogRG9uJ3QgaGFuZGxlIDY1NTM1LgoJKHR3byBwZWVwaG9sZTIpOiBOZXcuCgoyMDAzLTAyLTEyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChzZXZlcmFsIHBlZXBob2xlMik6IFJlcGxhY2UKCWZpbmRfcmVnbm9fbm90ZSB3aXRoIHBlZXAyX3JlZ19kZWFkX3AuCgoyMDAzLTAyLTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2NzZS5jIChsb29rdXBfc2V0KTogUmVtb3ZlIHVudXNlZCBhcmd1bWVudCBQQVQuICBVcGRhdGUKCWJvdGggY2FsbGVycy4KCjIwMDMtMDItMTEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZGlhZ25vc3RpYy5jIChyZWFsX2Fib3J0KTogTmV3LgoJKGRpYWdub3N0aWNfcmVwb3J0X2RpYWdub3N0aWMpOiBDYWxsIHJlYWxfYWJvcnQgb24gZXJyb3IuCgkqIGRpYWdub3N0aWMuaCAoZGlhZ25vc3RpY19hYm9ydF9vbl9lcnJvcik6IE5ldy4KCShzdHJ1Y3QgZGlhZ25vc3RpY19jb250ZXh0KTogQWRkIGFib3J0X29uX2Vycm9yIGZpZWxkLgoJKiB0b3BsZXYuYyAoc2V0dXBfY29yZV9kdW1waW5nKTogTmV3LgoJKGRlY29kZV9kX29wdGlvbik6IEhhbmRsZSAnSCcgY2FzZS4KCSogZG9jL2ludm9rZS50ZXhpIChEZWJ1Z2dpbmcgT3B0aW9ucyk6IERvY3VtZW50IC1kSC4KCjIwMDMtMDItMTEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBwb2ludGxlc3Mgc2V0dGluZyBvZiBDWFhGTEFHUyBmb3IgZGVqYWdudQoJd2hpY2ggcmVmZXJzIHRvIG9ic29sZXRlIGRpcmVjdG9yaWVzLgoKMjAwMy0wMi0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9saW51eC5oIChUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IE5ldy4KCjIwMDItMTAtMjEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoY29udGFpbnNfMTI4Yml0X2FsaWduZWRfdmVjdG9yX3ApOiBOZXcgZnVuY3Rpb24uCgkoaXg4Nl9mdW5jdGlvbl9hcmdfYm91bmRhcnkpOiBQcm9wZXJseSBhbGlnbiB2ZWN0b3IgbW9kZXMuCgoyMDAzLTAyLTExICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EubWQgKHNldF9mcmFtZV9wdHIpOiBDaGFuZ2UgcnRsIHRvIHNldCByZWcgYTcuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9yZW9yZyk6IFNlYXJjaCBmb3IgVU5TUEVDVl9TRVRfRlAKCWFzIGEgU0VUIHBhdHRlcm4uCgoyMDAzLTAyLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmM6ICBGaXggZmFpbHVyZSBjYXVzZWQgYnkgY29tbWl0aW5nIHdyb25nIHBhdGNoLgoKMjAwMy0wMi0xMSAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoJKiByYS1idWlsZC5jIChjb21wYXJlX2FuZF9mcmVlX3dlYnMpOiAgUmVsYXggY2hlY2tpbmcuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEhPVF9URVhUX1NFQ1RJT05fTkFNRSk6ICBEZWZpbmUuCgkoVU5MSUtFTFlfRVhFQ1VURURfVEVYVF9TRUNUSU9OX05BTUUpOiAgRGVmaW5lLgoKMjAwMy0wMi0xMSAgRmFsayBIdWVmZm5lciAgPGZhbGsuaHVlZmZuZXJAc3R1ZGVudC51bmktdHVlYmluZ2VuLmRlPgoKCVBSIG9wdGltaXphdGlvbi85NjUxCgkqIHJ0bGFuYWwuYyAobWF5X3RyYXBfcCk6IEhhbmRsZSBGSVguCgoyMDAzLTAyLTExICBEYXZlIEpvbmVzIDxkYXZlakBjb2RlbW9ua2V5Lm9yZy51az4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IERlZmluZSBjMy0yIGFzIGEgNjg2IHdpdGggU1NFLgoJKiBkb2MvaW52b2tlLnRleGk6IEV4dHJhIGFsaWFzLgoKMjAwMy0wMi0xMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2hvc3QtZGFyd2luLmM6IEZpeCBjb21tZW50LgoKMjAwMy0wMi0xMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRpdm1vZHNpNCk6IFVzZSByZWdpc3Rlcl9vcGVyYW5kCglwcmVkaWNhdGUgZm9yIG1vZCByZXN1bHQuCgoyMDAzLTAyLTExICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogaW5jbGhhY2suZGVmIChocHV4X2xvbmdfZG91YmxlLCBocHV4MTBfY3R5cGVfZGVjbGFyYXRpb25zMSwKCWhwdXgxMF9jdHlwZV9kZWNsYXJhdGlvbnMyLCBocHV4X2N0eXBlX21hY3Jvcyk6IE5ldyBoYWNrcy4KCSogZml4aW5jbC54OiBSZWJ1aWx0LgoJKiB0ZXN0cy9iYXNlL3N0ZGxpYi5oOiBVcGRhdGUuCgkqIHRlc3RzL2Jhc2UvY3R5cGUuaDogTmV3IGZpbGUuCgoyMDAzLTAyLTExICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBlbWl0LXJ0bC5jIChlbWl0X2NvcHlfb2ZfaW5zbl9hZnRlcik6IENvcHkgaW5zbiByZWNvZyBjYWNoZSB0b28uCgoyMDAzLTAyLTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9tb3ZzdHIpOiBGYWlsIGlmIGVzaSBvciBlZGkKCWFwcHJvcHJpYXRlZCBhcyBnbG9iYWxzLgoJKGl4ODZfZXhwYW5kX2NscnN0cik6IFNpbWlsYXJseS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoY21wc3Ryc2kpOiBTaW1pbGFybHkuCgoyMDAzLTAyLTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IEFkZCBhIGNhc2Ugb2YgMjU1LgoKMjAwMy0wMi0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBvcHRhYnMuaCAoZW51bSBvcHRhYl9pbmRleCk6IEFkZCBuZXcgT1RJX3BvdyBhbmQgT1RJX2F0YW4yLgoJKHBvd19vcHRhYiwgYXRhbjJfb3B0YWIpOiBEZWZpbmUgY29ycmVzcG9uZGluZyBtYWNyb3MuCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgcG93X29wdGFiIGFuZCBhdGFuMl9vcHRhYi4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEltcGxlbWVudCBwb3dfb3B0YWIgYW5kIGF0YW4yX29wdGFiCgl1c2luZyBwb3c/ZjMgYW5kIGF0YW4yP2YzIHBhdHRlcm5zLgoJKiBidWlsdGlucy5jIChleHBhbmRfZXJybm9fY2hlY2spOiBOZXcgZnVuY3Rpb24gdG8gdXBkYXRlIGVycm5vCglpZiBuZWNlc3NhcnksIHNwbGl0IG91dCBmcm9tIGV4cGFuZF9idWlsdGluX21hdGhmbi4KCShleHBhbmRfYnVpbHRpbl9tYXRoZm4pOiBVc2UgZXhwYW5kX2Vycm5vX2NoZWNrLgoJKGV4cGFuZF9idWlsdGluX21hdGhmbl8yKTogTmV3IGZ1bmN0aW9uIHRvIGhhbmRsZSBleHBhbmRpbmcgYmluYXJ5CgltYXRoIGZ1bmN0aW9ucywgcmV1c2luZyB0aGUgY29kZSBpbiBleHBhbmRfZXJybm9fY2hlY2suCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgdGhlIHBvdyBhbmQgYXRhbjIgbWF0aCBidWlsdC1pbnMsCglCVUlMVF9JTl97UE9XLFBPV0YsUE9XTCxBVEFOMixBVEFOMkYsQVRBTjJMfSB2aWEgdGhlIG5ldyBmdW5jdGlvbgoJZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzIuCgoJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgbmV3IHBvdz9mMyBhbmQgYXRhbjI/ZjMgcGF0dGVybnMuCgoyMDAzLTAyLTExICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogRml4IGZvbGRpbmcgb2YKCW5lc3RlZCBmbG9hdF90cnVuY2F0ZXMuCgoyMDAzLTAyLTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IEZpeCBhIHR5cG8uCgoyMDAzLTAyLTExICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tYyAocmV0dXJuX2FkZHJlc3NfbWFzayk6IFVzZSBDQ19SRUdOVU0gZm9yIHRoZSBjb25kaXRpb24gY29kZQoJcmVnaXN0ZXIgbnVtYmVyLgoKMjAwMy0wMi0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaDogQWRkIGEgcHJvdG90eXBlIGZvcgoJZ3R1bGV1X29wZXJhdG9yLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoZ3R1bGV1X29wZXJhdG9yKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGd0dWxldV9vcGVyYXRvci4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHBlZXBob2xlMik6IE5ldy4KCjIwMDMtMDItMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHNjaGVkLWViYi5jIChzY2hlZHVsZV9lYmJzKTogRG8gbm90IHZlcmlmeV9mbG93X2luZm8uCgoyMDAzLTAyLTExICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBwcmVkaWN0LmMgKGNob29zZV9mdW5jdGlvbl9zZWN0aW9uKTogQ2hvb3NlIHNlY3Rpb25zIGNvcnJlY3RseS4KCjIwMDMtMDItMTAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiByZWxvYWQxLmMgKGZpcnN0X2xhYmVsX251bSk6IE5ldy4KCShyZWxvYWQpOiBJbmRleCBvZmZzZXRzX2tub3duX2F0IGFuZCBvZmZzZXRzX2F0IHVzaW5nIGRpZmZlcmVuY2Ugb2YKCWxhYmVsIG51bWJlciBhbmQgZmlyc3QgbGFiZWwgbnVtYmVyLiAgRG9uJ3QgdXNlIG9mZnNldCBwb2ludGVycy4KCShzZXRfbGFiZWxfb2Zmc2V0cywgc2V0X2luaXRpYWxfbGFiZWxfb2Zmc2V0cyk6IExpa2V3aXNlLgoKMjAwMy0wMi0xMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBtaXBzLXRmaWxlLmMgKGluaXRfZmlsZSk6IEFkZCBtaXNzaW5nIGluaXRpYWxpemVycyBpbiB0aGUKCSIjaWZkZWYgX19hbHBoYSIgY2FzZS4KCShmaWxlX29mZnNldCwgbWF4X2ZpbGVfb2Zmc2V0KTogRGVjbGFyZSBhcyB1bnNpZ25lZCBsb25nLgoJKHdyaXRlX3ZhcnJheSk6IENhc3QgdG8gInVuc2lnbmVkIGxvbmciIGluIGNvbXBhcmlzb25zIGFnYWluc3QKCWVpdGhlciBmaWxlX29mZnNldCBvciBtYXhfZmlsZV9vZmZzZXQuCgkod3JpdGVfb2JqZWN0KTogTGlrZXdpc2UuCgkocmVhZF9zZWVrKTogTGlrZXdpc2UuCgkoY29weV9vYmplY3QpOiBMaWtld2lzZS4gRGVjbGFyZSAiaWZkIiBhcyBpbnQgdG8gbWF0Y2ggaXRzIHVzZQoJaW4gYWRkX2V4dF9zeW1ib2wsIGFuZCBhdm9pZCBzaWduZWQvdW5zaWduZWQgY29uZGl0aW9uYWwgd2FybmluZy4KCjIwMDMtMDItMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgkgICAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9lYWJpc3BlLmggKFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogRG8gbm90CglvdmVycmlkZSBvcHRpb25zIHdoaWNoIGhhdmUgYmVlbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCjIwMDMtMDItMTAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGFic3NmMik6IE5ldy4KCSgqYWJzc2YyX2g4MzAwKTogTGlrZXdpc2UuCgkoKmFic3NmMl9oODMwMGhzKTogTGlrZXdpc2UuCgoyMDAzLTAyLTEwICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiB0cmVlLmMgKGJ1aWxkX3RyZWVfbGlzdCk6ICBGaXggcGFyYW1ldGVyIG5hbWVzIGluIGNvbW1lbnQuCgoyMDAzLTAyLTEwICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcHBjNjQtZnAuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvdC1saW51eDY0IChMSUIyRlVOQ1NfRVhUUkEpOiBBZGQgcHBjNjQtZnAuYy4KCjIwMDMtMDItMTAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluIChiYi1yZW9yZGVyLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiAkKEZJQkhFQVBfSCkuCgkqIGJiLXJlb3JkZXIuYyAobWFrZV9yZW9yZGVyX2NoYWluKTogRGVsZXRlZC4KCShtYWtlX3Jlb3JkZXJfY2hhaW5fMSk6IERlbGV0ZWQuCgkoZmluZF90cmFjZXMpOiBOZXcgZnVuY3Rpb24uCgkocm90YXRlX2xvb3ApOiBOZXcgZnVuY3Rpb24uCgkobWFya19iYl92aXNpdGVkKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfdHJhY2VzXzFfcm91bmQpOiBOZXcgZnVuY3Rpb24uCgkoY29weV9iYik6IE5ldyBmdW5jdGlvbi4KCShiYl90b19rZXkpOiBOZXcgZnVuY3Rpb24uCgkoYmV0dGVyX2VkZ2VfcCk6IE5ldyBmdW5jdGlvbi4KCShjb25uZWN0X3RyYWNlcyk6IE5ldyBmdW5jdGlvbi4KCShjb3B5X2JiX3ApOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X3VuY29uZF9qdW1wX2xlbmd0aCk6IE5ldyBmdW5jdGlvbi4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFVzZSBuZXcgZnVuY3Rpb25zIChTb2Z0d2FyZSBUcmFjZSBDYWNoZSkuCgkqIGNmZ2NsZWFudXAuYyAob3V0Z29pbmdfZWRnZXNfbWF0Y2gpOiBFbmFibGUgY3Jvc3NqdW1waW5nIGFjcm9zcyBsb29wCglib3VuZGFyaWVzLgoKMjAwMy0wMi0xMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYmRlc2NfMmFyZyk6IENoYW5nZSBzcGVfZXZ4b3IgdG8geG9ydjJzaTMuCgoyMDAzLTAyLTA5ICBEYW4gTmljb2xhZXNjdSAgPGRhbm5AaWNzLnVjaS5lZHU+CgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2RlY2wpOiBSZW1vdmUgdW51c2VkIGxpdmVfcmFuZ2VfcnRsIGZpZWxkLgoJKERFQ0xfTElWRV9SQU5HRV9SVEwpOiBSZW1vdmUuCgoyMDAzLTAyLTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hb2YuaCwgY29uZmlnL2FybS9hb3V0LmgsIGNvbmZpZy9hcm0vYXJtLW1vZGVzLmRlZiwKCWNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oLCBjb25maWcvYXJtL2FybS5jLCBjb25maWcvYXJtL2FybS5oLAoJY29uZmlnL2FybS9hcm0ubWQsIGNvbmZpZy9hcm0vY2lycnVzLm1kLCBjb25maWcvYXJtL2NvZmYuaCwKCWNvbmZpZy9hcm0vY29uaXgtZWxmLmgsIGNvbmZpZy9hcm0vZWNvcy1lbGYuaCwgY29uZmlnL2FybS9lbGYuaCwKCWNvbmZpZy9hcm0vZnJlZWJzZC5oLCBjb25maWcvYXJtL2xpbnV4LWVsZi5oLAoJY29uZmlnL2FybS9saW51eC1nYXMuaCwgY29uZmlnL2FybS9uZXRic2QtZWxmLmgsCgljb25maWcvYXJtL25ldGJzZC5oLCBjb25maWcvYXJtL3BlLmMsIGNvbmZpZy9hcm0vcGUuaCwKCWNvbmZpZy9hcm0vcnRlbXMtZWxmLmgsIGNvbmZpZy9hcm0vc2VtaS5oLCBjb25maWcvYXJtL3NlbWlhb2YuaCwKCWNvbmZpZy9hcm0vc3Ryb25nYXJtLWNvZmYuaCwgY29uZmlnL2FybS9zdHJvbmdhcm0tZWxmLmgsCgljb25maWcvYXJtL3N0cm9uZ2FybS1wZS5oLCBjb25maWcvYXJtL3VjbGludXgtZWxmLmgsCgljb25maWcvYXJtL3Vua25vd24tZWxmLW9hYmkuaCwgY29uZmlnL2FybS91bmtub3duLWVsZi5oLAoJY29uZmlnL2FybS94c2NhbGUtZWxmLmg6IFJlcGxhY2Ugb2NjdXJhbmNlcyBvZiAiR05VIENDIiB3aXRoICJHQ0MiCglhbmQgcmVmb3JtYXQgYXMgYXBwcm9wcmlhdGUuCgoyMDAzLTAyLTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2NsenNpMi5jOiBSZW1vdmUuCgkqIGNvbmZpZy9oODMwMC9jdHpzaTIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9wYXJpdHlzaTIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9wb3Bjb3VudHNpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL3QtaDgzMDAgKExJQjJGVU5DU19FWFRSQSk6IFJlbW92ZSBjbHpzaTIsCgljdHpzaTIsIHBhcml0eXNpMiwgYW5kIHBvcGNvdW50c2kyLgoKMjAwMy0wMi0xMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBDaHJpc3RpYW4gRWhyaGFyZHQgIDxlaHJoYXJkdEBtYXRoZW1hdGlrLnVuaS11bG0uZGU+CgoJUFIgYy83NzQxCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEaXNjYXJkIHRoZSBpbml0aWFsaXplciBvZiB0aGUKCW5ldyBkZWNsIHdoZW4gdGhlIHR5cGVzIGFyZSBjb25mbGljdGluZy4KCjIwMDMtMDItMTAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmluIChzcmVhbC5vKTogQWRkZWQuCgkocHJlZGljdC5vKTogRGVwZW5kcyBvbiBzcmVhbC5oIGluc3RlYWQgb2YgcmVhbC5oLgoJKiBzcmVhbC5jOiBOZXcgZmlsZS4KCSogc3JlYWwuaDogTmV3IGZpbGUuCgkqIHByZWRpY3QuYzogVXNlIHNyZWFsLmMgaW5zdGVhZCBvZiByZWFsLmMuCgoyMDAzLTAyLTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogQ29udHJpYnV0ZWQgc3VwcG9ydCBmb3IgdGhlIENpcnJ1cyBFUDkzMTIgIk1hdmVyaWNrIgoJZmxvYXRpbmcgcG9pbnQgY28tcHJvY2Vzc29yLiAgV3JpdHRlbiBieSBBbGR5IEhlcm5hbmRlegoJPGFsZHloQHJlZGhhdC5jb20+LgoJKGNvbmZpZy9hcm0vYXJtLmMpOiBBZGQgQ2lycnVzIHN1cHBvcnQuCgkoY29uZmlnL2FybS9hcm0uaCk6IExpa2V3aXNlLgoJKGNvbmZpZy9hcm0vYW91dC5oKTogTGlrZXdpc2UuCgkoY29uZmlnL2FybS9hcm0ubWQpOiBMaWtld2lzZS4KCShjb25maWcvYXJtL2FybS1wcm90b3MuaCk6IExpa2V3aXNlLgoJKGNvbmZpZy5nY2MpOiBMaWtld2lzZS4KCShkb2MvaW52b2tlLnRleGkpOiBEZXNjcmliZSBuZXcgLW1jcHUgdmFsdWUgYW5kIG5ldwoJLW1jaXJydXMtZml4LWludmFsaWQtaW5zbnMgc3dpdGNoLAoJKGNpcnJ1cy5tZCk6IE5ldyBmaWxlLgoKMjAwMy0wMi0xMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IFNpbXBsaWZ5IHVzaW5nCgkoZmxvYXRfdHJ1bmNhdGUgKGZsb2F0IHgpKSBpcyAoZmxvYXQgeCkKCShmbG9hdF9leHRlbmQgKGZsb2F0X2V4dGVuZCB4KSkgaXMgKGZsb2F0X2V4dGVuZCB4KS4KCjIwMDMtMDItMTAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjYWxscy5jICh0cnlfdG9faW50ZWdyYXRlKTogVGlkeSBzdGFja191c2FnZV9tYXAgYWNjZXNzLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lzZS4JRm9ybWF0dGluZy4KCShzdG9yZV9vbmVfYXJnKTogTGlrZXdpc2UuCgoyMDAzLTAyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoJICAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLm1kOiBzcGVfZXZsaGhlc3BsYXQsIHNwZV9ldmxoaG9zc3BsYXQsCglzcGVfZXZsaGhvdXNwbGF0LCBzcGVfZXZsd2hzcGxhdCwgc3BlX2V2bHd3c3BsYXQsIHNwZV9ldmxkZCwKCXNwZV9ldmxkaCwgc3BlX2V2bGR3LCBzcGVfZXZsd2hlLCBzcGVfZXZsd2hvcywgc3BlX2V2bHdob3UsCglzcGVfZXZzdGRkLCBzcGVfZXZzdGRoLCBzcGVfZXZzdGR3LCBzcGVfZXZzdGR3eCwgc3BlX2V2c3R3aGUsCglzcGVfZXZzdHdobywgc3BlX2V2c3R3d2UsIHNwZV9ldnN0d3dvOiBGaXggc3ludGF4IHRvIG1hdGNoIG5ld2VzdAoJZG9jcy4gIEFkZCByYW5nZSB0ZXN0IGZvciBpbW1lZGlhdGUgdmFsdWUuCgoyMDAzLTAyLTA5ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJUmVuYW1lIHNwZV9ldnhvciB0byB4b3J2MnNpMy4KCSh4b3J2NGhpMyk6IE5ldy4KCSh4b3J2MWRpMyk6IE5ldy4KCjIwMDMtMDItMTAgIEdsZW4gTmFrYW11cmEgIDxnbGVuQGltb2R1bG8uY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChDKys5OCBUaHJlYWQtTG9jYWwgRWRpdHMpOiBBZGQgbWlzc2luZyBAaXRlbQoJdGFnLgoKMjAwMy0wMi0xMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jICh2ZWN0b3JfbW92ZV9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KCShpeDg2X2V4cGFuZF92ZWN0b3JfbW92ZSk6IEJlIGhhcHB5IGFib3V0IDAuCgkqIGkzODYuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIHNzZS1tb3ZlX29wZXJhbmQuCgkqIGkzODYubWQgKG1vdipfaW50ZXJuYWwpOiBBZGQgJ0MnIGFsdGVybmF0aXZlLgoKMjAwMy0wMi0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoZmxvYXRoaSopOiBEZWFsIHdpdGggU1NFLgoKMjAwMy0wMi0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbiwKCXNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiAgRGVhbCB3aXRoIHZlY3RvciBtb2RlcwoJKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogIERlYWwgd2l0aCBuby1vcCBWRUNfTUVSR0UuCgoyMDAzLTAyLTA5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJlY29tcHV0ZSByZWdpc3RlciB1c2FnZSBhZnRlcgoJc3BsaXRfYWxsX2luc25zLgoKMjAwMy0wMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYy1zdGQudmVyIChfX2NsenRmMik6IE5ldy4KCShfX2N0enRmMiwgX19wb3Bjb3VudHRmMiwgX19wYXJpdHl0ZjIpOiBOZXcuCgkqIGxpYmdjYzIuYyAoX19jbHpTSTIsIF9fY2x6REkyLCBfX2N0elNJMiwgX19jdHpESTIsIF9fcG9wY291bnRTSTIsCglfX3BvcGNvdW50REkyLCBfX3Bhcml0eVNJMiwgX19wYXJpdHlESTIpOiBVc2UgVVdtb2RlIGFuZCBVRFdtb2RlOwoJYWRqdXN0IGNvZGUgdG8gbWF0Y2ggdGhlIGRpZmZlcmVudCB0eXBlIHNpemVzLgoJKiBsaWJnY2MyLmggKF9fY2x6U0kyLCBfX2N0elNJMiwgX19wb3Bjb3VudFNJMiwgX19wYXJpdHlTSTIsCglfX2NsekRJMiwgX19jdHpESTIsIF9fcG9wY291bnRESTIsIF9fcGFyaXR5REkyKTogTmV3IG1hY3Jvcy4KCgkqIG9wdGFicy5jIChpbml0X2ludGVncmFsX2xpYmZ1bmNzKTogRG9uJ3QgaGFyZC1jb2RlIFNJbW9kZSBhbmQKCVRJbW9kZTsgc2VsZWN0IHdvcmRfbW9kZSBhbmQgdHdpY2UgdGhhdC4KCShpbml0X2Zsb2F0aW5nX2xpYmZ1bmNzKTogRG9uJ3QgaGFyZC1jb2RlIFNGbW9kZSBhbmQgVEZtb2RlOwoJc2VsZWN0IHRoZSBtb2RlcyBmcm9tIGZsb2F0LCBkb3VibGUsIGFuZCBsb25nIGRvdWJsZS4KCShpbml0X29wdGFicyk6IFJlbW92ZSBkdXBsaWNhdGUgaW5pdGlhbGl6YXRpb25zLgoKMjAwMy0wMi0wOSAgV29sZmdhbmcgQmFuZ2VydGggIDxiYW5nZXJ0aEB0aWNhbS51dGV4YXMuZWR1PgoKCSogZG9jL2luc3RhbGwudGV4aTogU3F1ZWV6ZSBhbmQgc3RyZWFtbGluZSBzZWN0aW9uIG9uCgl0ZXN0aW5nIGFuZCByZWdyZXNzaW9uIGNoZWNraW5nLgoKMjAwMy0wMi0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWhpP3YqMyk6IFNldCB0aGlyZCBvcGVyYW5kIHR5cGUgdG8gVEltb2RlLgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX2Jpbm9wX2J1aWx0aW4pOiBFeHRlbmQgb3BlcmFuZCB3aGVuIG5lZWRlZC4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9zdWJyZWcpOiBGaXggY29udmVyc2lvbiBmcm9tIHZlY3RvciBpbnRvCglpbnRlZ2VyIG1vZGUuCgoJKiBydGwuZGVmIChWRUNfTUVSR0UsIFZFQ19TRUxFQ1QsIFZFQ19DT05DQVQsIFZFQ19EVVBMSUNBVEUpOgoJQ2hhbmdlIGNvZGUgc28gdGhleSBhcmUgYXJpdGhtZXRpYyBleHByZXNzaW9ucyBub3cuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24sIHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24sCglzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IERlYWwgd2l0aCBWRUNfKiBleHByZXNzaW9ucy4KCgkqIGkzODYubWQgKHZtYXNrY21wLCBwaW5zcncsIG1vdmQgcGF0dGVybnMpOiAgRml4IFJUTCByZXByZXNlbnRhdGlvbi4KCjIwMDMtMDItMDggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ3J0bC5jICh2ZXJpZnlfZmxvd19pbmZvKTogIFVzZSBjb250cm9sX2Zsb3dfaW5zbl9wLgoJKiByZWxvYWQxLmMgKGZpeHVwX2Fibm9ybWFsX2VkZ2VzKTogIFNwbGl0IGJhc2ljIGJsb2NrcyB3aGVuIEVIIGVkZ2VzCglwb3NzaWJseSBnb3QgZHVwbGljYXRlZC4KCjIwMDMtMDItMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFR1cm4gb2ZmIGV4cGxpY2l0CglyZWxvY3MgdW50aWwgcG9zdC1wZWVwMiBjb2RlIGR1cGxpY2F0aW9uIHJlc29sdmVkLgoKMjAwMy0wMi0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIG9wdGFicy5jIChleHBhbmRfdW5vcCk6IFdpZGVuIGNseiBwcm9wZXJseSB3aGVuIGNseiBpcyBkb25lCgl2aWEgbGliY2FsbC4KCjIwMDMtMDItMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvY2x6c2kyLmM6IFJlcGxhY2UgIkdOVSBDQyIgd2l0aCAiR0NDIi4KCSogY29uZmlnL2g4MzAwL2NydGkuYXNtOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2NydG4uYXNtOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2N0enNpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2ZpeHVuc3Nmc2kuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvcGFyaXR5c2kyLmM6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvcG9wY291bnRzaTIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9ydGVtcy5oOiBMaWtld2lzZS4KCjIwMDMtMDItMDggIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnRhdGlvbiBmb3IgbXkgcHJldmlvdXMgY29tbWl0LgoJKiBkb2MvcGFzc2VzLnRleGk6IERpdHRvLgoKMjAwMy0wMi0wOCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnbG9vcC5oIChmaXhfbG9vcF9wbGFjZW1lbnQsIGNhbl9kdXBsaWNhdGVfbG9vcF9wLAoJZHVwbGljYXRlX2xvb3BfdG9faGVhZGVyX2VkZ2UsIGxvb3BpZnksIHJlbW92ZV9wYXRoLCBzcGxpdF9sb29wX2JiKToKCURlY2xhcmUuCgkoRExUSEVfRkxBR19VUERBVEVfRlJFUSk6IE5ldy4KCSogY2ZnbG9vcG1hbmlwLmMgKGR1cGxpY2F0ZV9sb29wLCBkdXBsaWNhdGVfc3VibG9vcHMsIGNvcHlfbG9vcHNfdG8sCglsb29wX3JlZGlyZWN0X2VkZ2UsIGxvb3BfZGVsZXRlX2JyYW5jaF9lZGdlLCBjb3B5X2JicywgcmVtb3ZlX2JicywKCXJwZV9lbnVtX3AsIGZpbmRfYnJhbmNoLCBhbHBfZW51bV9wLCBhZGRfbG9vcCwgZml4X2xvb3BfcGxhY2VtZW50cywKCWZpeF9iYl9wbGFjZW1lbnQsIGZpeF9iYl9wbGFjZW1lbnRzLCBwbGFjZV9uZXdfbG9vcCwKCXNjYWxlX2xvb3BfZnJlcXVlbmNpZXMsIHNjYWxlX2Jic19mcmVxdWVuY2llcywgcmVjb3JkX2V4aXRfZWRnZXMpOgoJTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoZml4X2xvb3BfcGxhY2VtZW50LCBjYW5fZHVwbGljYXRlX2xvb3BfcCwKCWR1cGxpY2F0ZV9sb29wX3RvX2hlYWRlcl9lZGdlLCBsb29waWZ5LCByZW1vdmVfcGF0aCwgc3BsaXRfbG9vcF9iYik6CglOZXcgZnVuY3Rpb25zLgoKCSogY2ZnbG9vcC5oIChsb29wX29wdGltaXplcl9pbml0LCBsb29wX29wdGltaXplcl9maW5hbGl6ZSwKCXVuc3dpdGNoX2xvb3BzKTogRGVjbGFyZS4KCSogbG9vcC1pbml0LmM6IE5ldyBmaWxlLgoJKiBsb29wLXVuc3dpdGNoLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAobG9vcC1pbml0Lm8sIGxvb3AtdW5zd2l0Y2gubyk6IE5ldy4KCSogcGFyYW1zLmRlZiAoUEFSQU1fTUFYX1VOU1dJVENIX0lOU05TLCBQQVJBTV9NQVhfVU5TV0lUQ0hfTEVWRUwpOiBOZXcuCgkqIHRvcGxldi5jIChERklfbG9vcDIpOiBOZXcgZHVtcC4KCShmbGFnX3Vuc3dpdGNoX2xvb3BzKTogTmV3LgoJKGxhbmdfaW5kZXBlbmRlbnRfb3B0aW9ucyk6IEFkZCBpdC4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBuZXcgbG9vcCBvcHRpbWl6ZXIuCgkocGFyc2Vfb3B0aW9uc19hbmRfZGVmYXVsdF9mbGFncyk6IFR1cm4gZmxhZ191bnN3aXRjaF9sb29wcyBvbiB3aXRoIC1PMy4KCjIwMDMtMDItMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvY2x6c2kyLmM6IE5ldy4KCSogY29uZmlnL2g4MzAwL2N0enNpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL3Bhcml0eXNpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL3BvcGNvdW50c2kyLmM6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvdC1oODMwMCAoTElCMkZVTkNTX0VYVFJBKTogQWRkIGFib3ZlIGZpbGVzLgoKMjAwMy0wMi0wNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQ0xaX0RFRklORURfVkFMVUVfQVRfWkVSTyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGNsenNpMik6IFJlbmFtZSBmcm9tIGNudGx6dzIuCgkoY3R6c2kyKTogTmV3IHBhdHRlcm4uCgkoZmZzc2kyKTogVXNlIGNseiBpbnN0ZWFkIG9mIHVuc3BlYy4KCShjbHpkaTIpOiBSZW5hbWUgZnJvbSBjbnRsemQyLgoJKGN0emRpMik6IE5ldyBwYXR0ZXJuLgoJKGZmc2RpMik6IFVzZSBjbHogaW5zdGVhZCBvZiB1bnNwZWMuCgoyMDAzLTAyLTA3ICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogY29uZmlnL2FscGhhL2ZyZWVic2QuaCAoTElOS19TUEVDKTogV2Vha2VuIGVycm9yIHRvIG5vdGljZS4KCSogY29uZmlnL2lhNjQvZnJlZWJzZC5oIChMSU5LX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2ZyZWVic2QuaCAoTElOS19TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QuaCAoTElOS19TUEVDKTogQWRkIGNsYXVzZSB0byBtaXJyb3Igb3RoZXIgYXJjaGVzLgoKMjAwMy0wMi0wNyAgV29sZmdhbmcgQmFuZ2VydGggIDxiYW5nZXJ0aEB0aWNhbS51dGV4YXMuZWR1PgoKCSogZG9jL3Ryb3VibGUudGV4aTogRG9jdW1lbnQgcGl0ZmFsbHMgb2YgdHdvLXN0YWdlIG5hbWUgbG9va3VwLgoKMjAwMy0wMi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiA5MjI2CgkqIGdjc2UuYyAobG9jYWxfY3Byb3BfZmluZF91c2VkX3JlZ3MpOiBOZXcuCgkobG9jYWxfY3Byb3BfcGFzcyk6IFVzZSBpdC4KCjIwMDMtMDItMDcgIEZyZWQgRmlzaCAgPGZuZkBpbnRyaW5zaXR5LmNvbT4KCgkqIG1pcHMtdGZpbGUuYyAocGFyc2VfZGVmKTogUGFyZW50aGVzaXplIGFzc2lnbm1lbnRzIHRvIGZpeAoJcHJlY2VkZW5jZSBidWdzLgoKMjAwMy0wMi0wNyAgU2VnaGVyIEJvZXNzZW5rb29sICA8c2VnaGVyQGtvZmZpZS5ubD4KCgkqIGdlbm91dHB1dC5jIChvdXRwdXRfZ2V0X2luc25fbmFtZSk6IEhhbmRsZSBOT09QX01PVkVfSU5TTl9DT0RFLgoKMjAwMy0wMi0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfRk5fRkxPQVRfRkxPQVRfRkxPQVQpOiBOZXcgYnVpbHQtaW4gdHlwZS4KCShCVF9GTl9MT05HX0RPVUJMRV9MT05HX0RPVUJMRV9MT05HX0RPVUJMRSk6IExpa2V3aXNlLgoJKEJUX0ZOX0RPVUJMRV9ET1VCTEVfRE9VQkxFKTogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmRlZjogRGVmaW5lIHBvdywgcG93ZiwgcG93bCwgYXRhbjIsIGF0YW4yZiBhbmQgYXRhbjJsCglidWlsdGluIGZ1bmN0aW9ucyAoYW5kIHRoZWlyIF9fYnVpbHRpbl8qIHZhcmlhbnRzKS4KCSogYnVpbHRpbnMuYyAobWF0aGZuX2J1aWx0X2luKTogSGFuZGxlIG1pc3NpbmcgbG9neyxmLGx9IGNhc2VzLgoJKGV4cGFuZF9idWlsdGluKTogRG9uJ3QgZXhwYW5kIGxvZ3ssZixsfSwgcG93eyxmLGx9IG9yIGF0YW4yeyxmLGx9Cgl3aGVuIG5vdCBvcHRpbWl6aW5nLgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBuZXcgcG93IGFuZCBhdGFuMiBidWlsdGlucywgYW5kCgl0aGVpciBmbG9hdCBhbmQgbG9uZyBkb3VibGUgdmFyaWFudHMuICBSZWFscGhhYmV0aXplIGJ1aWx0aW5zLgoKMjAwMy0wMi0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoc3NlMl9uYW5kdjJkaTMpOiBGaXguCgoyMDAzLTAzLTA3ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChNU19BR0dSRUdBVEVfUkVUVVJOKTogTmV3IGRlZmluZS4KCSogY29uZmlnL2kzODYvY3lnd2luLmggKE1TX0FHR1JFR0FURV9SRVRVUk4pOiBPdmVycmlkZSBkZWZhdWx0CglkZWZpbml0aW9uLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKGl4ODZfcmV0dXJuX2luX21lbW9yeSk6IFJldHVybiBhZ2dyZWdhdGUKCXR5cGVzIG9mIHVwIHRvIDggYnl0ZXMgdmlhIHJlZ2lzdGVycyBpZiBNU19BR0dSRUdBVEVfUkVUVVJOLgoKMjAwMy0wMi0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAobW92ZGlfcmV4NjRfMSk6IEZpeCBtbXg8LT5pbnQgbW92ZSBvcGNvZGUuCgoyMDAzLTAyLTA3ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGNmZy5jIChkdW1wX2Zsb3dfaW5mbyk6IEFkZCBiYWNrIGFjY2lkZW50bHkgZGVsZXRlZCBsaW5lLgoKMjAwMy0wMi0wNyAgQW5kcmV5IFBldHJvdiA8cGV0cm92QG5ldGJzZC5vcmc+CgoJKiBvcHRhYnMuYyAoZXhwYW5kX2Zsb2F0KTogU2VhcmNoIHdpZGVyIGludGVnZXIgbW9kZXMgZmlyc3QuCgoyMDAzLTAyLTA3ICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgoKCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuaCAoTElCR0NDMl9XT1JEU19CSUdfRU5ESUFOKTogU2V0IHRoaXMKCWJhc2VkIG9uIHByZXByb2Nlc3NvciBmbGFnLgoKMjAwMy0wMi0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdjc2UuYyAoaW1wbGljaXRfc2V0cyk6IE5ldy4KCShjb21wdXRlX2hhc2hfdGFibGVfd29yayk6IEluY2x1ZGUgdGhlbSBpbiBoYXNoIHRhYmxlLgoJKGZpbmRfaW1wbGljaXRfc2V0cywgZmlzX2dldF9jb25kaXRpb24pOiBOZXcuCgkob25lX2Nwcm9wX3Bhc3MpOiBBbGxvY2F0ZSBhbmQgZnJlZSBpbXBsaWNpdF9zZXRzOyBjYWxsCglmaW5kX2ltcGxpY2l0X3NldHMgYmVmb3JlIGJ1aWxkaW5nIGhhc2ggdGFibGUuCgoyMDAzLTAyLTA3ICBKYXNvbiBUaG9ycGUgIDx0aG9ycGVqQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL3QtbmV0YnNkIChVU0VSX0gpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0wMi0wNyAgR2Fib3IgR3JlaWYgIDxnZ3JlaWZAbHVjZW50LmNvbT4KCgkqIGRvYy9jLXRyZWUudGV4aSAoTmFtZXNwYWNlcyk6IEZpeCB0eXBvLgoKMjAwMy0wMi0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVncmVuYW1lLmMgKGRvX3JlcGxhY2UsIGZpbmRfb2xkZXN0X3ZhbHVlX3JlZywKCWNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZF8xKTogVXBkYXRlIHJlZ2lzdGVyIGF0dHJpYnV0ZXMuCgoyMDAzLTAyLTA2ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGdlbmF1dG9tYXRhLmMgKFZMQV9QVFJfQ1JFQVRFLCBWTEFfUFRSX0VYUEFORCwgVkxBX1BUUl9BREQsCglWTEFfSFdJTlRfQ1JFQVRFLCBWTEFfSFdJTlRfRVhQQU5ELCBWTEFfSFdJTlRfQUREKTogVXNlIHRlbXBvcmF5Cgl2YXJpYWJsZXMgc3RhcnRpbmcgd2l0aCB1bmRlcnNjb3JlLgoJKHN0cnVjdCB1bml0X3VzYWdlKTogTmV3IHN0cnVjdHVyZS4KCSh1bml0X3VzYWdlcywgY3ljbGVfYWx0X3VuaXRfdXNhZ2VzKTogTmV3IGdsb2JhbCB2YXJpYWJsZXMuCgkoY2hlY2tfdW5pdF9kaXN0cmlidXRpb25faW5fcmVzZXJ2KTogUmVtb3ZlIGl0LgoJKHN0b3JlX2FsdF91bml0X3VzYWdlKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX3JlZ2V4cF91bml0c19kaXN0cmlidXRpb24pOiBSZXdyaXRlIGl0LgoKMjAwMy0wMi0wNiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGNvbmZpZy5nY2MgKGhwcGEqLSotbGludXgqKTogU2V0IE1BU0tfTk9fU1BBQ0VfUkVHUyBpbgoJdGFyZ2V0X2NwdV9kZWZhdWx0LgoJKiBwYS5jIChhdHRyX2xlbmd0aF9jYWxsKTogQWRkIDggdG8gY2FsbCBsZW5ndGggKGxvbmcgaW5kaXJlY3QgUEEgMS5YKQoJaWYgbm90IE1BU0tfTk9fU1BBQ0VfUkVHUy4KCShvdXRwdXRfY2FsbCk6IEFkanVzdCByZXR1cm4gcG9pbnRlciwgZG9uJ3QgbG9hZCBuZXcgc3BhY2UgcmVnaXN0ZXIKCWludG8gJXNyMCwgYW5kIHVzZSAlc3I0IGZvciBjYWxsIGlmIFRBUkdFVF9OT19TUEFDRV9SRUdTIGlzIHRydWUuCgkocGFfYXNtX291dHB1dF9taV90aHVuayk6IERvbid0IGxvYWQgbmV3IHNwYWNlIHJlZ2lzdGVyIGludG8gJXNyMCBpZgoJVEFSR0VUX05PX1NQQUNFX1JFR1MgaXMgdHJ1ZS4KCSogcGEubWQgKHJldHVybl9leHRlcm5hbF9waWMpOiBBZGQgVEFSR0VUX05PX1NQQUNFX1JFR1MgdG8gaW5zbgoJY29uZGl0aW9ucy4KCShlcGlsb2d1ZSk6IEFsd2F5cyB1c2UgcmV0dXJuX2ludGVybmFsIGlmIFRBUkdFVF9OT19TUEFDRV9SRUdTIGlzIHRydWUuCgkoaW50ZXJzcGFjZV9qdW1wKTogQWRkIG5ldyBwYXR0ZXJuIGZvciB3aGVuIFRBUkdFVF9OT19TUEFDRV9SRUdTIGlzCgl0cnVlLiAgVXNlIGJ2ZSB3aGVuIFRBUkdFVF82NEJJVCBpcyB0cnVlLgoKMjAwMy0wMi0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYyAobm9uemVyb19iaXRzKTogRml4IGRvdWJsZSBicmVhay4KCjIwMDMtMDItMDYgIEVyaWMgQm90Y2F6b3UgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+CgoJUFIgYy85NTMwCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IEZvcmJpZCBzaWJjYWxscwoJZnJvbSBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYSBmbG9hdCB0byBmdW5jdGlvbnMgdGhhdCBkb24ndC4KCjIwMDMtMDItMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoeDg2X2ludGVyX3VuaXRfbW92ZXMpOiBOZXcgdmFyaWFibGUuCgkoaXg4Nl9zZWNvbmRhcnlfbWVtb3J5X25lZWRlZCk6IEZpeCA2NGJpdCBjYXNlLCBob25vcgoJVEFSR0VUX0lOVEVSX1VOSVRfTU9WRVMKCSogaTM4Ni5oICh4ODZfaW50ZXJfdW5pdF9tb3Zlcyk6IERlY2xhcmUuCgkoVEFSR0VUX0lOVEVSX1VOSVRfTU9WRVMpOiBOZXcgbWFjcm8uCgkqIGkzODYubWQgKG1vdnNpXzEpOiBDbGVhbnVwIGNvbnN0cmFpbnRzOyBkaXNhYmxlCgl3aGVuIG5vdCBkb2luZyBpbnRlci11bml0IG1vdmVzLgoJKG1vdnNpXzFfbm9pbnRlcm51bml0KTogTmV3LgoJKG1vdmRpXzFfcmV4NjQpOiBGaXggY29uc3RyYWludHM7IGRlYWwgd2l0aCBTU0UtPkdQUiBtb3Zlcy4KCShtb3ZkaV8xX3JleDY0X25vaW50ZXJ1bml0KTogTmV3LgoJKG1pdnNmXzEpOiBkaXNhYmxlIHdoZW4gbm90IGRvaW5nIGludGVyLXVuaXQgbW92ZXMuCgkobW92c2ZfMV9ub2ludGVydW5pdCk6IE5ldy4KCgkqIGJhc2ljLWJsb2NrLmggKGluc2lkZV9iYXNpY19ibG9ja19wKTogIERlY2xhcmUuCgkqIGNmZ2J1aWxkLmMgKGluc2lkZV9iYXNpY19ibG9ja19wKTogTWFrZSBnbG9iYWwuCgkqIGhhaWZhLXNjaGVkLmMgKHVubGlua19vdGhlcl9ub3Rlcyk6IERlYWwgd2l0aCBOT1RfSU5TTl9CQVNJQ19CTE9DSy4KCSogc2NoZXVkbGUtZWJiLmMgIChzY2hlZHVsZV9lYmIpOiBSZXR1cm4gbGFzdCBiYXNpYyBibG9jayBvZiB0cmFjZTsKCXVwZGF0ZSBDRkcuCgkoZml4X2Jhc2ljX2Jsb2NrX2JvdW5kYXJpZXMsIGFkZF9taXNzaW5nX2Jicyk6IE5ldy4KCShyYW5rKTogVXNlIHByb2ZpbGUuCgkoc2NoZXVkbGVfZWJicyk6IFJlbHkgb24gQ0ZHOyB1cGRhdGUgY29tZW50cy4KCjIwMDMtMDItMDUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKGhvc3RfaG9va19vYmopOiBOZXcuCgkoT0JKUyk6IEFkZCAkKGhvc3RfaG9va19vYmopLgoJKGhvc3RfZGVmYXVsdC5vKTogTmV3IHJ1bGUuCgkqIGNvbmZpZy5nY2MgKGhvc3RfaG9va19vYmopOiBOZXcsIGRlZmF1bHQgdG8gaG9zdC1kZWZhdWx0Lm8uCgkocG93ZXJwYy0qLWRhcndpbiopOiBVc2UgaG9zdC1kYXJ3aW4uby4KCShvdXRfaG9zdF9ob29rX29iaik6IE5ldy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmUuaW46IFByaW50IGluZm9ybWF0aW9uIGFib3V0IG91dF9ob3N0X2hvb2tfb2JqLCBzdWJzdGl0dXRlCglpbnRvIG91dHB1dCBmaWxlcy4KCSogaG9zdC1kZWZhdWx0LmM6IE5ldyBmaWxlLgoJKiBob3N0aG9va3MuaDogTmV3IGZpbGUuCgkqIHRvcGxldi5jIChnZW5lcmFsX2luaXQpOiBDYWxsIGhvc3RfaG9va3MuZXh0cmFfc2lnbmFscy4KCSogY29uZmlnL3JzNjAwMC9ob3N0LWRhcndpbi5jOiBOZXcgZmlsZS4KCSogY29uZmlnL3JzNjAwMC94LWRhcndpbjogTmV3IGZpbGUuCgkqIGRvYy9ob3N0Y29uZmlnLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBuZXcgaG9zdCBob29rLgoJUmVhcnJhbmdlIGV4aXN0aW5nIGRvY3VtZW50YXRpb24uCgoyMDAzLTAyLTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGR3YXJmMm91dC5jIChtZW1fbG9jX2Rlc2NyaXB0b3IpOiBSZXBsYWNlIEFTTV9TSU1QTElGWV9EV0FSRl9BRERSCgl3aXRoICp0YXJnZXRtLmRlbGVnaXRpbWl6ZV9hZGRyZXNzLgoJKHJ0bF9mb3JfZGVjbF9sb2NhdGlvbik6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfbWVtX2xvY19kZXNjcmlwdG9yKTogTGlrZXdpc2UuICBJbmNsdWRlIHRhcmdldC5oLgoJKiBNYWtlZmlsZS5pbiAoZHdhcmYyb3V0LmMsIGR3YXJmb3V0LmMpOiBEZXBlbmQgdXBvbiAkKFRBUkdFVF9IKQoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChBU01fU0lNUExJRllfRFdBUkZfQUREUik6IFJlbW92ZSBkZWZpbml0aW9uLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpMzg2X3NpbXBsaWZ5X2R3YXJmX2FkZHIpOiBSZW1vdmUKCXByb3RvdHlwZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2RlbGVnaXRpbWl6ZV9hZGRyZXNzKTogUmVuYW1lZCBmcm9tCglpMzg2X3NpbXBsaWZ5X2R3YXJmX2FkZHIuICBNYWRlIHN0YXRpYy4gIFByb3RvdHlwZWQuCgkoVEFSR0VUX0RFTEVHSVRJTUlaRV9BRERSRVNTKTogVXBkYXRlIGRlZmluaXRpb24gZnJvbQoJaTM4Nl9zaW1wbGlmeV9kd2FyZl9hZGRyIHRvIGl4ODZfZGVsZWdpdGltaXplX2FkZHJlc3MuCgkoaXg4Nl9maW5kX2Jhc2VfdGVybSk6IExpa2V3aXNlLgoJKG1heWJlX2dldF9wb29sX2NvbnN0YW50KTogTGlrZXdpc2UuCgoJKiBjb25maWcvczM5MC9zMzkwLmggKEFTTV9TSU1QTElGWV9EV0FSRl9BRERSKTogUmVtb3ZlIGRlZmluaXRpb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHMzOTBfc2ltcGxpZnlfZHdhcmZfYWRkcik6IFJlbW92ZQoJcHJvdG90eXBlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZGVsZWdpdGltaXplX2FkZHJlc3MpOiBSZW5hbWVkIGZyb20KCXMzOTBfc2ltcGxpZnlfZHdhcmZfYWRkci4gIE1hZGUgc3RhdGljLiAgUHJvdG90eXBlZC4KCShUQVJHRVRfREVMRUdJVElNSVpFX0FERFJFU1MpOiBEZWZpbmUgYXMgczM5MF9kZWxlZ2l0aW1pemVfYWRkcmVzcy4KCjIwMDMtMDItMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgYy84NjAyCgkqIGludGVncmF0ZS5jIChvdXRwdXRfaW5saW5lX2Z1bmN0aW9uKTogUmVzZXQgaW5wdXRfZmlsZW5hbWUKCWFuZCBsaW5lbm8gZnJvbSB0aGUgZGVjbCBiZWZvcmUgcmVzdF9vZl9jb21waWxhdGlvbi4KCjIwMDMtMDItMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZWZhdWx0cy5oIChDTFpfREVGSU5FRF9WQUxVRV9BVF9aRVJPKTogTmV3LgoJKENUWl9ERUZJTkVEX1ZBTFVFX0FUX1pFUk8pOiBOZXcuCgkqIGRvYy9ydGwudGV4aSwgZG9jL3RtLnRleGk6IERvY3VtZW50IHRoZW0uCgoJKiBjb21iaW5lLmMgKG5vbnplcm9fYml0cykgW0NMWiwgQ1RaXTogSGFuZGxlIHRoZSBkZWZpbmVkbmVzcwoJb2YgdGhlIHZhbHVlIGF0IHplcm8gcHJvcGVybHkuCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IExpa2V3aXNlLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKENMWl9ERUZJTkVEX1ZBTFVFX0FUX1pFUk8pOiBOZXcuCgkoQ1RaX0RFRklORURfVkFMVUVfQVRfWkVSTyk6IE5ldy4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKFRBUkdFVF9JTklUX0JVSUxUSU5TKTogUmVtb3ZlLgoJKFRBUkdFVF9FWFBBTkRfQlVJTFRJTik6IFJlbW92ZS4KCShkZWZfYnVpbHRpbiwgYXJtX2luaXRfYnVpbHRpbnMsIGFybV9leHBhbmRfYnVpbHRpbik6IFJlbW92ZS4KCSogY29uZmlnL2FybS9hcm0uaCAoQ0xaX0RFRklORURfVkFMVUVfQVRfWkVSTyk6IE5ldy4KCShlbnVtIGFybV9idWlsdGlucyk6IFJlbW92ZS4KCSogY29uZmlnL2FybS9hcm0ubWQgKFVOU1BFQ19DTFopOiBSZW1vdmUuCgkoY2x6c2kyKTogUmVuYW1lIGZyb20gY2x6OyB1c2UgY2x6IGluc3RlYWQgb2YgdW5zcGVjLgoJKGN0enNpMik6IE5ldy4KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmg6IFVwZGF0ZS4KCjIwMDMtMDItMDUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYtcHJvdG9zLmggKHg4Nl9lbWl0X2Zsb2F0dW5zKTogIERlY2xhcmUuCgkqIGkzODYuYyAoeDg2X2VtaXRfZmxvYXR1bnMpOiBOZXcgZ2xvYmFsIGZ1bmN0aW9uLgoJKiBpMzg2Lm1kIChmbG9hdHVuc3Npc2YyLCBmbG9hdHVuc2Rpc2YyLAoJZmxvYXR1bnNkaWRmMik6ICBOZXcgcGF0dGVybnMuCgoyMDAzLTAxLTI1ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmdsb29wbWFuaXAuYyAoZm9yY2Vfc2luZ2xlX3N1Y2NfbGF0Y2hlcyk6IEZpeCBtaXNzaW5kZW50YXRpb24uCgoyMDAzLTAyLTA1ICBIYW5zIEJvZWhtIDxIYW5zLkJvZWhtQGhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmM6IGluY2x1ZGUgY29yZXR5cGVzLmgsIHRtLmggdG8gZ2V0CgkgIGNvbmZpZy9pYTY0L2xpbnV4LmgKCjIwMDMtMDItMDUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY2ZnbG9vcC5oIChmbG93X2JiX2luc2lkZV9sb29wX3ApOiBDb3JyZWN0IHByb3RvdHlwZSBhZ2Fpbi4KCjIwMDMtMDItMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi84NTU1CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNzZV9tb3Y/ZmNjIHNwbGl0KTogSGFuZGxlIG9wMiA9PSBvcDMgY2FzZQoJaW5zdGVhZCBvZiBhYm9ydGluZy4KCjIwMDMtMDItMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChVTlNQRUNfQlNGKTogUmVtb3ZlLgoJKGZmc3NpMik6IFNwbGl0IGludG8gY21vdmUgYW5kIG5vX2Ntb3ZlIGluc25zIGFuZCBzcGxpdHRlcnM7Cglsb3NlIHBlbnRpdW0gZmxvYXQgdHJpY2sgZm9yIG5vdy4KCShmZnNzaV8xKTogQWRkICogdG8gbmFtZTsgdXNlIENUWiBpbnN0ZWFkIG9mIFVOU1BFQy4KCShjdHpzaTIsIGNsenNpMiwgYnNyKTogTmV3LgoKMjAwMy0wMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocnR4X25lZWRzX2JhcnJpZXIpOiBIYW5kbGUgUE9QQ09VTlQsCglVTlNQRUNfR0VURl9FWFA7IHJlbW92ZSBVTlNQRUNfUE9QQ05ULgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChVTlNQRUNfUE9QQ05UKTogUmVtb3ZlLgoJKGZmc2RpMik6IFVzZSBwb3Bjb3VudCBpbnN0ZWFkIG9mIHVuc3BlYy4KCShwb3Bjb3VudGRpMik6IFJlbmFtZSBmcm9tICpwb3BjbnQuCgkoY3R6ZGkyLCBjbHpkaTIsIGdldGZfZXhwX3RmKTogTmV3LgoKMjAwMy0wMi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGdlbmNvbmZpZy5jIChtYWluKTogR2VuZXJhdGUgQ0MwX1AuCgkqIHJ0bC5oIChDQzBfUCk6IFJlbW92ZS4KCjIwMDMtMDItMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBsaWJnY2MyLmgsIGxpYmdjYzIuYyAoX19mZnNTSTIpOiBOZXcuCgkoX19mZnNESTIpOiBSZW5hbWUgZnJvbSBfX2Zmc2RpMi4KCSogbWtsaWJnY2MuaW4gKGxpYjJmdW5jcyk6IEFkZCBfZmZzc2kyLgoKMjAwMy0wMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYzIuYyAoX19wYXJpdHlzaTIsIF9fcGFyaXR5ZGkyKTogUmVwbGFjZSBsYXN0IHR3byByZWR1Y3Rpb24KCXJvdW5kcyB3aXRoIGEgImJpdCB0YWJsZSIgbG9va3VwLgoKMjAwMy0wMi0wNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IERvIG5vdCB1c2UgdGhlIG1vZGUgc3BlY2lmaWVkIGluIHRoZSBpbnNuCglwYXR0ZXJuIGFzIHJlbG9hZCBtb2RlIGZvciBhZGRyZXNzIG9wZXJhbmRzLiAgRG8gbm90IGdlbmVyYXRlIG9wdGlvbmFsCglyZWxvYWRzIGZvciBvcGVyYW5kcyB3aGVyZSBhIG1hbmRhdG9yeSByZWxvYWQgd2FzIGFscmVhZHkgcHVzaGVkLgoKMjAwMy0wMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGxvbmdsb25nLmggW2FscGhhXSAoY291bnRfbGVhZGluZ196ZXJvcywgY291bnRfdHJhaWxpbmdfemVyb3MpOiBVc2UKCWJ1aWx0aW5zIGluc3RlYWQgb2YgaW5saW5lIGFzc2VtYmx5LgoKMjAwMy0wMi0wNCAgRmFsayBIdWVmZm5lciAgPGZhbGsuaHVlZmZuZXJAc3R1ZGVudC51bmktdHVlYmluZ2VuLmRlPgoKCVBSIGMvOTM3NgoJKiBsaWJnY2MyLmMgKF9fc3VidmRpMyk6IEZpeCB0eXBvLgoKMjAwMy0wMi0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAobW92dGlfcmV4NjQpOiAgRml4IGNvbnN0cmFpbnQuCgoyMDAzLTAyLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kICh2ZWN0b3IgcHVzaCBzcGxpdHRlcnMpOiAgRml4IHR5cG8gaW4gcmVzb2x2aW5nIGNvbmZsaWN0LgoKMjAwMy0wMi0wNCAgUm9kbmV5IEJyb3duICA8cmJyb3duNjRAY3NjLmNvbS5hdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoeDg2X2Z1bmN0aW9uX3Byb2ZpbGVyKTogRml4IHR5cG8gaW4gZm9ybWF0LgoKMjAwMy0wMi0wNCAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi0qLWxpbnV4LWdudSk6ICBNZW50aW9uIGdsaWJjIHJlcXVpcmVtZW50cwoJZm9yIHJlY2VudCBsaWJzdGRjKysuICBSZW1vdmUgZm9ybWF0dGluZyBjcnVmdC4KCjIwMDMtMDItMDQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9maW5pc2gpOiBBZGQgQVRfY29tcF9kaXIKCWF0dHJpYnV0ZSBldmVuIGlmIGlucHV0IGZpbGUgbmFtZSBpcyBhYnNvbHV0ZSwgYnV0IG9uZSBvZiB0aGUKCWluY2x1ZGVzIGlzIHJlbGF0aXZlLgoKMjAwMy0wMi0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvZ2NjLnRleGksIGRvYy9nY2NpbnQudGV4aSwgZG9jL2djb3YudGV4aSwKCWRvYy9pbmNsdWRlL2ZkbC50ZXhpLCBkb2MvaW52b2tlLnRleGk6IFVwZGF0ZSB0byBHRkRMIDEuMi4KCSogZG9jL2luc3RhbGwudGV4aTogVXBkYXRlIGNvcHlyaWdodCBkYXRlcy4gIFVwZGF0ZSB0byBHRkRMIDEuMi4KCjIwMDMtMDItMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBsaWJnY2MyLmMgKF9fZmZzZGkyLCBfX2NsenNpMiwgX19jbHpkaTIsIF9fY3R6c2kyLCBfX2N0emRpMiwKCV9fcG9wY291bnRzaTIsIF9fcG9wY291bnRkaTIsIF9fcGFyaXR5c2kyLCBfX3Bhcml0eWRpMik6IENoYW5nZQoJcmV0dXJuIHR5cGUgdG8gImludCIuICBTaHVmZmxlIGRlY2xhcmF0aW9ucyBhbmQgdW5kZWYgaW50IHRyYXAuCgkqIGxpYmdjYzIuaDogUmVtb3ZlIHRoZWlyIGRlY2xhcmF0aW9ucy4KCSogb3B0YWJzLmMgKGV4cGFuZF91bm9wKTogRm9yY2Ugb3V0bW9kZSB0byBpbnQgZm9yIGJpdG9wcy4KCjIwMDMtMDItMDMgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChvcmRlcl9yZWdzX2Zvcl9sb2NhbF9hbGxvYyk6IE9yZGVyIHRoZQoJY29wcm9jZXNzb3IgcmVnaXN0ZXJzIGJlZm9yZSBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKFJFR19BTExPQ19PUkRFUik6IEFkanVzdCByZWdpc3RlciBudW1iZXJzCgl0byBhY2NvdW50IGZvciBhIHByZXZpb3VzbHkgcmVtb3ZlZCByZWdpc3Rlci4KCShTUEVDX1JFR19GSVJTVCwgU1BFQ19SRUdfTEFTVCwgU1BFQ19SRUdfTlVNLCBDT1VOVF9SRUdJU1RFUl9SRUdOVU0pOgoJRGVsZXRlIHVudXNlZCBtYWNyb3MuCgoyMDAzLTAyLTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX3N0b3JlX2J1aWx0aW4pOiAgQWx3YXlzIGZvcmNlIG9wMSB0byByZWdpc3Rlci4KCShtb3YqX2ludGVybmFsKTogRml4IHByZWRpY2F0ZXM7IHJlcXVpcmUgb25lIG9mIG9wZXJhbmRzIHRvIG5vdCBiZQoJbWVtb3J5LgoJKFNTRT9NTVggbW92ZSBleHBhbmRlcnMpOiAgRml4IHByZWRpY2F0ZXM7IGZvcmNlIG9uZSBvZiBvcGVyYW5kcyB0bwoJcmVnaXN0ZXIuCgkoU1NFL01NWCBwdXNoIHBhdHRlcm5zKTogUmVvcmdhbml6ZTsgZml4IHg4Ni02NCBjb2RlIGdlbmVyYXRpb24uCgkobW92dXBzL21vdnVwZC9tb3ZkcXUgcGF0dGVybnMpOiBGb3JjZSBvbmUgb2Ygb3BlcmFuZHMgdG8gbm90IGJlCgltZW1vcnkuCgoyMDAzLTAyLTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGhvb2tzLmMgKGhvb2tfcnR4X3J0eF9pZGVudGl0eSk6IEdlbmVyaWMgaG9vayBmdW5jdGlvbiB0aGF0Cgl0YWtlcyBhIHNpbmdsZSBydHggYW5kIHJldHVybnMgaXQgdW5tb2RpZmllZC4KCSogaG9va3MuaCAoaG9va19ydHhfcnR4X2lkZW50aXR5KTogUHJvdG90eXBlIGhlcmUuCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCAiZGVsZWdpdGltaXplX2FkZHJlc3MiCglmaWVsZCB0byB0YXJnZXQgc3RydWN0dXJlLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9ERUxFR0lUSU1JWkVfQUREUkVTUyk6ICBQcm92aWRlIGRlZmF1bHQKCWZvciBkZWxlZ2l0aW1pemVfYWRkcmVzcyB0YXJnZXQgdXNpbmcgaG9va19ydHhfcnR4X2lkZW50aXR5LgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEluaXRpYWxpemUgZGVsZWdpdGltaXplX2FkZHJlc3MgZmllbGQKCXVzaW5nIFRBUkdFVF9ERUxFR0lUSU1JWkVfQUREUkVTUyBtYWNyby4KCSogc2ltcGxpZnktcnR4LmMgKGF2b2lkX2NvbnN0YW50X3Bvb2xfcmVmZXJlbmNlKTogSGFuZGxlIGZsb2F0CglleHRlbnNpb25zIG9mIGNvbnN0YW50IHBvb2wgcmVmZXJlbmNlcy4gIFVzZSBkZWxlZ2l0aW1pemVfYWRkcmVzcwoJdG8gdW5kbyB0aGUgb2JmdXNjYXRpb24gb2YgIi1mcGljIi4KCSogTWFrZWZpbGUuaW4gKHNpbXBsaWZ5LXJ0eC5vKTogQWRkIGRlcGVuZGVuY3kgb24gdGFyZ2V0LmguCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKFRBUkdFVF9ERUxFR0lUSU1JWkVfQUREUkVTUyk6IERlZmluZSBhcwoJaTM4Nl9zaW1wbGlmeV9kd2FyZl9hZGRyLgoJKGl4ODZfZmluZF9iYXNlX3Rlcm0pOiBTaW1wbGlmeSB1c2luZyBpMzg2X3NpbXBsaWZ5X2R3YXJmX2FkZHIuCgkobWF5YmVfZ2V0X3Bvb2xfY29uc3RhbnQpOiBMaWtld2lzZS4KCjIwMDMtMDItMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfaW50X21vdmNjKTogIEZpeCBzZXRjYyBzaWduIGJpdCBjYXNlLgoKMjAwMy0wMi0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVnY2xhc3MuYyAoY2Fubm90X2NoYW5nZV9tb2RlX3NldF9yZWdzKTogQ29ycmVjdCBhcmd1bWVudCBvcmRlci4KCjIwMDMtMDItMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pcHMvX3RpbGliLmM6IERvbid0IGluY2x1ZGUgdHN5c3RlbS5oIG9yIGRlZmF1bHRzLmguICBEb24ndAoJZGVmaW5lIExJQkdDQzJfV09SRFNfQklHX0VORElBTi4gIEluY2x1ZGUgY29yZXR5cGVzLmggYW5kIHRtLmguCgoyMDAzLTAyLTAyICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogdmFyYXNtLmMgKGFzbV9vdXRwdXRfYWxpZ25lZF9ic3MpOiBEZWNsYXJlIGFzIHBvc3NpYmx5IHVudXNlZC4KCjIwMDMtMDItMDIgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChzaWJjYWxsX2VwaWxvZ3VlKTogU2V0IHRoZSAiY29uZHMiIHRvICJjbG9iIi4KCShlcGlsb2d1ZV9pbnNucyk6IExpa2V3aXNlLgoKMjAwMy0wMi0wMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKGhwcGEqLWhwLWhwdXgxMSopOiBVcGRhdGUgaW5zdGFsbGF0aW9uIG5vdGVzLgoKMjAwMy0wMi0wMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLXByb3Rvcy5oIChhdHRyX2xlbmd0aF9taWxsaWNvZGVfY2FsbCk6IFJlbW92ZSBzZWNvbmQgYXJndW1lbnQuCgkoYXR0cl9sZW5ndGhfaW5kaXJlY3RfY2FsbCwgYXR0cl9sZW5ndGhfaW5kaXJlY3RfY2FsbCwKCWF0dHJfbGVuZ3RoX3NhdmVfcmVzdG9yZV9kbHRwKTogTmV3IHByb3RvdHlwZXMuCgkqIHBhLmMgKGF0dHJfbGVuZ3RoX21pbGxpY29kZV9jYWxsKTogUmVtb3ZlIHNlY29uZCBhcmd1bWVudC4gIENoZWNrCglJTlNOX0FERFJFU1NFU19TRVRfUCBpbiBkaXN0YW5jZSBjYWxjdWxhdGlvbi4KCShvdXRwdXRfbWlsbGljb2RlX2NhbGwpOiBDaGVjayBJTlNOX0FERFJFU1NFU19TRVRfUCBiZWZvcmUgdXNpbmcKCUlOU05fQUREUkVTU0VTLgoJKGF0dHJfbGVuZ3RoX2NhbGwpOiBDaGVjayBJTlNOX0FERFJFU1NFU19TRVRfUCBpbiBkaXN0YW5jZSBjYWxjdWxhdGlvbi4KCShvdXRwdXRfY2FsbCk6IENoZWNrIElOU05fQUREUkVTU0VTX1NFVF9QIGJlZm9yZSB1c2luZyBJTlNOX0FERFJFU1NFUy4KCUNhbGwgYXR0cl9sZW5ndGhfY2FsbCBkaXJlY3RseS4KCShhdHRyX2xlbmd0aF9pbmRpcmVjdF9jYWxsLCBvdXRwdXRfaW5kaXJlY3RfY2FsbCwKCWF0dHJfbGVuZ3RoX3NhdmVfcmVzdG9yZV9kbHRwKTogTmV3IGZ1bmN0aW9ucy4KCSogcGEubWQgKGF0dHJfbGVuZ3RoX21pbGxpY29kZV9jYWxsKTogRHJvcCBzZWNvbmQgYXJndW1lbnQgZnJvbSBhbGwKCXBhdHRlcm5zLgoJKHJldHVybl9pbnRlcm5hbF9waWMpOiBEZWxldGUuCgkocmV0dXJuX2V4dGVybmFsX3BpYyk6IFJlbW92ZSB1c2Ugb2YgUElDIHJlZ2lzdGVyIGFuZCBwaWMgb3BlcmFuZCBhbmQKCWZsYWcgY2hlY2tzLgoJKGVwaWxvZ3VlKTogVXNlIHJldHVybl9pbnRlcm5hbCBmb3IgYm90aCBub3JtYWwgYW5kIHBpYyBjb2RlLgoJKGNhbGwsIGNhbGxfdmFsdWUpOiBFbWl0IG5ldyAzMi1iaXQgcGljIHBhdHRlcm5zIGZvciBzeW1yZWYgYW5kCglpbmRpcmVjdCBjYWxscy4gIFJlbW92ZSB1c2VzIGZvciBhcmcgcG9pbnRlciBhbmQgcGljIHJlZ2lzdGVyLgoJKGNhbGxfc3ltcmVmX3BpYywgY2FsbF9zeW1yZWZfcGljX3Bvc3RfcmVsb2FkLCBjYWxsX3JlZ19waWMsCgljYWxsX3JlZ19waWNfcG9zdF9yZWxvYWQsIGNhbGxfdmFsX3N5bXJlZl9waWMsCgljYWxsX3ZhbF9zeW1yZWZfcGljX3Bvc3RfcmVsb2FkLCBjYWxsX3ZhbF9yZWdfcGljLAoJY2FsbF92YWxfcmVnX3BpY19wb3N0X3JlbG9hZCk6IE5ldyBwcmUgYW5kIHBvc3QgcmVsb2FkIGluc24gcGF0dGVybnMuCglJbXBsZW1lbnQgZGVmaW5lX3NwbGl0IGFuZCBkZWZpbmVfcGVlcGhvbGUyIHBhdHRlcm5zIGZvciBwcmUgcmVsb2FkCglwYXR0ZXJucy4KCShjYWxsX3N5bXJlZl82NGJpdCwgY2FsbF9pbnRlcm5hbF9yZWdfNjRiaXQsIGNhbGxfdmFsdWVfc3ltcmVmXzY0Yml0LAoJY2FsbF92YWx1ZV9pbnRlcm5hbF9yZWdfNjRiaXQpOiBTaG9ydGVuIG5hbWVzLgoJKGFsbCBjYWxsIHBhdHRlcm5zKTogRXhwbGljaXRseSBpbmRpY2F0ZSByZWdpc3RlcnMgdXNlZCBhbmQgY2xvYmJlcmVkLgoJVXNlIGF0dHJfbGVuZ3RoX2luZGlyZWN0X2NhbGwgYW5kIGF0dHJfbGVuZ3RoX3NhdmVfcmVzdG9yZV9kbHRwIGZvcgoJYXR0cmlidXRlIGxlbmd0aCBjYWxjdWxhdGlvbi4gIE1vdmUgY29kZSBnZW5lcmF0aW9uIGZvciBpbmRpcmVjdCBjYWxscwoJdG8gb3V0cHV0X2luZGlyZWN0X2NhbGwuCgkoc2liY2FsbCwgc2liY2FsbF92YWx1ZSk6IERvbid0IHJlc3RvcmUgUElDIHJlZ2lzdGVyLgoJKGV4Y2VwdGlvbl9yZWNlaXZlciwgYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBBZGQgYmxvY2thZ2UgYWZ0ZXIgUElDCglyZWdpc3RlciByZXRvcmUuCgoyMDAzLTAyLTAyICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChUZXN0aW5nKTogU2ltcGxpZnkgYW5kIGNvbXByZXNzIGluc3RydWN0aW9ucwoJY29uY2VybmluZyBEZWphZ251LgoKMjAwMy0wMi0wMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGNvbGxlY3QyLmMgKHBleGVjdXRlX3BpZCk6IFJlbmFtZSB0byBwaWQuCgkoY29sbGVjdF93YWl0LCBjb2xsZWN0X2V4ZWN1dGUsIHNjYW5fcHJvZ19maWxlLCBzY2FuX2xpYnJhcmllcyk6IFVzZQoJcGlkLgoKMjAwMy0wMi0wMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEZ1bmN0aW9uIEF0dHJpYnV0ZXMpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbgoJZm9yIFBvd2VyUEMgV2luZG93cyBOVCBmdW5jdGlvbiBhdHRyaWJ1dGVzLi4KCjIwMDMtMDItMDEgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl90eXBlX2RpZSk6IENoZWNrIGZvciB0eXBlZGVmcyBiZWZvcmUgY2FsbGluZwoJZm9yIFRZUEVfTUFJTl9WQVJJQU5ULgoKMjAwMy0wMi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYzIuYzogSW5jbHVkZSBhdXRvLWhvc3QuaC4KCShBVFRSSUJVVEVfSElEREVOKTogTmV3LgoJKF9fY2x6X3RhYik6IERvbid0IGRlY2xhcmUgaGVyZSBmb3IgY2x6IGFuZCBjdHouCgkoX19jbHpzaTIsIF9fY2x6ZGkyKTogVXNlIGNvdW50X2xlYWRpbmdfemVyb3MuCgkoX19jdHpzaTIsIF9fY3R6ZGkyKTogVXNlIGNvdW50X3RyYWlsaW5nX3plcm9zLgoJKF9fcG9wY291bnRfdGFiKTogTWFyayBBVFRSSUJVVEVfSElEREVOLgoJKF9fcGFyaXR5c2kyLCBfX3Bhcml0eWRpMik6IFVzZSBzaGlmdHMgaW5zdGVhZCBvZiBfX3BvcGNvdW50X3RhYi4KCSogbG9uZ2xvbmcuaCAoX19jbHpfdGFiKTogTWFyayBBVFRSSUJVVEVfSElEREVOLgoKMjAwMy0wMi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFkZHNpXzFfemV4dCBzcGxpdHRlcik6IEFkZCBUQVJHRVRfNjRCSVQKCXRvIHRoZSBjb25kaXRpb25hbC4KCShhc2hsc2kzXzFfemV4dCBzcGxpdHRlcik6IExpa2V3aXNlLgoKMjAwMy0wMi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIG9wdGFicy5jIChleHBhbmRfdW5vcCk6IFVzZSB3b3JkX21vZGUgZm9yIG91dG1vZGUgb2YgYml0IHNjYW5lcnMuCgkqIGxpYmdjYzIuYyAoX19mZnNkaTIsIF9fY2x6c2kyLCBfX2NsemRpMiwgX19jdHpzaTIsIF9fY3R6ZGkyLAoJX19wb3Bjb3VudHNpMiwgX19wb3Bjb3VudGRpMiwgX19wYXJpdHlzaTIgX19wYXJpdHlkaTIpOiBDaGFuZ2UKCXJldHVybiB0eXBlIHRvIFd0eXBlLgoKCSogbGliZ2NjLXN0ZC52ZXIgKEdDQ18zLjQpOiBGaXggaW5oZXJpdGFuY2UuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChmZnNzaTIpOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgZm9yCglleHBhbmRlciBpbnB1dCBjb25zdHJhaW50LgoKMjAwMy0wMi0wMSAgRmFsayBIdWVmZm5lciAgPGZhbGsuaHVlZmZuZXJAc3R1ZGVudC51bmktdHVlYmluZ2VuLmRlPgoKCSogb3B0YWJzLmggKG9wdGFiX2luZGV4KTogQWRkIE9USV9jbHosIE9USV9jdHosIE9USV9wb3Bjb3VudCBhbmQKCU9USV9wYXJpdHkuCgkoY2x6X29wdGFiLCBjdHpfb3B0YWIsIHBvcGNvdW50X29wdGFiLCBwYXJpdHlfb3B0YWIpOiBOZXcuCgkqIG9wdGFicy5jICh3aWRlbl9jbHosIGV4cGFuZF9wYXJpdHkpOiBOZXcuCgkoZXhwYW5kX3Vub3ApOiBIYW5kbGUgY2x6IGFuZCBwYXJpdHkuICBIYXJkY29kZSBTSW1vZGUgYXMgb3V0bW9kZQoJZm9yIGxpYmNhbGxzIHRvIGNseiwgY3R6LCBwb3Bjb3VudCwgYW5kIHBhcml0eS4KCShpbml0X29wdGFicyk6IEluaXQgY2x6X29wdGFiLCBjdHpfb3B0YWIsIHBvcGNvdW50X29wdGFiIGFuZAoJcGFyaXR5X29wdGFiLCBhbmQgc2V0IHVwIGxpYmZ1bmMgaGFuZGxlcnMuCgkqIGxpYmdjYzIuYyAoX19jbHpzaTIsIF9fY2x6ZGkyLCBfX2N0enNpMiwgX19jdHpkaTIsCglfX3BvcGNvdW50c2kyLCBfX3BvcGNvdW50ZGkyLCBfX3Bhcml0eXNpMiBfX3Bhcml0eWRpMiwKCV9fcG9wY291bnRfdGFiKTogTmV3LgoJKiBsaWJnY2MyLmg6IERlY2xhcmUgdGhlbS4KCSogbGliZ2NjLXN0ZC52ZXIgKEdDQ18zLjQpOiBBZGQgbmV3IGZ1bmN0aW9ucyBmcm9tIGxpYmdjYzIuYy4KCSogZ2Vub3Bpbml0LmMgKG9wdGFicyk6IEFkZCBjbHpfb3B0YWIsIGN0el9vcHRhYiwgcG9wY291bnRfb3B0YWIKCWFuZCBwYXJpdHlfb3B0YWIuCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9GTl9JTlRfTE9ORywgQlRfRk5fSU5UX0xPTkdMT05HKTogTmV3LgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0NMWiwgQlVJTFRfSU5fQ1RaLCBCVUlMVF9JTl9QT1BDT1VOVCwKCUJVSUxUX0lOX1BBUklUWSwgQlVJTFRfSU5fRkZTTCwgQlVJTFRfSU5fQ0xaTCwgQlVJTFRfSU5fQ1RaTCwKCUJVSUxUX0lOX1BPUENPVU5UTCwgQlVJTFRfSU5fUEFSSVRZTCwgQlVJTFRfSU5fRkZTTEwsCglCVUlMVF9JTl9DTFpMTCwgQlVJTFRfSU5fQ1RaTEwsIEJVSUxUX0lOX1BPUENPVU5UTEwsCglCVUlMVF9JTl9QQVJJVFlMTCk6IE5ldy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fdW5vcCk6IFJlbmFtZSBmcm9tIGV4cGFuZF9idWlsdGluX2ZmcwoJYW5kIGFkZCBvcHRhYiBhcmd1bWVudC4KCShleHBhbmRfYnVpbHRpbik6IEV4cGFuZCBCVUlMVF9JTl97RkZTLENMWixQT1BDT1VOVCxQQVJJVFl9Ki4KCSogdHJlZS5kZWYgKENMWl9FWFBSLCBDVFpfRVhQUiwgUE9QQ09VTlRfRVhQUiwgUEFSSVRZX0VYUFIpOiBOZXcuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBIYW5kbGUgdGhlbS4KCSogZm9sZC1jb25zdC5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IExpa2V3aXNlLgoJKiBydGwuZGVmIChDTFosIENUWiwgUE9QQ09VTlQsIFBBUklUWSk6IE5ldy4KCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVncyk6IEhhbmRsZSB0aGVtLgoJKGVsaW1pbmF0aW9uX2VmZmVjdHMpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzXzEpOiBMaWtld2lzZQoJKiBnZW5hdHRydGFiLmMgKGNoZWNrX2F0dHJfdmFsdWUpOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBIYW5kbGUgUE9QQ09VTlRfRVhQUi4KCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IEhhbmRsZSBQT1BDT1VOVCBhbmQgUEFSSVRZLgoJKG5vbnplcm9fYml0cyk6IEhhbmRsZSBDTFosIENUWiwgUE9QQ09VTlQgYW5kIFBBUklUWS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChjbHpkaTIsIGN0emRpMiwgcG9wY291bnRkaTIpOiBOZXcuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pbml0X2J1aWx0aW5zKTogUmVuYW1lIF9fYnVpbHRpbl9jbHogdG8KCV9fYnVpbHRpbl9hcm1fY2x6LgoJKiBNYWtlZmlsZS5pbiAoTElCMkZVTkNTXzEsIExJQjJGVU5DU18yKTogTW92ZS4uLgoJKiBta2xpYmdjYy5pbiAobGliMmZ1bmNzKTogLi4uaGVyZSBhbmQgbWVyZ2UuICBBZGQgbmV3IG1lbWJlcnMuCgkqIGRvYy9leHRlbmQudGV4aSAoT3RoZXIgQnVpbHRpbnMpOiBBZGQgbmV3IGJ1aWx0aW5zLgoJKiBkb2MvbWQudGV4aSAoU3RhbmRhcmQgTmFtZXMpOiBBZGQgbmV3IHBhdHRlcm5zLgoKMjAwMy0wMi0wMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmM6IFJldmVydCAyMDAzLTAxLTMxIGNoYW5nZS4KCjIwMDMtMDItMDEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiAgVXNlIHJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cy4KCjIwMDMtMDItMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGZsYWdzLmggKGZsYWdfdm9sYXRpbGUpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoZmxhZ192b2xhdGlsZV9nbG9iYWwsIGZsYWdfdm9sYXRpbGVfc3RhdGljKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2luZGlyZWN0X3JlZik6IERvbid0IGNoZWNrIGZsYWdfdm9sYXRpbGUuCgkqIHRvcGxldi5jIChmbGFnX3ZvbGF0aWxlKTogUmVtb3ZlIGRlZmluaXRpb24uCgkoZmxhZ192b2xhdGlsZV9nbG9iYWwsIGZsYWdfdm9sYXRpbGVfc3RhdGljKTogTGlrZXdpc2UuCgkoZl9vcHRpb25zKTogUmVtb3ZlIGNvcnJlc3BvbmRpbmcgZW50cmllcyBoZXJlLgoJKiB2YXJhc20uYyAobWFrZV9kZWNsX3J0bCk6IERvbid0IGNoZWNrIGZsYWdfdm9sYXRpbGVfZ2xvYmFsCglvciBmbGFnX3ZvbGF0aWxlX3N0YXRpYy4KCSogZG9jL2ludm9rZS50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiAtZnZvbGF0aWxlLAoJLWZ2b2xhdGlsZS1nbG9iYWwgYW5kIC1mdm9sYXRpbGUtc3RhdGljLgoKMjAwMy0wMS0zMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKHBhX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSwgcGFfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTW92ZQoJdXBkYXRpbmcgb2YgdG90YWxfY29kZV9ieXRlcyBmcm9tIHByb2xvZ3VlIHRvIGVwaWxvZ3VlLgoKMjAwMy0wMS0zMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IERvIG5vdCB1c2UgdGhlIG1vZGUgc3BlY2lmaWVkIGluIHRoZSBpbnNuCglwYXR0ZXJuIGFzIHJlbG9hZCBtb2RlIGZvciBhZGRyZXNzIG9wZXJhbmRzLiAgRG8gbm90IGdlbmVyYXRlIG9wdGlvbmFsCglyZWxvYWRzIGZvciBvcGVyYW5kcyB3aGVyZSBhIG1hbmRhdG9yeSByZWxvYWQgd2FzIGFscmVhZHkgcHVzaGVkLgoJR2VuZXJhdGUgb3B0aW9uYWwgcmVsb2FkcyBvbmx5IGluIHRoZSBmaW5hbCBwYXNzIHRob3VnaCBmaW5kX3JlbG9hZHMuCgkoaGF2ZV9yZXBsYWNlbWVudF9wKTogTmV3IGZ1bmN0aW9uLgoKMjAwMy0wMS0zMSAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZG9jL2luc3RhbGwudGV4aSAoVGVzdGluZyk6IFJlbW92ZSBhIHJlZmVyZW5jZSB0byBvdXIgb2Jzb2xldGUKCS90ZXN0cmVzdWx0cyB3ZWIgcGFnZXMgYW5kIHN0cmlwIHJlZHVuZGFudCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nCgl0ZXN0IHJlc3VsdHMuCgkoQmluYXJpZXMpOiBSZWZlciB0byBNaWNyb3NvZnQgV2luZG93cyBpbnN0ZWFkIG9mIGxpc3RpbmcgYWxsCglwb3NzaWJsZSB2YXJpYW50cy4KCjIwMDMtMDItMDEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoZW1pdF9wcmVmZXRjaF9pbnN0cnVjdGlvbnMpOiAgRG8gY29udmVyc2lvbiBhdCByaWdodCBwbGFjZSBpbgoJUlRMIGNoYWluLgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zZXQpOiBSZXZlcnNlIG9yZGVyIG9mIHJhZ3VtZXRucyB0bwoJUkVHX0NBTk5PVF9DSEFOR0VfTU9ERV9QCgkqIGRmLmMgKGRmX2RlZl9yZWNvcmRfMSk6IExpa2V3aXNlLgoJKiByZWNvZy5jIChyZWdpc3Rlcl9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9zdWJyZWcpOiBMaWtld2lzZS4KCSogaGFyZC1yZWctc2V0LmggKFJFR19DQU5OT1RfQ0hBTkdFX01PREVfUCk6IFVwZGF0ZSB1c2Ugb2YKCUNBTk5PVF9DSEFOR0VfTU9ERV9DTEFTUy4KCSogcmVnY2xhc3MuYyAoY2Fubm90X2NoYW5nZV9tb2RlX3NldF9yZWdzLCBpbnZhbGlkX21vZGVfY2hhbmdlX3ApOgoJTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChwdXNoX3JlbG9hZCk6IExpa2V3aXNlLgoJKiBhbHBoYS5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBVcGRhdGUgZGVmaW5pdGlvbi4KCSogaWE2NC5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBVcGRhdGUgZGVmaW5pdGlvbi4KCSogbWlwcy5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBVcGRhdGUgZGVmaW5pdGlvbi4KCSogbWlwcy1wcm90b3MuaCAobWlwc19jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBtaXBzLmMgKG1pcHNfY2Fubm90X2NoYW5nZV9tb2RlX2NsYXNzKTogVXBkYXRlLgoJKiBwYTY0LXJlZ3MuaCAoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogVXBkYXRlIGRlZmluaXRpb24uCgkqIHJzNjAwMC5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBVcGRhdGUgZGVmaW5pdGlvbi4KCSogczM5MC5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBVcGRhdGUgZGVmaW5pdGlvbi4KCSogc2guaCAoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogVXBkYXRlIGRlZmluaXRpb24uCgkqIHNoLXByb3Rvcy5oIChzaF9jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBzaC5jIChzaF9jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MpOiBVcGRhdGUuCgkqIGkzODYuaCAoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogTmV3LgoJKiB0bS50ZXhpIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDMtMDEtMzEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IFVwZGF0ZSBmb3IgTmF0aGFuJ3MgcmVjZW50CgljaGFuZ2UgdG8gTElOS19DT01NQU5EX1NQRUMgaW4gZ2NjLmMuCgoyMDAzLTAxLTMxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgYy85NTA2CgkqIGkzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBERUZBVUxUX1BDQ19TVFJVQ1RfUkVUVVJOLgoKMjAwMy0wMS0zMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhMzItcmVncy5oIChSRUdOT19SRUdfQ0xBU1MsIFJFR19DTEFTU19GUk9NX0xFVFRFUik6IERlbGV0ZQoJZHVwbGljYXRlZCBjb2RlLgoKMjAwMy0wMS0zMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoVFlQRV9CSU5GT19TSVpFLCBUWVBFX0JJTkZPX1NJWkVfVU5JVCk6IFJlbW92ZS4KCShCSU5GT19FTFRTKTogTmV3ICNkZWZpbmUuCgkqIHN0b3ItbGF5b3V0LmMgKGZpbmFsaXplX3JlY29yZF9zaXplKTogRG9uJ3Qgc2V0IHRoZW0uCgkqIGNwL2NwLXRyZWUuaCAoQklORk9fU1VCVlRUX0lOREVYLCBCSU5GT19WUFRSX0lOREVYLAoJQklORk9fUFJJTUFSWV9CQVNFX09GKTogVXNlIEJJTkZPX0VMVFMuCgkoQklORk9fTEFOR19FTFRTKTogTmV3ICNkZWZpbmUuCgkqIGNwL3RyZWUuYyAobWFrZV9iaW5mbyk6IFVzZSBCSU5GT19MQU5HX0VMVFMuCgkqIGphdmEvY2xhc3MuYyAobWFrZV9jbGFzcyk6IFVzZSBCSU5GT19FTFRTLgoJKHNldF9zdXBlcl9pbmZvKTogTGlrZXdzZS4KCShhZGRfaW50ZXJmYWNlX2RvKTogTGlrZXdpc2UuCgkqIG9iamMvb2JqYy1hY3QuYyAoc3RhcnRfY2xhc3MpOiBVc2UgQklORk9fRUxUUy4KCjIwMDMtMDEtMzEgRGFubnkgU21pdGggPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogdGltZXZhci5jIChnZXRydXNhZ2UpOiBEb24ndCBldmVyIGRlY2xhcmUgaWYgbm90IEhBVkVfR0VUUlVTQUdFLgoJKHRpbWVzKTogRG9uJ3QgZXZlciBkZWNsYXJlIGlmIG5vdCBIQVZFX1RJTUVTLgoJKGNsb2NrKTogRG9uJ3QgZXZlciBkZWNsYXJlIGlmIG5vdCBIQVZFX0NMT0NLLgoKMjAwMy0wMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZsb3cuYyAodXBkYXRlX2xpZmVfaW5mbyk6IFphcCBsaWZlIGluZm8gYWZ0ZXIgY2xlYW51cF9jZmcuCgkocmVnbm9fdW5pbml0aWFsaXplZCk6IFVzZSBjb3JyZWN0IGxpdmUgYXQgZnVuY3Rpb24gZW50cnkgc2V0LgoJKHJlZ25vX2Nsb2JiZXJlZF9hdF9zZXRqbXApOiBMaWtld2lzZS4KCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IFByb21vdGUgYWxsIE1FTSBpbnRlcm1lZGlhdGVzIHRvIHJlZ3MuCgoyMDAzLTAxLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FybS9hcm0uYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9hcm0vYXJtLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL25ldGJzZC1lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vbmV0YnNkLmg6IExpa2V3aXNlLgoKMjAwMy0wMS0zMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBnZW5ndHlwZS5jIChzdHJ1Y3Qgd2Fsa190eXBlX2RhdGEpOiBBZGQgbmVlZHNfY2FzdF9wLgoJKHdhbGtfdHlwZSk6IFNldCBuZWVkc19jYXN0X3AgaW4gd2Fsa190eXBlX2RhdGEuCgkod3JpdGVfdHlwZXNfcHJvY2Vzc19maWVsZCk6IFN1cHBseSBjYXN0cyB3aGVuIHJlcXVpcmVkIHRvIHN1cHByZXNzCgl3YXJuaW5ncy4KCSh3cml0ZV9yb290KTogQ2FzdCBndF9wY2hfbl9TIHRvIHN1cHByZXNzIHdhcm5pbmcuCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgLVduby1lcnJvciBmcm9tIGd0eXBlLWRlc2MubyBhbmQgYy1kZWNsLm8uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHByaW50X29wZXJhbmQpOiBNYXNrIG9mZiBoaWdoIGJpdHMgb25seQoJd2hlbiB0aGV5IG1pZ2h0IGV4aXN0LgoJKiBjb25maWcvcnM2MDAwL3QtcnM2MDAwOiBSZW1vdmUgLVduby1lcnJvciBmcm9tIHZhcmFzbS5vLAoJaW5zbi1jb25kaXRpb25zLm8sIGFuZCByczYwMDAuby4KCjIwMDMtMDEtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZ2MtcGFnZS5jIChHLmNvbnRleHRfZGVwdGhfYWxsb2NhdGlvbnMpOiBOZXcuCgkoRy5jb250ZXh0X2RlcHRoX2NvbGxlY3Rpb25zKTogTmV3LgoJKGFsbG9jX3BhZ2UpOiBTZXQgRy5jb250ZXh0X2RlcHRoX2FsbG9jYXRpb25zLgoJKGdnY19jb2xsZWN0KTogU2V0IEcuY29udGV4dF9kZXB0aF9jb2xsZWN0aW9ucy4KCShnZ2NfcHVzaF9jb250ZXh0KTogTGltaXQgdG8gSE9TVF9CSVRTX1BFUl9MT05HIGNvbnRleHRzLgoJKGdnY19wb3BfY29udGV4dCk6IEVhcmx5IGV4aXQgZm9yIG5vIGFsbG9jYXRpb25zIG9yIGNvbGxlY3Rpb25zLgoKMjAwMy0wMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtaW5saW5lLmMgKHdhbGtfdHJlZSk6IFN0cmVhbWxpbmUgZHVwbGljYXRlIGhhc2ggdGFibGUgbG9va3VwLgoKMjAwMy0wMS0zMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX2NvbXB1dGVfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBJZiBvcHRpbWl6aW5nIGZvcgoJc2l6ZSwgdGhlIGxpbmsgcmVnaXN0ZXIgaXMgYWx3YXlzIHNhdmVkIGlmIGFueSBvdGhlciByZWdpc3RlciBpcwoJc2F2ZWQuCgoyMDAzLTAxLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBVcGRhdGUgdGhlIHByb3RvdHlwZSBmb3IKCWNvbXB1dGVfcGx1c3NpX2NjLgoJKGNwcF9yZWFkZXIpOiBEZWNsYXJlIGJlZm9yZSBpdCBpcyB1c2VkLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoY29tcHV0ZV9wbHVzc2lfY2MpOiBDaGFuZ2UgdGhlIHJldHVybgoJdHlwZSB0byBpbnQuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAobW9uaXRvcl9wcm9sb2d1ZSk6IENhbGwgYWJvcnQoKSBpZiB3ZQoJc2VlIGFuIHVua25vd24gSDggdmFyaWFudC4KCjIwMDMtMDEtMzAgIFJhbGYgQ29yc2VwaXVzICA8Y29yc2VwaXVAZmF3LnVuaS11bG0uZGU+CgoJUFIgdGFyZ2V0LzkzMTYKCSogY29uZmlnL3JzNjAwMC9ydGVtcy5oOiBBZGQgQ1BQX09TX0RFRkFVTFRfU1BFQy4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oOiBBZGQgQ1BQX09TX1JURU1TX1NQRUMuCgkqIGNvbmZpZy9yczYwMDAvdC1ydGVtczogTmV3IGZpbGUuIG11bHRpbGliIHZhcmlhbnRzIHRvIG1hdGNoIE9TLgoJKiBjb25maWcuZ2NjIChwb3dlcnBjLSotcnRlbXMqKTogVXNlIHJzNjAwMC90LXJ0ZW1zIGluc3RlYWQgb2YKCXJzNjAwMC90LXBwY2dhcyBzbyB3ZSBnZXQgdGhlIGRlc2lyZWQgbXVsdGlsaWJzLgoKMjAwMy0wMS0zMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBVcGRhdGUgc3RhY2sgcG9pbnRlcgoJd2hlbiBwb3BwaW5nIHNhdmVkIElQIHJlZ2lzdGVyIG9mZiB0aGUgc3RhY2suCgoyMDAzLTAxLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3JzNjAwMC9haXg0My5oOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL3JzNjAwMC9haXg1MS5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9haXg1Mi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9zcGUubWQ6IExpa2V3aXNlLgoKMjAwMy0wMS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGJ1aWx0aW5fZGVmaW5lX2Zsb2F0X2NvbnN0YW50cyk6IERlZmluZQoJX188VFlQRT5fSEFTX0lORklOSVRZX18gYW5kIF9fPFRZUEU+X0hBU19RVUlFVF9OQU5fXy4KCjIwMDMtMDEtMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFzbTogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9zaC9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2gubWQ6IExpa2V3aXNlLgoKMjAwMy0wMS0zMCAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIG9iamMvTWFrZS1sYW5nLmluIChvYmpjLXBhcnNlLnkpOiBGaW5kIGMtcGFyc2UuaW4gaW4gJChzcmNkaXIpLgoKMjAwMy0wMS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnAtYml0LmggKF9fbWFrZV9kcCk6IERlY2xhcmUgaWYgVE1PREVTLgoKMjAwMy0wMS0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgZW50cmllcyBmb3IKCWdlbmVyYWxfb3BlcmFuZF9zcmMgYW5kIGdlbmVyYWxfb3BlcmFuZF9kc3QuCgoyMDAzLTAxLTI5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOgoJUmV0dXJuIHRydWUgZm9yIHZhcmlhYmxlIHNpemVkIHR5cGVzLgoJKHJzNjAwMF92YV9hcmcpOiBIYW5kbGUgdmFyaWFibGUgc2l6ZWQgdHlwZXMgcGFzc2VkIGJ5IHJlZmVyZW5jZQoJb24gbm9uLVNWUjQgQUJJLgoKMjAwMy0wMS0yOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX2xlZ3RpbWl6ZV9hZGRyZXNzKTogTmV3IGZ1bmN0aW9uLgoJKiBhcm0tcHJvdG9zLmggKGFybV9sZWd0aW1pemVfYWRkcmVzcyk6IEFkZCBwcm90b3R5cGUuCgkqIGFybS5oIChBUk1fTEVHSVRJTUlaRV9BRERSRVNTKTogVXNlIGFybV9sZWdpdGltaXplX2FkZHJlc3MuCgkoTEVHSVRJTUlaRV9BRERSRVNTLCBUSFVNQl9MRUdJVElNSVpFX0FERFJFU1MpOiBXcmFwIHdpdGgKCWRvIC4uLiB3aGlsZSAoMCkKCjIwMDMtMDEtMjkgIEpvZWwgU2hlcnJpbGwgIDxqb2VsQE9BUmNvcnAuY29tPgoKCVBSIGJvb3RzdHJhcC85Mjk2CgkqIGd0aHItcnRlbXMuaDogRGVmaW5lIF9fR1RIUkVBRF9NVVRFWF9JTklULiAgQXBwYXJlbnRseSBubyBjb2RlCglkZXBlbmRlZCBvbiBpdCBiZWluZyBkZWZpbmVkIHVudGlsIG5vdy4KCjIwMDMtMDEtMjkgIEpvZWwgU2hlcnJpbGwgIDxqb2VsQE9BUmNvcnAuY29tPgoKCVBSIHRhcmdldC85Mjk1CgkqIGNvbmZpZy9taXBzL3J0ZW1zLmg6IFByZWRlZmluZSBfX1VTRV9JTklUX0ZJTklfXyBzbyBnZW5lcmljCglSVEVNUyBjb2RlIGtub3dzIHdoaWNoIEMrKyBpbml0aWFsaXphdGlvbiBzdHlsZSB0aGUgdG9vbHNldAoJY29uZmlndXJhdGlvbiBpcyB1c2luZy4KCjIwMDMtMDEtMjkgIEpvZWwgU2hlcnJpbGwgIDxqb2VsQE9BUmNvcnAuY29tPgoKCVBSIGJvb3RzdHJhcC85MjkzCgkqIGNvbmZpZy9tNjhrL3QtY3J0c3R1ZmY6IFJlcGxhY2Ugc3BhY2VzIHdpdGggdGFicywgYWRkCgkgJChNVUxUSUxJQl9DRkxBR1MpIGFzIGNvbXBpbGVyIG9wdGlvbiBhbmQgbXVsdGlsaWIgY3J0YmVnaW4vZW5kLm8uCgoyMDAzLTAxLTI5ICBKb2VsIFNoZXJyaWxsICA8am9lbEBPQVJjb3JwLmNvbT4KCglQUiBib290c3RyYXAvOTI5MgoJKiBjb25maWcuZ2NjIChocHBhMS4xLXJ0ZW1zKTogIERpZCBub3QgaW5jbHVkZSB0LXJ0ZW1zIG5vciBlbmFibGUKCVJURU1TIHRocmVhZHMuCgkqIGNvbmZpZy9wYS9ydGVtcy5oIChMSUJfU1BFQyk6IFVzZSAtTiB3aGVuIGxpbmtpbmcuCgoyMDAzLTAxLTI5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGMtcGFyc2Uubyk6IExvY2F0ZSBzb3VyY2UgZmlsZSBpbiAkKHBhcnNlZGlyKQoJbm90ICQoc3JjZGlyKS4KCjIwMDMtMDEtMjkgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAod2Fsa190cmVlKTogQWRkIENIQVJfVFlQRS4KCjIwMDMtMDEtMjkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKHN1YmRpM19jYXJyeV9yZXg2NCk6IEZpeCB0eXBvLgoKMjAwMy0wMS0yOCAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KCgkqIGNvcmV0eXBlcy5oIChjcHBfcmVhZGVyKTogRm9yd2FyZCBkZWNsYXJlIHN0cnVjdC4KCSogYy1wcmFnbWEuaCAoY3BwX3JlYWRlcik6IFJlbW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoJKiBoYXNodGFibGUuaCAoY3BwX3JlYWRlcik6IExpa2V3aXNlLgoJKiBzY2FuLmggKGNwcF9yZWFkZXIpOiBMaWtld2lzZS4KCSogdHJlZS5oIChjcHBfcmVhZGVyKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmggKGNwcF9yZWFkZXIpOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGNwcF9yZWFkZXIpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IFJlbW92ZSBHQ0NfQ1BQTElCX0ggaWZkZWYsIHVzZQoJc3RydWN0IGNwcF9yZWFkZXIgaW4gcHJvdG90eXBlcy4KCjIwMDMtMDEtMjggIENocmlzdGlhbiBDb3JuZWxzc2VuICA8Y2Nvcm5AY3MudHUtYmVybGluLmRlPgoKCSogZG9jL2luc3RhbGwudGV4aTogQWRkIGRvY3VtZW50YXRpb24gZm9yIGluc3RhbGxhdGlvbiBpbnRvCgl0b29sZGlycyBhbmQgd2l0aCBERVNURElSLgoKMjAwMy0wMS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGlhNjQqLSotYWl4Kik6IFJlbW92ZS4KCSogY29uZmlnL2lhNjQvYWl4LmgsIGNvbmZpZy9pYTY0L3QtYWl4OiBSZW1vdmUgZmlsZS4KCSogY29uZmlnL2lhNjQvdW53aW5kLWFpeC5jOiBSZW1vdmUgZmlsZS4KCjIwMDMtMDEtMjggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kICh0YWJsZWp1bXArMik6IERvbid0IHNpZ24gZXh0ZW5kIGFuIGFkZHJlc3MKCXJlZ2lzdGVyLgoJKiBjb25maWcvbTY4ay9hcG9sbG82OC5oIChBU01fUkVUVVJOX0NBU0VfSlVNUCk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9jb2ZmLmggKEFTTV9SRVRVUk5fQ0FTRV9KVU1QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmggKEFTTV9SRVRVUk5fQ0FTRV9KVU1QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGtlbGYuaCAoQVNNX1JFVFVSTl9DQVNFX0pVTVApOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbW90MzMwMC5oIChBU01fUkVUVVJOX0NBU0VfSlVNUCk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKEFTTV9SRVRVUk5fQ0FTRV9KVU1QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL3BiYi5oIChBU01fUkVUVVJOX0NBU0VfSlVNUCk6IExpa2V3aXNlLgoKMjAwMy0wMS0yOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChub256ZXJvX2JpdHMpOiBGaXggY2hlY2sgZm9yIG5lZ2F0aXZlIGRpdmlkZSBvcGVyYW5kcy4KCjIwMDMtMDEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcndyZWxvY19zZWN0aW9uX3R5cGVfZmxhZ3MpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2hwdXguaCAoVEFSR0VUX1NFQ1RJT05fVFlQRV9GTEFHUyk6IE5ldy4KCjIwMDMtMDEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjc2UuYyAoZmluZF9iZXN0X2FkZHIpOiBLaWxsICFBRERSRVNTX0NPU1QgY29kZS4KCgkqIGNvbmZpZy9jcmlzL2NyaXMuYyAoY3Jpc19hZGRyZXNzX2Nvc3QpOiBNYWtlIHN0YXRpYy4KCShUQVJHRVRfUlRYX0NPU1RTLCBUQVJHRVRfQUREUkVTU19DT1NUKTogTmV3LgoJKiBjb25maWcvY3Jpcy9jcmlzLmggKEFERFJFU1NfQ09TVCk6IFJlbW92ZS4KCSogY29uZmlnL2NyaXMvY3Jpcy1wcm90b3MuaDogVXBkYXRlLgoKMjAwMy0wMS0yMyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiByZWdjbGFzcy5jIChpbml0X3JlZ19hdXRvaW5jKTogTmV3IGZ1bmN0aW9uLgoJKHJlZ2NsYXNzKTogTW92ZSBpbml0aWFsaXphdGlvbiBvZiBmb3JiaWRkZW5faW5jX2RlY19jbGFzcyBmcm9tCgloZXJlLi4uCgkoaW5pdF9yZWdzKTogdG8gaGVyZS4gIEF2b2lkcyByZWluaXRpYWxpemF0aW9uIGZvciBlYWNoIGZ1bmN0aW9uLAoJc2F2aW5nIGNvbXBpbGF0aW9uIHRpbWUuCgoyMDAzLTAxLTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBBZGQgd2Fybl9kZXByZWNhdGVkIGZpZWxkLgoJKiBjcHBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyKTogVHVybiBpdCBvbiBieSBkZWZhdWx0LgoJKiBjLW9wdHMuYyAoY19jb21tb25fZGVjb2RlX29wdGlvbik6IFNldCBpdC4KCSogY3BwbGliLmMgKGRvX3ByYWdtYV9vbmNlKTogT25seSBjb21wbGFpbiBhYm91dCAjcHJhZ21hIG9uY2UKCWlmIHdhcm5fZGVwcmVjYXRlZCBpcyBzZXQuCgoyMDAzLTAxLTI4ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBlbWl0LXJ0bC5jIChjb25zdF9kb3VibGVfaHRhYl9oYXNoKTogIFVzZSBtb2RlIGluIHRoZSBoYXNoLgoJKiBsb29wLmMgKHNjYW5fbG9vcCk6ICBNb3ZlIG1vdmFibGVzIG9uIC1PcyByaWNoLXJlZ2lzdGVyIHRhcmdldHMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChzaWJjYWxsKik6ICBVc2UgbWF0Y2hfb3BlcmFuZCBmb3IgTFIuCgoyMDAzLTAxLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdGFyZ2V0LmggKHRhcmdldG0uYWRkcmVzc19jb3N0KTogTmV3LgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9BRERSRVNTX0NPU1QpOiBOZXcuCgkoVEFSR0VUX1JUWF9DT1NUUyk6IFVuY29tbWVudC4gIE9vcHMuCgkqIGNzZS5jIChhZGRyZXNzX2Nvc3QpOiBVc2UgbmV3IHRhcmdldCBob29rLgoJKGRlZmF1bHRfYWRkcmVzc19jb3N0KTogTmV3LgoJKiBvdXRwdXQuaCAoZGVmYXVsdF9hZGRyZXNzX2Nvc3QpOiBEZWNsYXJlLgoJKiBob29rcy5jIChob29rX2ludF9ydHhfMCk6IE5ldy4KCSogaG9va3MuaCAoaG9va19pbnRfcnR4XzApOiBEZWNsYXJlLgoJKiBsb29wLmMgKGNvbWJpbmVfZ2l2c19wKTogUmVtb3ZlIGlmIDAgY29kZS4KCSogc3lzdGVtLmggKEFERFJFU1NfQ09TVCk6IFBvaXNvbi4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYWxwaGEvYWxwaGEuaCwgY29uZmlnL2QzMHYvZDMwdi5jLAoJY29uZmlnL2QzMHYvZDMwdi5oLCBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9pYTY0L2lhNjQuaCwKCWNvbmZpZy9tMzJyL20zMnIuYywgY29uZmlnL20zMnIvbTMyci5oLCBjb25maWcvbWNvcmUvbWNvcmUuYywKCWNvbmZpZy9tY29yZS9tY29yZS5oLCBjb25maWcvbW1peC9tbWl4LmMsIGNvbmZpZy9tbWl4L21taXguaCwKCWNvbmZpZy9yczYwMDAvcnM2MDAwLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmgsIGNvbmZpZy9zcGFyYy9zcGFyYy5jLAoJY29uZmlnL3NwYXJjL3NwYXJjLmgsIGNvbmZpZy92ODUwL3Y4NTAuYywgY29uZmlnL3Y4NTAvdjg1MC5oLAoJY29uZmlnL3h0ZW5zYS94dGVuc2EuYywgY29uZmlnL3h0ZW5zYS94dGVuc2EuaAoJKFRBUkdFVF9BRERSRVNTX0NPU1QpOiBEZWZpbmUgYXMgaG9va19pbnRfcnR4XzAuCgkoQUREUkVTU19DT1NUKTogUmVtb3ZlLgoKCSogY29uZmlnL2FyYy9hcmMtcHJvdG9zLmgsIGNvbmZpZy9hcmMvYXJjLmMsIGNvbmZpZy9hcmMvYXJjLmgsCgljb25maWcvYXZyL2F2ci1wcm90b3MuaCwgY29uZmlnL2F2ci9hdnIuYywgY29uZmlnL2F2ci9hdnIuaCwKCWNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oLCBjb25maWcvYzR4L2M0eC5jLCBjb25maWcvYzR4L2M0eC5oLAoJY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC1wcm90b3MuaCwgY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5jLAoJY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5oLCBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oLAoJY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaTM4Ni9pMzg2LmgsIGNvbmZpZy9pOTYwL2k5NjAtcHJvdG9zLmgsCgljb25maWcvaTk2MC9pOTYwLmMsIGNvbmZpZy9pOTYwL2k5NjAuaCwgY29uZmlnL2lwMmsvaXAyay1wcm90b3MuaCwKCWNvbmZpZy9pcDJrL2lwMmsuYywgY29uZmlnL2lwMmsvaXAyay5oLCBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oLAoJY29uZmlnL21pcHMvbWlwcy5jLCBjb25maWcvbWlwcy9taXBzLmgsCgljb25maWcvbTY4aGMxMS9tNjhoYzExLXByb3Rvcy5oLCBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMsCgljb25maWcvbTY4aGMxMS9tNjhoYzExLmgsIGNvbmZpZy9uczMyay9uczMyay1wcm90b3MuaCwKCWNvbmZpZy9uczMyay9uczMyay5jLCBjb25maWcvbnMzMmsvbnMzMmsuaCwgY29uZmlnL3BhL3BhLXByb3Rvcy5oLAoJY29uZmlnL3BhL3BhLmMsIGNvbmZpZy9wYS9wYS5oLCBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oLAoJY29uZmlnL3MzOTAvczM5MC5jLCBjb25maWcvczM5MC9zMzkwLmgsIGNvbmZpZy92YXgvdmF4LXByb3Rvcy5oLAoJY29uZmlnL3ZheC92YXguYywgY29uZmlnL3ZheC92YXguaAoJKGZvb19hZGRyZXNzX2Nvc3QpOiBNYWtlIHN0YXRpYy4KCShUQVJHRVRfQUREUkVTU19DT1NUKTogTmV3LgoJKEFERFJFU1NfQ09TVCk6IFJlbW92ZS4KCgkqIGNvbmZpZy9hcm0vYXJtLmgsIGNvbmZpZy9hcm0vYXJtLmMsIGNvbmZpZy9tODhrL204OGsuaCwKCWNvbmZpZy9tODhrL204OGsuYywgY29uZmlnL3JvbXAvcm9tcC5oLCBjb25maWcvcm9tcC9yb21wLmMsCgljb25maWcvc2gvc2guYywgY29uZmlnL3NoL3NoLmgsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jLAoJY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmgKCShBRERSRVNTX0NPU1QpOiBNb3ZlIGNvZGUgLi4uCgkoZm9vX2FkZHJlc3NfY29zdCk6IC4uLiBoZXJlLgoJKFRBUkdFVF9BRERSRVNTX0NPU1QpOiBOZXcuCgoJKiBjb25maWcvbTMyci9tMzJyLmMgKG0zMnJfYWRkcmVzc19jb3N0KTogUmVtb3ZlLgoJKiBjb25maWcvbTMyci9tMzJyLXByb3Rvcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvbW1peC9tbWl4LmMgKG1taXhfYWRkcmVzc19jb3N0KTogUmVtb3ZlLgoJKiBjb25maWcvbW1peC9tbWl4LXByb3Rvcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfYWRkcmVzc19jb3N0XzEpOiBSZW5hbWUgZnJvbQoJbW4xMDMwMF9hZGRyZXNzX2Nvc3Q7IG1vdmUgdW5zaWcgYWxsb2NhdGlvbiAuLi4KCShtbjEwMzAwX2FkZHJlc3NfY29zdCk6IC4uLiBoZXJlLgoJKFRBUkdFVF9BRERSRVNTX0NPU1QpOiBOZXcuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChBRERSRVNTX0NPU1QpOiBSZW1vdmUuCgoJKiBkb2MvdG0udGV4aTogVXBkYXRlLgoKMjAwMy0wMS0yOCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNuKTogUmV0dXJuIG5lY2Vzc2FyeSBjeWNsZSBhZHZhbmNlCglhZnRlciBpc3N1aW5nIHRoZSBpbnNuLgoJKHJhbmtfZm9yX3NjaGVkdWxlKTogTWFrZSBhIGluc24gd2l0aCAvUyB0aGUgaGlnaGVzdCBwcmlvcml0eQoJaW5zbi4KCShtb3ZlX2luc24pOiBJZ25vcmUgc2NoZWR1bGUgZ3JvdXBzLiAgQ2xlYXIgU0NIRURfR1JPVVBfUC4KCShjaG9vc2VfcmVhZHkpOiBDaGVjayBTQ0hFRF9HUk9VUF9QLgoJKHNjaGVkdWxlX2Jsb2NrKTogQWR2YW5jZSBjeWNsZSBhZnRlciBpc3N1aW5nIGluc24gaWYgaXQgaXMKCW5lY2Vzc2FyeS4gIERvbid0IHJlb3JkZXIgaW5zbnMgaWYgdGhlcmUgaXMgYW4gaW5zbiB3aXRoIC9TLgoJKHNldF9wcmlvcml0aWVzKTogSWdub3JlIHNjaGVkdWxlIGdyb3Vwcy4KCgkqIHNjaGVkLWRlcHMuYyAocmVtb3ZlX2RlcGVuZGVuY2UsIGdyb3VwX2xlYWRlcik6IFJlbW92ZSB0aGUKCWZ1bmN0aW9ucy4KCShhZGRfZGVwZW5kZW5jZSk6IElnbm9yZSBzY2hlZHVsZSBncm91cHMuCgkoc2V0X3NjaGVkX2dyb3VwX3ApOiBEb24ndCBtYWtlIGNvcHkgb2YgZGVwZW5kZW5jaWVzIGZyb20gcHJldmlvdXMKCWluc24gb2YgdGhlIHNjaGVkdWxlIGdyb3VwLiAgQWRkIGFudGktZGVwZW5kZW5jeSB0byB0aGUgcHJldmlvdXMKCWluc24gb2YgdGhlIHNjaGVkdWxlIGdyb3VwLgoJKGNvbXB1dGVfZm9yd2FyZF9kZXBlbmRlbmNlcyk6IElnbm9yZSBzY2hlZHVsZSBncm91cHMuCgoJKiBzY2hlZC1lYmIuYyAoaW5pdF9yZWFkeV9saXN0KTogSWdub3JlIHNjaGVkdWxlIGdyb3Vwcy4KCgkqIHNjaGVkLXJnbi5jIChpbml0X3JlYWR5X2xpc3QpOiBEaXR0by4KCShjYW5fc2NoZWR1bGVfcmVhZHlfcCk6IERpdHRvLgoKMjAwMy0wMS0yOCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqbW92c2lfMSk6IFVzZSBtb3ZkcWEgdG8gbW92ZSBvbmUgeG1tCglyZWdpc3RlciB0byBhbm90aGVyIG9uZS4KCjIwMDMtMDEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChkZWZhdWx0X211c3RfcGFzc19pbl9zdGFjayk6IEZpeCB0eXBvIGluICF0eXBlIGNhc2UuCgoyMDAzLTAxLTI4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNzZS5jIChjc2VfaW5zbik6IEF2b2lkIHJlZHVuZGFudCBSRUdfRVFVQUwgbm90ZXMuCgoyMDAzLTAxLTI4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoQ0xBU1NfTUFYX05SRUdTKTogSWYgVEFSR0VUX1NITUVESUEsIGFuZCB0aGUgZ2l2ZW4KCWNsYXNzIGNvbnRhaW5zIGEgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIsIHJldHVybiB0aGUgc2l6ZSBvZiB0aGUKCW1vZGUgaW4gaGFsZiB3b3Jkcy4KCjIwMDMtMDEtMjggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl9jYXJyeV9mbGFnX29wZXJhdG9yKTogIE5ldyBwcmVkaWNhdGUuCgkoZmNtb3Zfb3BlcmF0b3IpOiBGaXggd2hpdGVzcGFjZS4KCShpeDg2X2V4cGFuZF9jYXJyeV9mbGFnX2NvbXBhcmUpOiAgRGVhbCB3aXRoIGZsb2F0aW5nIHBvaW50LgoJKGl4ODZfZXhwYW5kX2ludF9tb3ZjYyk6IERlYWwgd2l0aCBmcDsgdXBkYXRlIGluc24gZXhwYW5zaW9uCgkoaXg4Nl9leHBhbmRfaW50X2FkZGNjKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfc3RybGVuc2lfdW5yb2xsXzEpOiBsaWtld3NpZS4KCSogaTM4Ni5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgaXg4Nl9jYXJyeV9mbGFnX29wZXJhdG9yLgoJKiBpMzg2Lm1kIChhZGQ/aV9jYXJyeV9yZXg2NCk6IFVzZSBuZXcgcHJlZGljYXRlLgoJKHN1Yj9pM19jYXJyeV9yZXg2NCk6IExpa2V3aXNlLgoJKHg4Nl9tb3Y/aWNjXzBfbTEqKTogTGlrZXdpc2UuCgoyMDAzLTAxLTI4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY2ZnbG9vcG1hbmlwLmMgKGNyZWF0ZV9wcmVoZWFkZXIpOiBJbml0aWFsaXplIHNyYyB0byBhdm9pZAoJd2FybmluZy4KCgkqIGV4cG1lZC5jIChlbWl0X3N0b3JlX2ZsYWcpOiBGaXggY2FzdCB0byBhdm9pZCBzaWduCgljb21wYXJpc29uIHdhcm5pbmcuCgoJKiBjb21iaW5lLmMgKGZvcmNlX3RvX21vZGUpOiBBZGQgY2FzdCB0byBmaXggd2FybmluZyB3aGVuCglTVE9SRV9GTEFHX1ZBTFVFIGlzIG5lZ2F0aXZlLgoKMjAwMy0wMS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChjc2Uubyk6IERlcGVuZCBvbiBUQVJHRVRfSC4KCSogY3NlLmMgKHJ0eF9jb3N0KTogVXNlIHRhcmdldG0ucnR4X2Nvc3RzLgoJKiBzeXN0ZW0uaCAoQ09OU1RfQ09TVFMgUlRYX0NPU1RTIERFRkFVTFRfUlRYX0NPU1RTKTogUG9pc29uLgoJKiBkb2MvdG0udGV4aTogVXBkYXRlLgoKCSogdGFyZ2V0LmggKHRhcmdldG0ucnR4X2Nvc3RzKTogTmV3LgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9SVFhfQ09TVFMpOiBOZXcuCgkqIGhvb2tzLmMgKGhvb2tfYm9vbF9ydHhfaW50X2ludF9pbnRwX2ZhbHNlKTogTmV3LgoJKiBob29rcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfcnR4X2Nvc3RfZGF0YSk6IE5ldy4KCShhbHBoYV9ydHhfY29zdHMsIFRBUkdFVF9SVFhfQ09TVFMpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUk9DRVNTT1JfTUFYKTogTmV3LgoJKENPTlNUX0NPU1RTLCBSVFhfQ09TVFMpOiBSZW1vdmUuCgoJKiBjb25maWcvYXJjL2FyYy5jLCBjb25maWcvYXJjL2FyYy5oLCBjb25maWcvYzR4L2M0eC5jLAoJY29uZmlnL2M0eC9jNHguaCwgY29uZmlnL2NyaXMvY3Jpcy5jLCBjb25maWcvY3Jpcy9jcmlzLmgsCgljb25maWcvZDMwdi9kMzB2LmMsIGNvbmZpZy9kMzB2L2QzMHYuaCwgY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5jLAoJY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5oLCBjb25maWcvZnJ2L2Zydi5jLCBjb25maWcvZnJ2L2Zydi5oLAoJY29uZmlnL2g4MzAwL2g4MzAwLmMsIGNvbmZpZy9oODMwMC9oODMwMC5oLCBjb25maWcvaTM3MC9pMzcwLmMsCgljb25maWcvaTM3MC9pMzcwLmgsIGNvbmZpZy9pMzg2L2kzODYuYywgY29uZmlnL2kzODYvaTM4Ni5oLAoJY29uZmlnL2k5NjAvaTk2MC5jLCBjb25maWcvaTk2MC9pOTYwLmgsIGNvbmZpZy9pYTY0L2lhNjQuYywKCWNvbmZpZy9pYTY0L2lhNjQuaCwgY29uZmlnL20zMnIvbTMyci5jLCBjb25maWcvbTMyci9tMzJyLmgsCgljb25maWcvbTY4ay9tNjhrLmMsIGNvbmZpZy9tNjhrL202OGsuaCwgY29uZmlnL204OGsvbTg4ay5jLAoJY29uZmlnL204OGsvbTg4ay5oLCBjb25maWcvbWNvcmUvbWNvcmUuYywgY29uZmlnL21jb3JlL21jb3JlLmgsCgljb25maWcvbWlwcy9taXBzLmMsIGNvbmZpZy9taXBzL21pcHMuaCwgY29uZmlnL21uMTAyMDAvbW4xMDIwMC5jLAoJY29uZmlnL21uMTAyMDAvbW4xMDIwMC5oLCBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMsCgljb25maWcvbW4xMDMwMC9tbjEwMzAwLmgsIGNvbmZpZy9uczMyay9uczMyay5jLCBjb25maWcvbnMzMmsvbnMzMmsuaCwKCWNvbmZpZy9wYS9wYS5jLCBjb25maWcvcGEvcGEuaCwgY29uZmlnL3BkcDExL3BkcDExLmMsCgljb25maWcvcGRwMTEvcGRwMTEuaCwgY29uZmlnL3JvbXAvcm9tcC5jLCBjb25maWcvcm9tcC9yb21wLmgsCgljb25maWcvcnM2MDAwL3JzNjAwMC5jLCBjb25maWcvcnM2MDAwL3JzNjAwMC5oLCBjb25maWcvczM5MC9zMzkwLmMsCgljb25maWcvczM5MC9zMzkwLmgsIGNvbmZpZy9zaC9zaC5jLCBjb25maWcvc2gvc2guaCwKCWNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jLCBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaCwKCWNvbmZpZy92ODUwL3Y4NTAuYywgY29uZmlnL3Y4NTAvdjg1MC5oLAoJY29uZmlnL3h0ZW5zYS94dGVuc2EuYywgY29uZmlnL3h0ZW5zYS94dGVuc2EuaAoJKENPTlNUX0NPU1RTLCBSVFhfQ09TVFMpOiBNb3ZlIGNvZGUgLi4uCgkoZm9vX3J0eF9jb3N0cywgVEFSR0VUX1JUWF9DT1NUUyk6IC4uLiBoZXJlLgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3J0eF9jb3N0c18xKTogUmVuYW1lIGZyb20gYXJtX3J0eF9jb3N0cy4KCShhcm1fcnR4X2Nvc3RzLCBUQVJHRVRfUlRYX0NPU1RTKTogTmV3LgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvYXJtL2FybS5oIChERUZBVUxUX1JUWF9DT1NUUyk6IFJlbW92ZS4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKENPTlNUX0NPU1RTKTogTW92ZSBjb2RlIC4uLgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfcnR4X2Nvc3RzKTogLi4uIGhlcmUuCgkoZGVmYXVsdF9ydHhfY29zdHMpOiBNYWtlIHN0YXRpYy4KCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChjb25zdF9jb3N0cyk6IE1ha2Ugc3RhdGljLgoJKGg4MzAwX2FuZF9jb3N0cywgaDgzMDBfc2hpZnRfY29zdHMpOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvaXAyay9pcDJrLmggKERFRkFVTFRfUlRYX0NPU1RTKTogUmVtb3ZlLgoJKENPTlNUX0NPU1RTKTogTW92ZSBjb2RlIC4uLgoJKiBjb25maWcvaXAyay9pcDJrLmMgKGlwMmtfcnR4X2Nvc3RzKTogLi4uIGhlcmUuICBSZW5hbWUgZnJvbQoJZGVmYXVsdF9ydHhfY29zdHM7IHVwZGF0ZSBmb3Igc2lnbmF0dXJlIGNoYW5nZS4KCSogY29uZmlnL2lwMmsvaXAyay1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oIChSVFhfQ09TVFMpOiBSZW1vdmUuCgkoQ09OU1RfQ09TVFMpOiBNb3ZlIGNvZGUgLi4uCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9ydHhfY29zdHMpOiAuLi4gaGVyZS4KCShUQVJHRVRfUlRYX0NPU1RTKTogTmV3LgoJKG02OGhjMTFfcnR4X2Nvc3RzXzEpOiBSZW5hbWUgZnJvbSBtNjhoYzExX3J0eF9jb3N0czsgbWFrZSBzdGF0aWMuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoY29uc3RfaW50X2Nvc3QpOiBNYWtlIHN0YXRpYy4KCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL21jb3JlL21jb3JlLmMgKG1jb3JlX2NvbnN0X2Nvc3RzKTogTWFrZSBzdGF0aWMuCgkobWNvcmVfYW5kX2Nvc3QsIG1jb3JlX2lvcl9jb3N0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL21taXgvbW1peC5jIChtbWl4X3J0eF9jb3N0cywgVEFSR0VUX1JUWF9DT1NUUyk6IE5ldy4KCShtbWl4X3J0eF9jb3N0X3JlY2FsY3VsYXRlZCk6IFJlbW92ZS4KCSogY29uZmlnL21taXgvbW1peC5oIChERUZBVUxUX1JUWF9DT1NUUyk6IFJlbW92ZS4KCSogY29uZmlnL21taXgvbW1peC1wcm90b3MuaDogVXBkYXRlLgoKCSogY29uZmlnL3NoL3NoLmMgKHNoaWZ0Y29zdHMpOiBNYWtlIHN0YXRpYy4KCShhZGRzdWJjb3N0cywgYW5kY29zdHMsIG11bHRjb3N0cyk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChUQVJHRVRfUlRYX0NPU1RTKTogTmV3LgoJKHNwYXJjX3J0eF9jb3N0cyk6IE1ha2Ugc3RhdGljOyB1cGRhdGUgZm9yIGNoYW5nZSBpbiBzaWduYXR1cmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChSVFhfQ09TVFNfQ0FTRVMsIFJUWF9DT1NUUyk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLXByb3Rvcy5oOiBVcGRhdGUuCgoJKiBjb25maWcvdjg1MC92ODUwLmMgKGNvbnN0X2Nvc3RzKTogTWFrZSBzdGF0aWMuCgkqIGNvbmZpZy92ODUwL3Y4NTAtcHJvdG9zLmg6IFVwZGF0ZS4KCgkqIGNvbmZpZy92YXgvdmF4LmggKFJUWF9DT1NUUyk6IFJlbW92ZS4KCShDT05TVF9DT1NUUyk6IE1vdmUgY29kZSAuLi4KCSogY29uZmlnL3ZheC92YXguYyAodmF4X3J0eF9jb3N0c18xKTogLi4uIGhlcmU7IHJlbmFtZQoJZnJvbSB2YXhfcnR4X2Nvc3QuCgkodmF4X3J0eF9jb3N0cywgVEFSR0VUX1JUWF9DT1NUUyk6IE5ldy4KCjIwMDMtMDEtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvdmF4L3ZheC5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogUmVtb3ZlLiAgUmVhbGx5LgoJKiBjb25maWcvdmF4L3ZheC1wcm90b3MuaDogVXBkYXRlLiAgUmVhbGx5LgoKMjAwMy0wMS0yOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFVOSVRTX1BFUl9IV0ZQVkFMVUUpOiBSZW5hbWVkIGZyb20uLi4KCShVTklUU19QRVJfRlBWQUxVRSk6IERlZmluZWQgYXMgdGhlIHdpZHRoIG9mIGEgbG9uZyBkb3VibGUsIG9yCgl6ZXJvIGlmIG5vIGhhcmR3YXJlIGZsb2F0aW5nIHBvaW50LgoJKExPTkdfRFVCTEVfVFlQRV9TSVpFKTogU2V0IHRvIDEyOCBvbiBOMzIgYW5kIE42NC4KCShNQVhfRklYRURfTU9ERV9TSVpFKTogRGVmaW5lIHRvIExPTkdfRE9VQkxFX1RZUEVfU0laRS4KCShMSUJHQ0MyX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZS4KCShCSUdHRVNUX0FMSUdOTUVOVCk6IFNhbWUgYXMgTE9OR19ET1VCTEVfVFlQRV9TSVpFLgoJKEZVTkNUSU9OX1ZBTFVFX1JFR05PX1ApOiBTZXQgZm9yIEZQX1JFVFVSTisyIG9uIE4zMiBhbmQgTjY0LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfYXJnX2luZm8pOiBQYXNzIFRGbW9kZSB2YWx1ZXMgaW4KCWV2ZW4gRlAgcmVnaXN0ZXJzIG9uIE4zMiBhbmQgTjY0LgoJKG1pcHNfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IFVzZSBVTklUU19QRVJfSFdGUFZBTFVFLgoJKG1pcHNfdmFfc3RhcnQpOiBBZGp1c3QgYWxpZ25tZW50IG9mIEFSR19QT0lOVEVSX1JFR05VTS4KCShtaXBzX3ZhX2FyZyk6IFVzZSBVTklUU19QRVJfSFdGUFZBTFVFLiAgSW1wb3NlIGFkZGl0aW9uYWwKCWV2ZW4tcmVnaXN0ZXItbGlrZSBhbGlnbm1lbnQgdG8gMTI4LWJpdCBhcmd1bWVudHMuCgkoc2F2ZV9yZXN0b3JlX2luc25zKTogVXNlIFVOSVRTX1BFUl9IV0ZQVkFMVUUuCgkobWlwc19mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLiAgUmV0dXJuIFRGbW9kZSBpbiAkZjAgYW5kICRmMgoJb24gTjMyIG9yIE42NC4KCSogY29uZmlnL21pcHMvX3RpbGliLmMgKF9fbmVndGkyLCBfX2FzaGx0aTMsIF9fbHNocnRpMyk6IE5ldy4KCSogY29uZmlnL21pcHMvdC1pcmlzNiAoTElCMkZVTkNTX0VYVFJBKTogQWRkIF90aWxpYi5jLgoJKFRQQklUKTogU2V0IHRvIHRwLWJpdC5jLgoJKHRwLWJpdC5jKTogQ3JlYXRlIG91dCBvZiBmcC1iaXQuYy4KCjIwMDMtMDEtMjggIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1wYXJzZS5pbjogUmVtb3ZlICclZXhwZWN0IDMyJyBkaXJlY3RpdmUgaW4gb2JqYyBtb2RlLgoKMjAwMy0wMS0yNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChMSUIyRlVOQ1NfU1QpOiBSZW1vdmUgX2djb3YuCgkoTElCR0NPVik6IE5ldyB2YXJpYWJsZS4KCShsaWJnY2MubWspOiBBZGQgTElCR0NPVi4KCShMSUJHQ0NfREVQUyk6IEFkZCBsaWJnY292LmMuCgkobGliZ2Nvdi5hKTogTmV3IHRhcmdldC4KCShjbGVhbik6IFJlbW92ZSBsaWJnY292LmEuCgkoaW5zdGFsbC1saWJnY2MpOiBEbyBsaWJnY292IHRvby4KCShzdGFnZTEtc3RhcnQsIHN0YWdlMi1zdGFydCwgc3RhZ2UzLXN0YXJ0LCBzdGFnZTQtc3RhcnQpOiBEZWFsCgl3aXRoIGxpYmdjb3YuYS4KCSogbGliZ2NjMi5jIChMX2djb3YpOiBNb3ZlIGludG8gLi4uCgkqIGxpYmdjb3YuYzogLi4uIGhlcmUuIE5ldyBmaWxlLgoJKiBta2xpYmdjYy5pbjogQWRkIGxpYmdjb3YgcnVsZXMuCgkqIGdjYy5jIChMSU5LX0NPTU1BTkRfU1BFQyk6IEFkZCAtbGdjb3Ygd2hlbiBwcm9maWxpbmcuCgoJKiBkb2MvaW52b2tlLnRleGkgKHByb2ZpbGUtYXJjcywgdGVzdC1jb3ZlcmFnZSk6IFVwZGF0ZSBhbmQKCWNsYXJpZnkuCgoJKiBwcm9maWxlLmMgKGluZGV4X2NvdW50c19maWxlKTogUmVtb3ZlIGR1cGxpY2F0ZSBjaGVjayBmb3Igb3BlbiBmaWxlLgoKMjAwMy0wMS0yNyAgSmVycnkgUXVpbm4gIDxqbHF1aW5uQG9wdG9ubGluZS5uZXQ+CgoJKiBnY2MvZG9jL2ludm9rZS50ZXhpIChPcHRpbWl6YXRpb24gT3B0aW9ucyk6IEdyb3VwIHRvZ2V0aGVyCglvcHRpb25hbCBhbmQgZXhwZXJpbWVudGFsIGZsYWdzLiAgTW92ZSB0cmFwdiBhbmQgYm91bmRzLWNoZWNrCglvdXQgb2YgdGhpcyBzZWN0aW9uLiAgR3JvdXAgZmxvYXRpbmcgcG9pbnQgZmxhZ3MgdG9nZXRoZXIuCgkoQ29kZSBHZW4gT3B0aW9ucyk6IE1vdmUgdHJhcHYgYW5kIGJvdW5kcy1jaGVjayB0byBoZXJlLgoKMjAwMy0wMS0yNyAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZ2NzZS5jIChjb25zdHByb3BfcmVnaXN0ZXIpOiBDaGVjayBORVhUX0lOU04gKGluc24pICE9IE5VTEwuCgoyMDAzLTAxLTI3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vOTA5MAoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IEFmdGVyIHB1c2hpbmcgYW4gYWRkcmVzc2VkIHJlZ2lzdGVyCglvbnRvIHRoZSBzdGFjaywgc2ltcGxpZnkgdGhlIHJlc3VsdC4KCjIwMDMtMDEtMjcgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IEZpeCB0eXBvLgoKMjAwMy0wMS0yNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGRvYy9jcHBvcHRzLnRleGk6IEZpeCB0eXBvLgoJKiBkb2Mvb2JqYy50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3Bhc3Nlcy50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMDEtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcmVhbC5jIChpYm1fZXh0ZW5kZWRfZm9ybWF0KTogQWRkIDUzIHRvIG1pbmltdW0gZXhwb25lbnQuCgkoZW5jb2RlX2libV9leHRlbmRlZCk6IEFkanVzdC4KCjIwMDMtMDEtMjYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAc29saXRvbi5pbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiB0aW1ldmFyLmRlZiAoVFZfT1ZFUkxPQUQsIFRWX1RFTVBMQVRFX0lOU1RBTlRJQVRJT04pOiBOZXcKCXRpbWV2YXJfaWQgZW51bWVyYXRpb25zLgoKMjAwMy0wMS0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAzLTAxLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2djY2ludC50ZXhpOiBVcGRhdGUgdGhlIGNvcHlyaWdodC4KCjIwMDMtMDEtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvY3BwLnRleGk6IEZpeCB0eXBvcy4KCSogZG9jL2V4dGVuZC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2d0eS50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2luc3RhbGwudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9wYXNzZXMudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9ydGwudGV4aTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMDEtMjYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaWE2NC9mZGUtZ2xpYmMuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9pYTY0L2hwdXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmM6IExpa2V3aXNlLgoKMjAwMy0wMS0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtbW9kZXMuZGVmOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogTGlrZXdpc2UuCgoyMDAzLTAxLTI2ICBTdGV2ZW4gQm9zc2NoZXIgIDxzLmJvc3NjaGVyQHN0dWRlbnQudHVkZWxmdC5ubD4KCgkqIGNvbmZpZy9hdnIvYXZyLmgsIGNvbmZpZy9jcmlzL2FvdXQuaCwgY29uZmlnL2VsZm9zLmgsCgljb25maWcvaTM4Ni9mcmVlYnNkLWFvdXQuaCwgY29uZmlnL21pcHMvaXJpczYuaDogVW5kZWZpbmUKCUFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QgYmVmb3JlIGRlZmluaW5nIGl0LgoJKiB0b3BsZXYuYyAocmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uKTogIERvbid0IGRlZmluZQoJQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVC4gIE9ubHkgdXNlIGl0IGlmIGl0IGlzIGRlZmluZWQuCgkocmVzdF9vZl90eXBlX2NvbXBpbGF0aW9uKTogRG9uJ3QgQVRUUklCVVRFX1VOVVNFRCBmdW5jdGlvbgoJcGFyYW1ldGVycyBmb3IgRFdBUkYyIHRhcmdldHMgYmVjYXVzZSB0aGV5IF9hcmVfIHVzZWQuCgoyMDAzLTAxLTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZwLWJpdC5oOiBEZWZpbmUgbWFjcm9zIGZvciBURm1vZGUgZmxvYXRpbmctcG9pbnQgY29uc3RhbnRzCglpbiBJQk0tZXh0ZW5kZWQgVEZtb2RlIHR5cGVzLgoJKFRNT0RFUyk6IERlZmluZSBpZiBfX0xEQkxfTUFOVF9ESUdfXyBoYXMgdGhlIG5ld2x5LXN1cHBvcnRlZAoJd2lkdGhzLgoJKiBjb25maWcvZnAtYml0LmMgKHBhY2tfZCwgdW5wYWNrX2QpOiBTdXBwb3J0IElCTS1leHRlbmRlZAoJVEZtb2RlIHR5cGUuCgoJKiBjb25maWcvZnAtYml0Lmg6IERlZmluZSBtYWNyb3MgZm9yIFRGbW9kZSBmbG9hdGluZy1wb2ludAoJY29uc3RhbnRzIGluIElFRUUgcXVhZCBURm1vZGUgdHlwZS4gIERlY2xhcmUgZnVuY3Rpb25zIGFjY29yZGluZwoJdG8gTF8gbWFjcm9zLgoJKFRNT0RFUyk6IERlZmluZSBpZiBfX0xEQkxfTUFOVF9ESUdfXyBpcyAxMTMuCgkoVEZ0eXBlLCBUSXR5cGUsIFVUSXR5cGUpOiBEZWZpbmUgaWYgVE1PREVTIGlzIGRlZmluZWQuCgkoTUFYX1VESV9JTlQsIE1BWF9ESV9JTlQsIEJJVFNfUEVSX0RJKTogTGlrZXdpc2UuCgkoRl9UX0JJVE9GRiwgRF9UX0JJVE9GRik6IERlZmluZS4KCShJTVBMSUNJVF8xLCBJTVBMSUNJVF8yKTogQ2FzdCBjb25zdGFudHMgdG8gdHlwZXMgdGhhdCBhcmUKCWd1YXJhbnRlZWQgdG8gYmUgd2lkZSBlbm91Z2guCgkqIGNvbmZpZy9mcC1iaXQuYzogQ2hlY2sgZm9yIExfIG1hY3JvcyBmb3IgdGYgZnVuY3Rpb25zLgoJKF9fdGhlbmFuX3RmKTogTmV3LgoJKG5hbik6IEFkanVzdC4KCShwYWNrX2QsIHVucGFja19kKTogU3VwcG9ydCBJRUVFIDg1NCBxdWFkIHR5cGUuCgkoX2ZwbXVsX3BhcnRzKTogU3VwcG9ydCBURm1vZGUuICBDb21wdXRlIGV4cG9uZW50IGFkanVzdG1lbnQKCWZyb20gRlJBQ19OQklUUywgRlJBQ19CSVRTIGFuZCBOR0FSRFMuCgkodXNpX3RvX2Zsb2F0KTogQ2FzdCBjb25zdGFudHMgdG8gYmUgc2hpZnRlZCB0byBmcmFjdHlwZQoJaW5zdGVhZCBvZiBhc3N1bWluZyBsb25nIGxvbmcgaXMgd2lkZSBlbm91Z2guCgkoc2ZfdG9fdGYsIGRmX3RvX3RmLCBfX21ha2VfdHAsIHRmX3RvX2RmLCB0Zl90b19zZik6IE5ldy4KCjIwMDMtMDEtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGRmLmM6IFJlbW92ZSBwcm90b3R5cGUgb2YgdW51c2VkIGZ1bmN0aW9uIGRmX3JlZ25vX3J0bF9kZWJ1Zy4KCjIwMDMtMDEtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKEZQQklUX0ZVTkNTKTogQWRkZWQgX3NmX3RvX3RmLgoJKERCQklUX0ZVTkNTKTogQWRkZWQgX2RmX3RvX3RmLgoJKFRQQklUX0ZVTkNTKTogTmV3LgoJKGxpYmdjYy5tayk6IFBhc3MgVFBCSVQgYW5kIFRQQklUX0ZVTkNTIGRvd24uCgkoTElCR0NDX0RFUFMpOiBBZGRlZCBUUEJJVC4KCSogbWtsaWJnY2MuaW46IFN1cHBvcnQgVFBCSVQgYW5kIFRQQklUX0ZVTkNTLgoKCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcCkgPGFkZCwgc3ViPjogUmV0dXJuIHh0YXJnZXQgaWYgd2UgaGF2ZW4ndAoJYmVlbiBhYmxlIHRvIG1vdmUgdGhlIHJlc3VsdCB0byB0YXJnZXQuCgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfc3RvcmUpOiBJbml0aWFsaXplIGRzdCB3aXRoIENPTlNUMF9SVFgKCWZvciB0aGUgYXBwcm9wcmlhdGUgbW9kZS4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBIYW5kbGUgcmV0dXJuIHZhbHVlcwoJaW4gYSBQQVJBTExFTC4KCgkqIHJ0bC5jIChnZXRfbW9kZV9hbGlnbm1lbnQpOiBNb3ZlZCB0by4uLgoJKiBzdG9yLWxheW91dC5jOiAuLi4gaGVyZS4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBEb24ndCBwcmludCBNRU0gZGV0YWlscyBpbgoJR0VORVJBVE9SX0ZJTEVzLgoKMjAwMy0wMS0yNiAgTWljaGFlbCBIYXllcyAgPG1waEBwYXJhZGlzZS5uZXQubno+CgoJKiBkZi5oOiBVcGRhdGUgY29tbWVudHMsIHRpZHkgZm9ybWF0dGluZy4KCShERl9GT1JXQVJELCBERl9SRVZFUlNFLCBERl9VTklPTiwgREZfSU5URVJTRUNUSU9OKTogUmVuYW1lIGZyb20gRk9SV0FSRCwKCVJFVkVSU0UsIFVOSU9OLCBJTlRFUlNFQ1RJT04uICBBbGwgdXNlcyB1cGRhdGVkLgoJKE9MRF9ERl9JTlRFUkZBQ0UpOiBSZW1vdmUuCgkoc3RydWN0IGluc25faW5mbyk6IFJlbW92ZSBjb21tZW50ZWQgb3V0IGluc24gZmllbGQuCgkqIGRmLmM6IFVwZGF0ZSBjb21tZW50cywgdGlkeSBmb3JtYXR0aW5nLgoJKGRmX2RlZl90YWJsZV9yZWFsbG9jKTogUmVtb3ZlLgoKCjIwMDMtMDEtMjYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjYWxscy5jIChzYXZlX2ZpeGVkX2FyZ3VtZW50X2FyZWEpOiBUaWR5LgoJKHJlc3RvcmVfZml4ZWRfYXJndW1lbnRfYXJlYSk6IFRpZHkuICBTZXQgYWxpZ25tZW50IG9mIHN0YWNrX2FyZWEuCgkoZXhwYW5kX2NhbGwpOiBDb21tZW50IHR5cG8gZml4ZXMuICBEb24ndCBpbml0IGxvd190b19zYXZlLiAgU3RhcnQKCWNhbGwgY2hhaW4gbG9vcCBhdCAxIGlmICF0cnlfdGFpbF9jYWxsLiAgRm9ybWF0dGluZy4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogRG9uJ3QgaW5pdCBsb3dfdG9fc2F2ZSBvciBoaWdoX3RvX3NhdmUuCglVc2Ugc2F2ZV9maXhlZF9hcmd1bWVudF9hcmVhIGFuZCByZXN0b3JlX2ZpeGVkX2FyZ3VtZW50X2FyZWEuCgoyMDAzLTAxLTI2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBkZi5jIChkZl91c2VzX3JlY29yZCk6IEhhbmRsZSBDQzAuCgoyMDAzLTAxLTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiByZWxvYWQuYyAobWF5YmVfbWVtb3J5X2FkZHJlc3NfcCk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX3JlbG9hZHNfYWRkcmVzcyk6IFVzZSBpdCBpbnN0ZWFkIG9mIG1lbW9yeV9hZGRyZXNzX3AuCgoyMDAzLTAxLTI1ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGZpbmFsLmMgKHNob3J0ZW5fYnJhbmNoZXMpOiBBbGlnbiB0aGUgYWRkcmVzcyBvZiBjb2RlIGxhYmVsCgl3aGVuIGNvbXB1dGluZyBpbml0aWFsIGxlbmd0aHMgYW5kIGFkZHJlc3Nlcy4KCjIwMDMtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDAzLTAxLTI1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl9vdXRwdXRfbWlfdGh1bmspOiBDb3JyZWN0IHRlc3QgZm9yCglUQVJHRVRfTUFDSE8uCgoyMDAzLTAxLTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGdjc2UuYyAoYnlwYXNzX2xhc3RfYmFzaWNfYmxvY2spOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGJ5cGFzc19ibG9jayk6ICBVc2UgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlIHRvIHJlZGlyZWN0CglmYWxsLXRocm91Z2ggZWRnZXMuICBVc2UgYnlwYXNzX2xhc3RfYmFzaWNfYmxvY2sgdG8gZGV0ZXJtaW5lCgl3aGljaCBibG9ja3MgaGF2ZSB2YWxpZCBQUkUgaW5mb3JtYXRpb24uCgkoYnlwYXNzX2NvbmRpdGlvbmFsX2p1bXBzKTogSW5pdGlhbGl6ZSBieXBhc3NfbGFzdF9iYXNpY19ibG9jay4KCjIwMDMtMDEtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdjc2UuYyAobG9jYWxfY3Byb3BfcGFzcyk6IFVwZGF0ZSByZWdfc2V0cyB0YWJsZSB3aGVuIG5lZWRlZC4KCjIwMDMtMDEtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KICAgICAgICAgICAgRXJpYyBCb3RjYXpvdSA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdC84NDkyCgkqIGdjc2UuYyAob25lX2Nwcm9wX3Bhc3MpOiBEZWxldGUgdW5yZWFjaGFibGUgYmxvY2tzLgoKMjAwMy0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9yd3JlbG9jX3NlbGVjdF9ydHhfc2VjdGlvbik6IFJlbmFtZQoJZnJvbSBpYTY0X2FpeF9zZWxlY3RfcnR4X3NlY3Rpb24uCgkoaWE2NF9yd3JlbG9jX3NlbGVjdF9zZWN0aW9uKTogU2ltbGFybHk7IHVzZSBkZWZhdWx0Kl8xIGZ1bmN0aW9uCglpbnN0ZWFkIG9mIHNhdmluZyBhbmQgcmVzdG9yaW5nIGZsYWdfcGljLgoJKGlhNjRfcndyZWxvY191bmlxdWVfc2VjdGlvbik6IFNpbWlsYXJseS4KCSogY29uZmlnL2lhNjQvYWl4LmggKFRBUkdFVF9BU01fU0VMRUNUX1NFQ1RJT04sCglUQVJHRVRfQVNNX1VOSVFVRV9TRUNUSU9OLCBUQVJHRVRfQVNNX1NFTEVDVF9SVFhfU0VDVElPTik6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaHB1eC5oIChUQVJHRVRfQVNNX1NFTEVDVF9TRUNUSU9OLAoJVEFSR0VUX0FTTV9VTklRVUVfU0VDVElPTiwgVEFSR0VUX0FTTV9TRUxFQ1RfUlRYX1NFQ1RJT04pOiBOZXcuCgoyMDAzLTAxLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX3NoaWZ0X25lZWRzX3NjcmF0Y2hfcCk6IFVwZGF0ZSBhCgljb21tZW50LgoKMjAwMy0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oIChBU01fU1BFQyk6IEFkanVzdCBpbnRlci1vcHRpb24gc3BhY2luZy4KCjIwMDMtMDEtMjUgIEtlbGxleSBDb29rIDxrZWxsZXljb29rQGNvbWNhc3QubmV0PgoKCSogZ2djLXNpbXBsZS5jIChkZWJ1Z19nZ2NfdHJlZSk6IEFkZCBQVFIgY2FzdC4KCjIwMDMtMDEtMjUgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPHNlZ2hlckBrb2ZmaWUubmw+CgoJKiBiaXRtYXAuaCAoQklUTUFQX1dPUkQpOiBOZXcgdHlwZWRlZjogZnVuZGFtZW50YWwgc3RvcmFnZQoJdHlwZSBmb3IgYml0bWFwcy4gIFVzZSB1bnNpZ25lZCBsb25nLgoJKG5CSVRNQVBfV09SRF9CSVRTKTogTmV3IG1hY3JvLgoJKEJJVE1BUF9XT1JEX0JJVFMpOiBOZXcgbWFjcm8uCgkocmVzdCBvZiBmaWxlKTogVXNlIGl0LgoJKiBiaXRtYXAuYzogVXNlIGl0LgoKMjAwMy0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkyMDAyLTAyLTE5ICBSb2JlcnQgTGlwZSAgPHJvYmVydGxpcGVAdXNhLm5ldD4KCSogY29uZmlnL2kzODYvdC1zY281Z2FzOiAoQ1JUU1RVRkZfVF9DRkxBR1NfUyk6IERlbGV0ZSAtbWNvZmYuCgoyMDAzLTAxLTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKHB1cmdlX2J1aWx0aW5fY29uc3RhbnRfcCk6IFNjYW4gaW5zbiBzdHJlYW0KCXNlcXVlbnRpYWxseSByYXRoZXIgdGhhbiBieSBiYXNpYyBibG9jay4KCSogZnVuY3Rpb24uYyAocHVyZ2VfYWRkcmVzc29mKTogU2ltcGxpZnkgdGVzdCB3aXRoIElOU05fUC4KCjIwMDMtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24sIGNhc2UgQU5EKTogUmVtb3ZlIGEgcmVkdW5kYW50IHRlc3QuCgoyMDAzLTAxLTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IE5ldyBmaWVsZCBjYWxsc19jb25zdGFudF9wLgoJKGN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfY29uc3RhbnRfcCk6IE5ldyBtYWNybyBmb3IgYWJvdmUuCgkqIGZ1bmN0aW9uLmMgKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQpOiBJbml0aWFsaXplIGNhbGxzX2VoX3JldHVybgoJYW5kIGNhbGxzX2NvbnN0YW50X3AuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2NvbnN0YW50X3ApOiBTZXQgY2FsbHNfY29uc3RhbnRfcC4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBPbmx5IGNhbGwgcHVyZ2VfYnVpbHRpbl9jb25zdGFudF9wCgl3aGVuIHRoZSBjdXJyZW50X2Z1bmN0aW9uX2NhbGxzX2NvbnN0YW50X3AuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogU2V0IGNhbGxzX2NvbnN0YW50X3AgaWYKCXRoZSBmdW5jdGlvbiBiZWluZyBpbmxpbmVkIGhhcyBjYWxsc19jb25zdGFudF9wIHNldC4KCjIwMDMtMDEtMjUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY3NlLmMgKGZvbGRfcnR4KTogSW5zdGFudGlhdGUgQ09OU1RBTlRfUF9SVFggdG8gMCB3aGVuIG5vdAoJb3B0aW1pemluZywgZXZlbiBpZiBmbGFnX2djc2UgaXMgdHJ1ZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBwdXJnZV9idWlsdGluX2NvbnN0YW50X3AKCW9ubHkgbmVlZHMgdG8gYmUgY2FsbGVkIHdoZW4gIm9wdGltaXplID4gMCAmJiBmbGFnX2djc2UiLgoKMjAwMy0wMS0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzdG10LmMgKGVtaXRfY2FzZV9iaXRfdGVzdHMpOiBOZXcgcm91dGluZSB0byBpbXBsZW1lbnQgc3VpdGFibGUKCXN3aXRjaCBzdGF0ZW1lbnRzIHVzaW5nIHRoZSBlcXVpdmFsZW50IG9mICJpZiAoKDE8PHgpICYgY3N0KSAuLi4gIi4KCShjYXNlX2JpdF90ZXN0X2NtcCk6IE5ldyBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciAicXNvcnQiIHRvIG9yZGVyCgljYXNlX2JpdF90ZXN0cyBieSBkZWNyZWFzaW5nIG51bWJlciBvZiBkZXN0aW5hdGlvbiBub2Rlcy4KCShsc2hpZnRfY2hlYXBfcCk6IE5ldyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgIjEgPDwgeCIgaXMgY2hlYXAuCgkoZXhwYW5kX2VuZF9jYXNlX3R5cGUpOiBVc2UgZW1pdF9jYXNlX2JpdF90ZXN0cyB0byBpbXBsZW1lbnQKCXN1aXRhYmxlIHN3aXRjaCBzdGF0bWVudHMuCgkoQ0FTRV9VU0VfQklUX1RFU1RTKTogTmV3IHRhcmdldCBtYWNybyB0byBkaXNhYmxlIHRoZSBhYm92ZS4KCSogTWFrZWZpbGUuaW4gKHN0bXQubyk6IEFkZCBkZXBlbmRlbmN5IG9uIG9wdGFiLmguCgkqIGRvYy90bS50ZXhpIChDQVNFX1VTRV9CSVRfVEVTVFMpOiBEb2N1bWVudCBuZXcgdGFyZ2V0IG1hY3JvLgoKMjAwMy0wMS0yMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gW0hBVkVfSU5JVEZJTklfQVJSQVldOiBNYWtlCglfX2RvX2dsb2JhbF9jdG9yc19hdXggaGlkZGVuIGdsb2JhbCBhbmQgZG9uJ3QgcHV0IGl0IGluCgkuaW5pdF9hcnJheS4KCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtIFtIQVZFX0lOSVRGSU5JX0FSUkFZXTogUHV0IGl0IGhlcmUKCWluc3RlYWQgc28gdGhhdCBpdCBjb21lcyBmaXJzdC4KCjIwMDMtMDEtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGRmLmMgKHJlYWRfbW9kaWZ5X3N1YnJlZ19wKTogIFdoZW4gb3NpemUgPT0gVU5JVFNfUEVSX1dPUkQsCglzdWJyZWcgaXMgcmVhZC9tb2RpZnkuCgoyMDAzLTAxLTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX21vdnN0ciwgaXg4Nl9leHBhbmRfY2xyc3RyKTogQ29uc2lzdGVudGx5CglkbyBsaWJjYWxsIGZvciBsYXJnZSBibG9ja3MuCgkqIGkzODYubWQgKGNvbWkgcGF0dGVybnMpOiBTZXQgdHlwZSB0byBzc2Vjb21pLgoJKHNzZTJfdW5wY2s/cGQpOiBGaXggbW9kZSBvZiB2ZWNfc2VsZWN0LgoKCSogY3NlLmM6IEluY2x1ZGUgZXhjZXB0LmgKCShjc2Vfc2V0X2Fyb3VuZF9sb29wKTogIERvIG5vdCBjcmVhdGUgbmV3IGJhc2ljIGJsb2Nrcy4KCSogTWFrZWZpbGUuaW4gKGNzZS5vKTogQWRkIGRlcGVuZG5lY3kgb24gZXhjZXB0LmgKCjIwMDMtMDEtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfdHJ1bmNfdHJhbnNwYXJlbnRfbWF0aGZuKTogTmV3IGZ1bmN0aW9uLgoJKGZvbGRfYnVpbHRpbik6IFVzZSBpdC4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX3JlYWwpOiBSZS1lbmFibGUgY29kZSB0byBjb252ZXJ0CgltYXRoIGZ1bmN0aW9uczsgYWRkIHN1cHBvcnQgZm9yIGZsb29yIGZhbWlsbHkgZnVuY3Rpb25zLgoKMjAwMy0wMS0yNSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogTWFrZWZpbGUuaW4gKGNmZ2xvb3AubywgY2ZnbG9vcGFuYWwubywgY2ZnbG9vcG1hbmlwLm8pOiBBZGQKCWRlcGVuZGVuY2llcyBvbiBjb3JldHlwZXMuaCBhbmQgJChUTV9IKS4KCjIwMDMtMDEtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfdHJ1bmNfdHJhbnNwYXJlbnRfbWF0aGZuKTogIFVuZG8gYWNjaWRlbnRhbCBjb21taXQuCgoyMDAzLTAxLTI0ICBTdHVhcnQgSGFzdGluZ3MgIDxzdHVhcnRAYXBwbGUuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfb3V0cHV0X21pX3RodW5rKTogQWRkIERhcndpbi94ODYgc3VwcG9ydC4KCjIwMDMtMDEtMjUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChVTlNQRUNfQlUpOiBOZXcgY29uc3RhbnRzLgoJKFVOU1BFQ19SUFRTLCBVTlNQRUNfTFNILCBVTlNQRUNfQ01QSEksIFVOU1BFQ19SQ1BGKTogTGlrZXdpc2UuCgkoVU5TUEVDX1JORCwgVU5TUEVDX1JQVEJfRklMTCwgVU5TUEVDX0xPQURIRl9JTlQpOiBMaWtld2lzZS4KCShVTlNQRUNfU1RPUkVIRl9JTlQsIFVOU1BFQ19SU1FSRiwgVU5TUEVDX0xPQURRRl9JTlQpOiBMaWtld2lzZS4KCShVTlNQRUNfU1RPUkVRRl9JTlQsIFVOU1BFQ19MRElWLCBVTlNQRUNfUFVTSF9TVCk6ICBMaWtld2lzZS4KCShVTlNQRUNfUE9QX1NULCBVTlNQRUNfUFVTSF9EUCwgVU5TUEVDX1BPUF9EUCk6ICBMaWtld2lzZS4KCShVTlNQRUNfUE9QUUksIFVOU1BFQ19QT1BRRiwgVU5TUEVDX0FORE5fU1QpOiAgTGlrZXdpc2UuCgkoVU5TUEVDX1JQVEJfSU5JVCwgVU5TUEVDX1RPSUVFRSwgVU5TUEVDX0ZSSUVFRSk6ICBMaWtld2lzZS4KCjIwMDMtMDEtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGVtaXQtcnRsLmMgKHJlZ19hdHRyc19odGFiKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShyZWdfYXR0cnNfaHRhYl9oYXNoLCByZWdfYXR0cnNfaHRhYl9lcSwgZ2V0X3JlZ19hdHRycyk6IE5ldyBzdGF0aWMKCWZ1bmN0aW9ucy4KCShyZWdfcnR4KTogRG8gbm90IG1haW50YWluIHJlZ25vX2RlY2wuCgkoZ2VuX3J0eF9SRUdfb2Zmc2V0LCBzZXRfcmVnX2F0dHJzX2Zyb21fbWVtLCBzZXRfZGVsY19ydHgsCglzZXRfbWVtX2F0dHJzX2Zyb21fcmVnKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCShpbml0X2VtaXQpOiBEbyBub3QgaW5pdGlhbGl6ZSByZWdub19kZWNsLgoJKGluaXRfZW1pdF9vbmNlKTogaW5pdGlhbGl6ZSByZWdfYXR0cnNfaHRhYi4KCSogZmluYWwuYyAoYWx0ZXJfc3VicmVnKTogRG8gbm90IHJlcGxhY2UgUkVHIGJ5IFNVQlJFRy4KCShnZW5fbWVtX2V4cHJfZnJvbV9vcCk6IEltcHJvdmUgb3V0cHV0LgoJKG91dHB1dF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3BhcmFtcyk6IERvIG5vdCBzZXQgUkVHTk9fREVDTC4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogS2lsbCByZWdub19kZWNsLgoJKFJFR05PX0RFQ0wpOiBLaWxsLgoJKiBnZW5ndHlwZS5jIChhZGp1c3RfZmllbGRfcnR4X2RlZik6IEhhbmRsZSBuZXcgZmllbGQgb2YgcmVnLgoJKiBwcmludF9ydGwuYyAocHJpbnRfcnR4KTogT3V0cHV0IFJFRyBpbmZvcm1hdGlvbi4KCSogcmVnY2xhc3MuYyAocmVnX3NjYW5fbWFya19yZWZzKTogVXBkYXRlIGF0dHJzLgoJKiByZWxvYWQxLmMgKGFsdGVyX3JlZyk6IExpa2V3aXNlLgoJKiBzaW1wbGlmeV9ydHguYyAoc2ltcGxpZnlfc3VicmVnKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBMaWtld2lzZS4KCSogcnRsLmRlZiAoUkVHKTogQWRkIG5ldyBmaWVsZC4KCSogcnRsLmggKHN0cnVjdCByZWdfYXR0cnMpOiBOZXcuCgkocnR1bmlvbl9kZWYpOiBBdCBydHJlZy4KCShYME1FTUFUVFIpOiBBZGQgY2hlY2tpbmcuCgkoWDBSRUdBVFRSLCBSRUdfQVRUUlMsIFJFR19FWFBSLCBSRUdfT0ZGU0VUKTogTmV3IG1hY3JvLgoJKHNldF9yZWdfYXR0cnNfZnJvbV9tZW0sIHNldF9tZW1fYXR0cnNfZnJvbV9yZWcsIGdlbl9ydHhfUkVHX29mZnNldCk6CglEZWNsYXJlLgoJKiB0cmVlLmggKFNFVF9ERUNMX1JUTCk6IENhbGwgc2V0X2RlY2xfcnRsLgoKMjAwMy0wMS0yNCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmM6IFJlbW92ZSB1bnVzZWQgaW5jbHVkZSBvZiBtYWNobW9kZS5oLgoJKHh0ZW5zYV9lbWl0X2NhbGwsIHByaW50X29wZXJhbmQpOiBGaXggcHJpbnRmIGZvcm1hdCBzdHJpbmdzCgl0byBhdm9pZCBjb21waWxlIHdhcm5pbmdzLgoJKHh0ZW5zYV9mdW5jdGlvbl9wcm9sb2d1ZSwgeHRlbnNhX2Z1bmN0aW9uX2VwaWxvZ3VlKTogQ2hhbmdlIHR5cGUKCW9mICJzaXplIiBhcmd1bWVudCB0byBIT1NUX1dJREVfSU5UIHRvIGZpeCBjb21waWxlIHdhcm5pbmdzLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaAoJKHh0ZW5zYV9mdW5jdGlvbl9wcm9sb2d1ZSwgeHRlbnNhX2Z1bmN0aW9uX2VwaWxvZ3VlKTogRGl0dG8uCgoyMDAzLTAxLTI0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBidWlsdGlucy5jIChERUZfQlVJTFRJTik6IEFjY2VwdCAxMCBhcmd1bWVudHMuCgkoaW1wbGljaXRfYnVpbHRfaW5fZGVjbHMpOiBOZXcgZ2xvYmFsIGFycmF5LgoJKG1hdGhmbl9idWlsdF9pbik6IE5ldyBnbG9iYWwgZnVuY3Rpb24uCgkoZm9sZF90cnVuY190cmFuc3BhcmVudF9tYXRoZm4pOiBOZXcgc3RhdGljIGZ1bmN0aW9uCgkoZXhwYW5kX2J1aWx0aW5fc3Ryc3RyLCBleHBhbmRfYnVsdGluX3N0cmNociwKCWV4cGFuZF9idWlsdGluX3N0cnBicmssIGV4cGFuZF9idWlsdGluX3N0cmNweSwKCWV4cGFuZF9idWlsdGluX3N0cm5jcHksIGV4cGFuZF9idWx0aW5fc3RyY21wLAoJZXhwYW5kX2J1bHRpbl9zdHJuY2F0LCBleHBhbmRfYnVpbHRpbl9mcHV0cyk6IFVzZQoJaW1wbGljaW50X2J1aWx0X2luX2RlY2xzLgoJKGZvbGRfYnVpbHRpbik6IEZvbGQgZmxvb3IvdHJ1bmMvcm91bmQvY2VpbC9uZWFyYnlpbnQuCgkqIGJ1aWx0aW5zLmRlZjogRml4IGNvbW1lbnRzLgoJKERFRl9HQ0NfQlVJTFRJTiwgREVGX0ZBTExCQUNLX0JVSUxUSU4sIERFRl9FWFRfRkFMTEJBQ0tfQlVJTFRJTiwKCURFRl9MSUJfQlVJTFRJTiwgREVGX0xJQl9BTFdBWVNfQlVJTFRJTiwgREVGX0VYVF9MSUJfQlVJTFRJTiwKCURFRl9DOTlfQlVMVElOLCBERUZfRlJPTlRfRU5EX0xJQl9CVUlMVElOLAoJREVGX0VYVF9GUk9OVF9FTkRfTElCX0JVSUxUSU4pOiBQYXNzIGltcGxpY2l0IGFzIG5lZWRlZC4KCShERUZfQzk5X0M5MFJFU19CVUxUSU4pOiBOZXcuCgkoKmYsICpsIGJ1aWx0aW5zKTogVXBkYXRlLgoJKiBjLWNvbW1vbi5jIChERUZfQlVJTFRJTik6IEluaXRpYWxpemUgaW1wbGljaXQgYXJyYXkuCgkoY19leHBhbmRfYnVpbHRpbl9wcmludGYsIGNfZXhwYW5kX2J1aWx0aW5fZnByaW50Zik6IFVwZGF0ZS4KCSogY29udmVydC5jIChzdHJpcF9mbG9hdF9leHRlbnNpb25zKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCSogdHJlZS5oIChERUZfQlVJTFRJTik6IEFjY2VwdCAxMCBhcmd1bWVudHMuCgkoaW1wbGljaXRfYnVpbHRfaW5fZGVjbHMsIG1hdGhmbl9idWlsdF9pbiwgc3RyaXBfZmxvYXRfZXh0ZW5zaW9uKToKCURlY2xhcmUuCgkqIGphdmEvYnVpbHRpbnMuYyAoZGVmaW5lX2J1aWx0aW4pOiBIYW5kbGUgaW1wbGljaXQuCgkoREVGX0JVSUxUSU4pOiBVcGRhdGUuCgkqIHRtLnRleGkgKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogRG9jdW1lbnQuCgkqIGRlZmF1bHRzLmggKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogRGVmYXVsdCB0byAwLgoJKiBjb25maWcvbGludXguaCAoVEFSR0VUX0M5OV9GVU5DVElPTlMpOiBEZWZhdWx0IHRvIDEKCXdoZW4gdXNpbmcgZ2xpYmMyLgoKMjAwMy0wMS0yNCAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy5nY2MgKHh0ZW5zYS0qLWVsZiopOiBSZW1vdmVkIGFzc2lnbm1lbnRzIHRvIHdpdGhfbmV3bGliLAoJZXh0cmFfcGFydHMsIGFuZCBmaXhpbmNsdWRlcy4gIEFkZCB4dGVuc2EvdC1lbGYgdG1ha2VfZmlsZS4KCSh4dGVuc2EtKi1saW51eCopOiBBZGQgeHRlbnNhL3QtbGludXggdG1ha2VfZmlsZS4KCSogY29uZmlnL3h0ZW5zYS9jcnRpLmFzbTogTmV3IGZpbGUuCgkqIGNvbmZpZy94dGVuc2EvY3J0bi5hc206IE5ldyBmaWxlLgoJKiBjb25maWcveHRlbnNhL3QtZWxmOiBOZXcgZmlsZS4KCSogY29uZmlnL3h0ZW5zYS90LWxpbnV4OiBOZXcgZmlsZS4KCSogY29uZmlnL3h0ZW5zYS90LXh0ZW5zYTogQWRkIHJ1bGVzIGZvciBjcnRpLm8gYW5kIGNydG4uby4KCU1vdmUgdmFyaW91cyBDRkxBR1Mgc2V0dGluZ3MgdG8gbmV3IHQtZWxmIGZpbGUuCgoyMDAzLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG9wdGltaXphdGlvbi80MzgyCgkqIHRyZWUtaW5saW5lLmMgKGZpbmRfYnVpbHRpbl9sb25nam1wX2NhbGxfMSk6IE5ldy4KCShmaW5kX2J1aWx0aW5fbG9uZ2ptcF9jYWxsKTogTmV3LgoJKGlubGluYWJsZV9mdW5jdGlvbl9wKTogVXNlIGl0LgoKMjAwMy0wMS0yNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogRGVjbGFyZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBVc2UgaXQuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogTmV3LgoJKGl4ODZfdmFfYXJnKTogU3VwcG9ydCBhcmd1bWVudHMgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KCjIwMDMtMDEtMjQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZ2xvb3BhbmFsLmM6IE5ldyBmaWxlLgoJKiBjZmdsb29wbWFuaXAuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChjZmdsb29wYW5hbC5vLCBjZmdsb29wbWFuaXAubyk6IE5ldy4KCSh0b3BsZXYubywgbG9vcC5vLCBkb2xvb3AubywgdW5yb2xsLm8sIGNmZ2xvb3AubywgcHJlZGljdC5vLAoJY2ZnbGF5b3V0Lm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBjZmdsb29wLmguCgkoY2ZnbG9vcC5vKTogQWRkIGZsYWdzLmggZGVwZW5kZW5jeS4KCSogYmFzaWMtYmxvY2suaCAoQkJfSVJSRURVQ0lCTEVfTE9PUCwgQkJfU1VQRVJCTE9DSyk6IE5ldyBmbGFncy4KCShWTFNfRVhQRUNUX1BSRUhFQURFUlMsIFZMU19FWFBFQ1RfU0lNUExFX0xBVENIRVMpOiBSZW1vdmVkLgoJKHN0cnVjdCBsb29wLCBzdHJ1Y3QgbG9vcHMsIGZsb3dfbG9vcHNfZmluZCwgZmxvd19sb29wc191cGRhdGUsCglmbG93X2xvb3BzX2ZyZWUsIGZsb3dfbG9vcHNfZHVtcCwgZmxvd19sb29wX2R1bXAsCglmbG93X2xvb3Bfc2NhbiwgZmxvd19sb29wX3RyZWVfbm9kZV9hZGQsIGZsb3dfbG9vcF90cmVlX25vZGVfcmVtb3ZlLAoJTE9PUF9UUkVFLCxMT09QX1BSRV9IRUFERVIsIExPT1BfRU5UUllfRURHRVMsIExPT1BfRVhJVF9FREdFUywKCUxPT1BfQUxMLCBmbG93X2xvb3Bfb3V0c2lkZV9lZGdlX3AsIGZsb3dfbG9vcF9uZXN0ZWRfcCwKCWZsb3dfYmJfaW5zaWRlX2xvb3BfcCwgZ2V0X2xvb3BfYm9keSwgbG9vcF9wcmVoZWFkZXJfZWRnZSwKCWxvb3BfbGF0Y2hfZWRnZSwgYWRkX2JiX3RvX2xvb3AsIHJlbW92ZV9iYl9mcm9tX2xvb3BzLAoJZmluZF9jb21tb25fbG9vcCwgdmVyaWZ5X2xvb3Bfc3RydWN0dXJlKTogRGVjbGFyYXRpb25zIG1vdmVkIHRvIC4uLgoJKiBjZmdsb29wLmg6IE5ldyBmaWxlLgoJKiBiYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogTW9kaWZpZWQuCgkqIGNmZ2xheW91dC5jOiBJbmNsdWRlIGNmZ2xvb3AuaC4KCShjbGVhbnVwX3VuY29uZGl0aW9uYWxfanVtcHMsIGNmZ19sYXlvdXRfcmVkaXJlY3RfZWRnZSwKCWNmZ19sYXlvdXRfZHVwbGljYXRlX2JiLCBjZmdfbGF5b3V0X2luaXRpYWxpemUpOiBVcGRhdGUgbG9vcCBzdHJ1Y3R1cmUuCgkoYnJlYWtfc3VwZXJibG9ja3MpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGNmZ19sYXlvdXRfZmluYWxpemUpOiBVc2UgaXQuCgkoY2ZnX2xheW91dF9zcGxpdF9ibG9jayk6IE5ldyBmdW5jdGlvbi4KCSogY2ZnbGF5b3V0LmggKHN0cnVjdCByZW9yZGVyX2Jsb2NrX2RlZik6IEFkZCBjb3B5IGFuZCBkdXBsaWNhdGVkCglmaWVsZHMuCgkoY2ZnX2xheW91dF9pbml0aWFsaXplLCBjZmdfbGF5b3V0X3JlZGlyZWN0X2VkZ2UpOiBEZWNsYXJhdGlvbgoJY2hhbmdlZC4KCShjZmdfbGF5b3V0X3NwbGl0X2Jsb2NrKTogRGVjbGFyZS4KCSogY2ZnbG9vcC5jOiBJbmNsdWRlIGNmZ2xvb3AuaCBhbmQgZmxhZ3MuaC4KCShmbG93X2xvb3BfZHVtcCwgZmxvd19sb29wc19mcmVlLCBmbG93X2xvb3BfZXhpdF9lZGdlc19maW5kLAoJZ2V0X2xvb3BfYm9keSk6IEF2b2lkIHNpZ25lZCB2ZXJzdXMgdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCShtYWtlX2ZvcndhcmRlcl9ibG9jaywgZmxvd19sb29wc19maW5kLCBsb29wX3ByZWhlYWRlcl9lZGdlLAoJbG9vcF9sYXRjaF9lZGdlKTogTW9kaWZpZWQuCgkodmVyaWZ5X2xvb3Bfc3RydWN0dXJlKTogTW9kaWZpZWQgdG8gdXNlIGZsYWdzIHN0b3JlZCBpbiBsb29wIHN0cnVjdHVyZTsKCWNoZWNrIGlycmVkdWNpYmxlIGxvb3BzLgoJKGNhbmNlbF9sb29wLCBjYW5jZWxfbG9vcF90cmVlKTogTmV3IGZ1bmN0aW9ucy4KCShlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IFVzZSBsb29wIGFuYWx5c2lzIGNvZGUgZm9yIHByZWRpY3Rpb25zLgoJKGVzdGltYXRlX2xvb3BzX2F0X2xldmVsKTogIEF2b2lkIHNpZ25lZCB2ZXJzdXMgdW5zaWduZWQgY29tcGFyaXNvbgoJd2FybmluZ3MuCgkqIGRvbG9vcC5jOiBJbmNsdWRlIGNmZ2xvb3AuaC4KCSogbG9vcC5jOiBJbmNsdWRlIGNmZ2xvb3AuaC4KCSogcHJlZGljdC5jOiBJbmNsdWRlIGNmZ2xvb3AuaC4KCSogdG9wbGV2LmM6IEluY2x1ZGUgY2ZnbG9vcC5oLgoJKiB1bnJvbGwuYzogSW5jbHVkZSBjZmdsb29wLmguCgkqIHRyYWNlci5jICh0cmFjZXIpOiBNb2RpZmllZC4KCjIwMDMtMDEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoZ2V0X3NoaWZ0X2FsZyk6IEZpeCBhIHR5cG8uCgoyMDAzLTAxLTI0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWd1cmUuaW4gKEhBVkVfQVNfVExTKTogQWRkIHMzOTAtKi0qIGFuZCBzMzkweC0qLSogY2FzZXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHRsc19zeW1ib2xpY19vcGVyYW5kKTogQWRkIHByb3RvdHlwZS4KCSh0bHNfc3ltYm9saWNfcmVmZXJlbmNlX21lbnRpb25lZF9wKTogQWRkIHByb3RvdHlwZS4KCShzMzkwX3Rsc19nZXRfb2Zmc2V0KTogQWRkIHByb3RvdHlwZS4KCShlbWl0X3BpY19tb3ZlKTogUmVtb3ZlIHByb3RvdHlwZSwgcmVwbGFjZSBieSAuLi4KCShlbWl0X3N5bWJvbGljX21vdmUpOiAuLiB0aGlzIG5ldyBwcm90b3R5cGUuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKFRBUkdFVF9IQVZFX1RMUyk6IENvbmRpdGlvbmFsbHkgZGVmaW5lLgoJKHRsc19tb2RlbF9jaGFycyk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoczM5MF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRW5jb2RlIFRMUyBtb2RlbC4KCVVzZSB0YXJnZXRtLmJpbmRzX2xvY2FsX3AgdG8gY2hlY2sgZm9yIGxvY2FsIHN5bWJvbHMuCgkoczM5MF9zdHJpcF9uYW1lX2VuY29kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9TVFJJUF9OQU1FX0VOQ09ESU5HKTogRGVmaW5lLgoKCShnZXRfdGhyZWFkX3BvaW50ZXIpOiBOZXcgZnVuY3Rpb24uCgkobGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbi4KCShsZWdpdGltaXplX2FkZHJlc3MpOiBDYWxsIGl0LgoJKGVtaXRfcGljX21vdmUpOiBSZW1vdmUsIHJlcGxhY2UgYnkgLi4uCgkoZW1pdF9zeW1ib2xpY19tb3ZlKTogLi4uIHRoaXMgbmV3IGZ1bmN0aW9uLgoKCShsYXJsX29wZXJhbmQpOiBIYW5kbGUgVExTIG9wZXJhbmRzLgoJKGxlZ2l0aW1hdGVfY29uc3RhbnRfcCk6IExpa2V3aXNlLgoJKHMzOTBfZGVjb21wb3NlX2FkZHJlc3MpOiBMaWtld2lzZS4KCShzMzkwX2Nhbm5vdF9mb3JjZV9jb25zdF9tZW0pOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX0NBTk5PVF9GT1JDRV9DT05TVF9NRU0pOiBEZWZpbmUuCgoJKHMzOTBfb3V0cHV0X3N5bWJvbGljX2NvbnN0KTogSGFuZGxlIFRMUyB1bnNwZWNzLgoJKHByaW50X29wZXJhbmQpOiBOZXcgY29kZSAnSicuCgkobWFjaGluZV9mdW5jdGlvbik6IEFkZCBzdHJ1Y3QgbWVtYmVyICdzb21lX2xkX25hbWUnLgoJKGdldF9zb21lX2xvY2FsX2R5bmFtaWNfbmFtZSwgZ2V0X3NvbWVfbG9jYWxfZHluYW1pY19uYW1lXzEpOiBOZXcuCgoJKGVudW0gczM5MF9idWlsdGluKTogTmV3IHR5cGUuCgkoY29kZV9mb3JfYnVpbHRpbl82NCwgY29kZV9mb3JfYnVpbHRpbl8zMSk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKHMzOTBfaW5pdF9idWlsdGlucywgczM5MF9leHBhbmRfYnVpbHRpbik6IE5ldyBmdW5jdGlvbnMuCgkoVEFSR0VUX0lOSVRfQlVJTFRJTlMsIFRBUkdFVF9FWFBBTkRfQlVJTFRJTik6IERlZmluZS4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoVExTX1NZTUJPTElDX0NPTlNUKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBEZWZpbmUuCgkoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUlkpOiBIYW5kbGUgVExTIGNvbnN0YW50cy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQ6IERlZmluZSBUTFMgVU5TUEVDIGNvbnN0YW50cy4KCSgibW92ZGkiLCAibW92c2kiKTogSGFuZGxlIFRMUyBvcGVyYW5kcy4KCSgiZ2V0X3RwXzY0IiwgImdldF90cF8zMSIsICJzZXRfdHBfNjQiLCAic2V0X3RwXzMxIik6IE5ldyBpbnNucy4KCSgiKnRsc19sb2FkXzY0IiwgIip0bHNfbG9hZF8zMSIpOiBOZXcgaW5zbnMuCgkoImNhbGxfdmFsdWVfdGxzIiwgImNhbGxfdmFsdWVfdGxzX2V4cCIpOiBOZXcgZXhwYW5kZXJzLgoJKCJicmFzbF90bHMiLCAiYnJhc190bHMiLCAiYmFzcl90bHNfNjQiLCAiYmFzcl90bHNfMzEiLAoJImJhc190bHNfNjQiLCAiYmFzX3Rsc18zMSIpOiBOZXcgaW5zbnMuCgoyMDAzLTAxLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3BhcnNlX2FiaV9vcHRpb25zKTogTWFrZSBzdXJlCglzcGUgQUJJIGlzIGNvbmZpZ3VyZWQsIGlmIHJlcXVlc3RlZC4KCjIwMDMtMDEtMjQgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBkb2MvcGFzc2VzLnRleGk6IEZpeCB0eXBvLgoKMjAwMy0wMS0yNCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIHN0b3ItbGF5b3V0LmMgKGV4Y2Vzc191bml0X3NwYW4pOiBPbmx5IGRlZmluZSBpZiB1c2VkLgoKMjAwMy0wMS0yNCAgSmVycnkgUXVpbm4gIDxqbHF1aW5uQG9wdG9ubGluZS5uZXQ+CgoJKiBnY2MvZG9jL2ludm9rZS50ZXhpIChPcHRpbWl6YXRpb24gT3B0aW9ucyk6IExpc3QgLU8gbGV2ZWxzCglmb3IgZWFjaCBvcHRpbWl6YXRpb24gZmxhZy4KCjIwMDMtMDEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCphbmRzaTNfYXNoaWZ0X25fbG93ZXIpOiBOZXcuCgoyMDAzLTAxLTI0ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogZG9jL2J1Z3JlcG9ydC50ZXhpOiBVc2UgQGNvbW1hbmQgaW5zdGVhZCBvZiBAY29kZSBmb3IgY29tbWFuZHMuCgkqIGRvYy9jb2xsZWN0Mi50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2hlYWRlcmRpcnMudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9zdGFuZGFyZHMudGV4aTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3Ryb3VibGUudGV4aTogTGlrZXdpc2UuCgoyMDAzLTAxLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodXNlX3JldHVybl9pbnNuKTogRG8gbm90IHVzZSBhIHNpbmdsZSByZXR1cm4KCWluc3RydWN0aW9uIGZvciBpbnRlcnJ1cHQgaGFuZGVscnMgd2hpY2ggaGF2ZSB0byBjcmVhdGUgYSBzdGFjawoJZnJhbWUuCgkoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IERvIG5vdCBwcmUtYmlhcyB0aGUgcmV0dXJuIGFkZHJlc3Mgb2YKCWludGVycnVwdCBoYW5kbGVycyB3aGljaCBjcmVhdGUgYSBzdGFjayBmcmFtZS4KCjIwMDMtMDEtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBBZGQgc2gyZSBzdXBwb3J0OgoKCTIwMDItMDgtMTIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCQkqIGNvbmZpZy9zaC9zaC5jIChvdXRwdXRfYnJhbmNoKSBbVEFSR0VUX1NIMkVdOiBIYW5kbGUKCQltZWRfY2JyYW5jaGVzLiAgRml4IGxvZ2ljIGluIHNob3J0X2NicmFuY2hlcy4KCgkyMDAyLTA0LTAzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkJKiBjb25maWcvc2gvc2gubWQgKGRlbGF5IGZvciBjYnJhbmNoKTogRG9uJ3QgYW5udWwgZGVsYXkKCQlzbG90cyBvbiBTSDJlLgoJCSogY29uZmlnL3NoL3NoLmMgKHNoX2luc25fbGVuZ3RoX2FkanVzdG1lbnQpOiBBZGQgMiBmb3IKCQljYnJhbmNoIHdpdGggdW5maWxsZWQgZGVsYXkgc2xvdCBvbiBTSDJlLgoJCShvdXRwdXRfYnJhbmNoKTogRmlsbCB3aXRoIGEgbm9wIHRoZSBkZWxheSBzbG90IG9mIGEKCQlicmFuY2ggdGhhdCByZXF1aXJlZCBhIGRlbGF5IHNsb3QgYnV0IGRpZG4ndCBnZXQgb25lLgoKCTIwMDItMDQtMDIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCQkqIGRvYy9pbnZva2UudGV4aSAoU0ggb3B0aW9ucyk6IERvY3VtZW50IC1tMmUuCgkJKiBjb25maWcvc2gvY3J0MS5hc206IEFkZCBfX1NIMkVfXyBOZXh0IHRvIF9fU0gzRV9fLgoJCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc206IExpa2V3aXNlLgoJCSogY29uZmlnL3NoL3NoLmM6IFJlcGxhY2UgYWxsIHVzZXMgb2YgVEFSR0VUX1NIM0Ugd2l0aCBTSDJFLgoJCSogY29uZmlnL3NoL3NoLmggKENQUF9TUEVDKTogRGVmaW5lIF9fU0gyRV9fIGZvciAtbTJlLCBhbmQKCQlub3QgX19zaDFfXy4KCQkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEb24ndCBkaXNhYmxlIEZQIHJlZ3MgZnJvbQoJCVNIMkUgdXAuCgkJKFNIM0VfQklUKTogUmVuYW1lZCB0by4uLgoJCShTSF9FX0JJVCk6IC4uLiB0aGlzLiAgUmVwbGFjZSBhbGwgdXNlcy4KCQkoVEFSR0VUX1NIMkUpOiBEZWZpbmUgZnJvbSBTSF9FX0JJVCBhbmQgVEFSR0VUX1NIMi4KCQlSZXBsYWNlIGFsbCB1c2VzIG9mIFRBUkdFVF9TSDNFIHdpdGggVEFSR0VUX1NIMkUuCgkJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZGVkIDJlLgoJCShPVkVSUklERV9PUFRJT05TKTogU2V0IHNoX2NwdSBmb3IgU0gyRS4KCQkocHJvY2Vzc29yX3R5cGUpOiBBZGRlZCBQUk9DRVNTT1JfU0gyRS4KCQkqIGNvbmZpZy9zaC9zaC5tZDogUmVwbGFjZSBhbGwgdXNlcyBvZiBUQVJHRVRfU0gzRSB3aXRoCgkJVEFSR0VUX1NIMkUsIGV4Y2VwdCBpbiBzcXJ0c2YyX2kuCgkJKGF0dHJpYnV0ZSBjcHUpOiBBZGRlZCBzaDJlLgoJCSogY29uZmlnL3NoL3Qtc2ggKE1VTFRJTElCX09QVElPTlMpOiBSZXBsYWNlIG0zZSB3aXRoIG0yZS4KCQkoTVVMVElMSUJfTUFUQ0hFUyk6IFVzZSBtMmUgbXVsdGlsaWIgZm9yIG0zZS4KCQkqIGNvbmZpZy5nY2M6IEFkZCBzaDJlIHRhcmdldCBzdXBwb3J0LgoKMjAwMy0wMS0yNCAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCVJlbmFtZSAtVyB0byAtV2V4dHJhLgoJKiBjLWRlY2wuYzogIFVwZGF0ZSBjb21tZW50cy4KCSogYy10eXBlY2suYzogIExpa2V3aXNlLgoJKiBmbGFncy5oOiAgTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmM6ICBMaWtld2lzZS4KCSogc3RtdC5jOiAgTGlrZXdpc2UuCgkqIHRvcGxldi5jOiAgVXBkYXRlIGNvbW1lbnRzLgoJKFdfb3B0aW9ucyk6ICBBZGQgJ2V4dHJhJy4KCShkaXNwbGF5X2hlbHApOiAgUmVtb3ZlICctVycuCgkoZGVjb2RlX1dfb3B0aW9uKTogIFNwZWNpYWwgd2Fybl91bmluaXRpYWxpemVkIHRyZWF0bWVudCBpbiB0aGUgY2FzZQoJb2YgLVdleHRyYS4KCSogZG9jL2ludm9rZS50ZXhpOiAgVXBkYXRlIHdpdGggbmV3IGVudHJpZXMuCgoyMDAzLTAxLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogUmUtYWRkIGNoZWNrIHZzIFggYmVpbmcgY2hhbmdlZAoJaW4gbm8tZWxzZS1ibG9jayBjYXNlLiAgQWRkIGNvbW1lbnRhcnkuCgoyMDAzLTAxLTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW46IFJldmVydCBsYXN0IGNoYW5nZS4KCjIwMDMtMDEtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgaW5jbHVkZSBhbnNpZGVjbC5oIGluIHRjb25maWcuaC4KCSogZ2Nvdi1pby5oIChQQVJBTVMsIEFUVFJJQlVURV9VTlVTRUQpOiBEZWZpbmUgaWYgSU5fTElCR0NDMi4KCSogdW53aW5kLWR3Mi1mZGUuaCAobGFzdF9mZGUpOiBVc2UgX19hdHRyaWJ1dGVfXywgbm90CglBVFRSSUJVVEVfVU5VU0VELgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wMS0yMyAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCVBSIGphdmEvNjc0OAoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IERvbid0IGRlc3Ryb3kKCXJlZ3MtPm5pcC4gRml4IHJ0X3NpZ3JldHVybiBmcmFtZSBsYXlvdXQuIEFkZCBzdXBwb3J0IGZvciBuZXdlcgoJa2VybmVscy4KCjIwMDMtMDEtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwcGxleC5jIChjcHBfaW50ZXJwcmV0X2NoYXJjb25zdCk6IFNxdWVsY2ggd2FybmluZyB3aXRoIGNhc3QuCgoyMDAzLTAxLTIzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBnZW5hdHRydGFiLmMgKHdyaXRlX2F0dHJfZ2V0KTogTWFyayAnaW5zbicgcGFyYW10ZXIKCWFzIEFUVFJJQlVURV9VTlVTRUQuCgoyMDAzLTAxLTIzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jICh0aHVtYl9iYXNlX3JlZ2lzdGVyX3J0eF9wKTogTmV3IGZ1bmN0aW9uLgoJKHRodW1iX2luZGV4X3JlZ2lzdGVyX3J0eF9wKTogTmV3IGZ1bmN0aW9uLgoJKHRodW1iX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogTmV3IGZ1bmN0aW9uLgoJKHRodW1iX2xlZ2l0aW1hdGVfb2Zmc2V0X3ApOiBOZXcgZnVuY3Rpb24uCgkqIGFybS5oIChSRUdfU1RSSUNUX1ApOiBEZWZpbmUgYWNjb3JkaW5nIHRvIHNldHRpbmcgb2YgUkVHX09LX1NUUklDVC4KCShBUk1fR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogVXNlIFJFR19TVFJJQ1RfUCB0byBhdm9pZCBkdXBsaWNhdGUKCWRlZmluaXRpb25zLgoJKFRIVU1CX0dPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFVzZSB0aHVtYl9sZWdpdGltYXRlX2FkZHJlc3NfcC4KCShUSFVNQl9MRUdJVElNQVRFX09GRlNFVCk6IERlbHRlLgoJKFRIVU1CX0xFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1MpOiBVc2UgdGh1bWJfbGVnaXRpbWF0ZV9vZmZzZXQuCgkqIGFybS1wcm90b3MuaCAodGh1bWJfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBBZGQgcHJvdG90eXBlLgoJKHRodW1iX2xlZ2l0aW1hdGVfb2Zmc2V0X3ApOiBMaWtld2lzZS4KCjIwMDMtMDEtMjMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiB1bndpbmQuaCAoX1Vud2luZF9HZXRUZXh0UmVsQmFzZSk6IE1hcmsgcGFyYW1ldGVyIGFzIHVudXNlZC4KCjIwMDMtMDEtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoRkxfTElTVCk6IFJldmVydCBsYXN0IGNoYW5nZS4KCjIwMDMtMDEtMjMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgb3RoZXIvNzM0MQoJKiBpbnZva2UudGV4aSAoZnRlc3QtY292ZXJhZ2UpOiBGaXggYnJva2VuIGNyb3NzLXJlZmVyZW5jZS4KCUNoYW5nZSBAY29kZSB0byBAY29tbWFuZCBmb3IgZ2NvdiBjb21tYW5kLgoKCSogZ2NjLnRleGk6IEFkanVzdCB0aXRsZSBvZiBnY292IHNlY3Rpb24uCglBZGp1c3QgY29weXJpZ2h0LgoJKiBnY292LnRleGk6IExpa2V3aXNlLgoKMjAwMy0wMS0yMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzg0MjMKCSogY3NlLmMgKGZvbGRfcnR4KTogT25seSBlbGltaW5hdGUgYSBDT05TVEFOVF9QX1JUWCB0byAxIHdoZW4KCWl0cyBhcmd1bWVudCBpcyBjb25zdGFudCwgb3IgMCBpZiAhZmxhZ19nY3NlLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcnR4KTogQ29udmVydCBDT05TVEFOVF9QX1JUWCB0byAxCglpZiBpdCdzIGFyZ3VtZW50IGlzIGNvbnN0YW50LgoJKiBnY3NlLmMgKHdhbnRfdG9fZ2NzZV9wKTogSWdub3JlIENPTlNUQU5UX1BfUlRYIG5vZGVzLgoJKGhhc2hfc2Nhbl9zZXQpOiBEb24ndCByZWNvcmQgQ09OU1RBTlRfUF9SVFggZXhwcmVzc2lvbnMuCgkoZG9fbG9jYWxfY3Byb3ApOiBEb24ndCBwcm9wYWdhdGUgQ09OU1RBTlRfUF9SVFggY29uc3RhbnRzLgoJKiBidWlsdGlucy5jIChwdXJnZV9idWlsdGluX2NvbnN0YW50X3ApOiBOZXcgZnVuY3Rpb24gdG8gZm9yY2UKCWluc3RhbnRpYXRpb24gb2YgYW55IHJlbWFpbmluZyBDT05TVEFOVF9QX1JUWCBub2Rlcy4KCSogcnRsLmggKHB1cmdlX2J1aWx0aW5fY29uc3RhbnRfcCk6IFByb3RvdHlwZSBoZXJlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEludm9rZSBwdXJnZV9idWlsdGluX2NvbnN0YW50X3AKCXBhc3MgYWZ0ZXIgR0NTRSBhbmQgYmVmb3JlIGxvb3AuCgkoZmxhZ19nY3NlKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogZmxhZ3MuaCAoZmxhZ19nY3NlKTogUHJvdG90eXBlIGhlcmUuCgoyMDAzLTAxLTIyICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmggKEhBUkRfUkVHTk9fTU9ERV9PSyk6IEZpeCB3YXJuaW5nIHJlZ3Jlc3Npb24KCWludHJvZHVjZWQgYnkgbGFzdCBjaGFuZ2UuCgoyMDAzLTAxLTIyICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogcmEtcmV3cml0ZS5jIChyZXdyaXRlX3Byb2dyYW0yKTogSW5pdGlhbGl6ZSBiYiB0byBhdm9pZCB3YXJuaW5nLgoKMjAwMy0wMS0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9zaGlmdF9uZWVkc19zY3JhdGNoX3ApOiBEb24ndAoJcmVxdWVzdCBhIHNjcmF0Y2ggcmVnIG9uIEg4UyB3aGVuIHRoZSBzaGlmdCBjb3VudCBpcyA4LgoKMjAwMy0wMS0yMiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAocHJlZmVycmVkX2xhX29wZXJhbmRfcCk6CglSZW1vdmUgc2Vjb25kIHBhcmFtZXRlci4KCSogY29uZmlnL3MzOTAvczM5MC5jIChwcmVmZXJyZWRfbGFfb3BlcmFuZF9wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRlJBTUVfUkVHTk9fUCwgRlJBTUVfUkVHX1ApOiBOZXcgbWFjcm9zLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFVzZSBGUkFNRV9SRUdOT19QLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmxhX2NjXzY0IiwgIipsYV9jY18zMSIsIHNwbGl0dGVycyk6IFJlbW92ZS4KCUFkZCBwZWVwaG9sZXMgdG8gdHJhbnNmb3JtIEFERCB0byBMT0FEIEFERFJFU1MuCgoyMDAzLTAxLTIyICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fYWRkcmVzc19yZWdpc3Rlcl9ydHhfcCk6IE5ldyBmdW5jdGlvbi4KCShhcm1fbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBOZXcgZnVuY3Rpb24uCgkoYXJtX2xlZ2l0aW1hdGVfaW5kZXhfcCk6IE5ldyBmdW5jdGlvbi4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogVXNlIGFybV9sZWdpdGltYXRlX2luZGV4X3AuCgkqIGFybS1wcm90b3MuaCAoYXJtX2xlZ3RpbWF0ZV9hZGRyZXNzX3ApOiBBZGQgcHJvdG90eXBlLgoJKiBhcm0uaCAoQVJNX0dPX0lGX0xFR0lUSU1BVEVfSU5ERVgpOiBEZWxldGUuCgkoQVJNX0dPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IENhbGwgYXJtX2xlZ2l0aW1hdGVfYWRkcmVzc19wLgoKMjAwMy0wMS0yMiAgSGFydG11dCBQZW5uZXIgIDxocGVubmVyQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChmbG9hdGRmZGkyKTogSW5zbiBoYXMgdHlwZSAnaXRvZicuCgkqIGNvbmZpZy9zMzkwLzIwNjQubWQgKGRlZmluZV9ieXBhc3MpOiBDb3JyZWN0ICdMb2FkJyBhbmQKCSdMb2FkLWFkZHJlc3MnIGJ5cGFzcyB2YWx1ZXMuCgoyMDAzLTAxLTIyICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY29uZmlnL2lhNjQvdC1pYTY0IChpbnNuLWF0dHJ0YWIuby13YXJuKTogRGVmaW5lIGFzIC1Xbm8tZXJyb3IuCgoyMDAzLTAxLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VuYXV0b21hdGEuYyAob3V0cHV0X2ludGVybmFsX2luc25fbGF0ZW5jeV9mdW5jLAoJb3V0cHV0X3ByaW50X3Jlc2VydmF0aW9uX2Z1bmMpOiBTaG9ydCBjaXJjdWl0IHdoZW4gdGhlcmUgaXMgbm8KCWF1dG9tYXRvbiB0byBnZW5lcmF0ZSBjb2RlIGZvci4KCjIwMDMtMDEtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChzc2EtY2NwLm8pOiBEZXBlbmQgb24gY29yZXR5cGVzLmggJChUTV9IKS4KCShkZi5vKTogRGVsZXRlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IG9uIGNvcmV0eXBlcy5oICQoVE1fSCkuCgoyMDAzLTAxLTIxICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBSZW1vdmUgd2FybmluZy4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLmMgKHVwZGF0ZV9zdHVicyk6IFNsaWdodGx5IGltcHJvdmUgdGVycmlibGUgaGFjawoJd2l0aCBpZGVudGlmaWVycy4gIEFkZCBjb21tZW50IHBvaW50aW5nIG91dCBwcm9ibGVtcyB3aXRoIGl0LgoJKHVwZGF0ZV9ub25fbGF6eV9wdHJzKTogTGlrZXdpc2UuCgoyMDAzLTAxLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGxvb2t1cF9maWxlbmFtZSk6IEZpeCBwcmludGYgZm9ybWF0IHdhcm5pbmcuCgkqIHN5c3RlbS5oIChmcmVhZF91bmxvY2tlZCwgZndyaXRlX3VubG9ja2VkKTogVW5kZWYuCgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKEZMX0xJU1QpOiBBZGQgJCgkQC13YXJuKSBob29rLgoJKGZpeGluY2wuby13YXJuLCBnbnUtcmVnZXguby13YXJuKTogTmV3LgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoRklYX1BST0NfSEVBRCk6IE1hcmsgcGFyYW1ldGVycyB1bnVzZWQuCgkqIGZpeGluYy9maXh0ZXN0cy5jIChURVNUX0ZPUl9GSVhfUFJPQ19IRUFEKTogTGlrZXdpc2UuCgkqIGZpeGluYy9maXhpbmNsLmMgKHByb2Nlc3MpOiBGaXggcHJpbnRmIGZvcm1hdCB3YXJuaW5nLgoKMjAwMy0wMS0yMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogZHdhcmYyb3V0IChvdXRwdXRfZmlsZV9uYW1lcyk6IERvbid0IGNyYXNoIGlmIGNhbGxlZAoJd2l0aCBlbXB0eSBmaWxlX3RhYmxlLgoKMjAwMy0wMS0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbmF1dG9tYXRhLmMgKG91dHB1dF9pbnRlcm5hbF9pbnNuX2xhdGVuY3lfZnVuYyk6IEFkZAoJbWlzc2luZyBicmVhayBzdGF0ZW1lbnQgdG8gZ2VuZXJhdGVkIGNvZGUuCgoyMDAzLTAxLTIxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHN0bXQuYyAoc2FtZV9jYXNlX3RhcmdldF9wKTogTmV3IGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyCgl0d28gY2FzZSBsYWJlbHMgYnJhbmNoIHRvIHRoZSBzYW1lIHRhcmdldC4gIFNwbGl0IG91dCBmcm9tLi4uCgkoZ3JvdXBfY2FzZV9ub2Rlcyk6IC4uLiBoZXJlLiAgVXNlIHNhbWVfY2FzZV90YXJnZXRfcCBpbnN0ZWFkLgoJKHN0cmlwX2RlZmF1bHRfY2FzZV9ub2Rlcyk6IFJlbW92ZSBleHBsaWNpdCBjYXNlIG5vZGVzCgl0aGF0IGJyYW5jaCB0byB0aGUgZGVmYXVsdCBkZXN0aW5hdGlvbi4KCShleHBhbmRfZW5kX2Nhc2VfdHlwZSk6IENhbGwgc3RyaXBfZGVmYXVsdF9jYXNlX25vZGVzIGFmdGVyCglncm91cF9jYXNlX25vZGVzLCB0byBzaW1wbGlmeSB0aGUgY2FzZS1saXN0IGJlZm9yZSB3ZSBjb3VudCBpdC4KCU9ubHkgZ2VuZXJhdGUgdGFibGVfbGFiZWwgUlRYIHdoZW4gYWN0dWFsbHkgbmVlZGVkLiAgVHJ5IHRvIHNoYXJlCgl0aGlzY2FzZS0+ZXhpdF9sYWJlbCBhbmQgdGhpc2Nhc2UtPmRhdGEuY2FzZV9zdG10LmRlZmF1bHRfbGFiZWwKCXdoZW4gYSBzd2l0Y2ggaGFzIG5vIGV4cGxpY2l0IGRlZmF1bHQgY2FzZS4gIFNpbXBsaWZ5IHRlc3QgZm9yCgljb25zdGFudCBpbmRleC4KCjIwMDMtMDEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpuZWdzZjJfaDgzMDApOiBVc2UgXFx0IGluc3RlYWQgb2YKCVx0LgoJKCpuZWdzZjJfaDgzMDBocyk6IExpa2V3aXNlLgoJKCphZGRzaTNfbHNoaWZ0cnRfMTZfemV4dGhpKTogTGlrZXdpc2UuCgkoKmlvcmhpM19sc2hpZnRydF84KTogTGlrZXdpc2UuCgoyMDAzLTAxLTIxICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZmRlX3RhYmxlX2luX3VzZSk6IE1hcmsgR1RZLgoJKGR3YXJmMm91dF9jZmlfbGFiZWxfbnVtKTogTmV3IHZhcmlhYmxlLCBtYXJrZWQgR1RZLgoJKGR3YXJmMm91dF9jZmlfbGFiZWwpOiBVc2UgaXQgaW5zdGVhZCBvZiBzdGF0aWMgbGFiZWxfbnVtLgoJKiBlbWl0LXJ0bC5jIChsYWJlbF9udW0pOiBNYXJrIEdUWS4KCjIwMDMtMDEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAob3V0cHV0X3BsdXNzaSk6IFN1cHBvcnQgSDgvMzAwLgoJKGNvbXB1dGVfcGx1c3NpX2xlbmd0aCk6IExpa2V3aXNlLgoJKGNvbXB1dGVfcGx1c3NpX2NjKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoYWRkc2lfaDgzMDApOiBVc2Ugb3V0cHV0X3BsdXNzaSB0bwoJb3V0cHV0IGFzc2VtYmx5IGluc3RydWN0aW9ucy4KCjIwMDMtMDEtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGxzLmMgKGZpeF91bnNhZmVfdHJlZSk6IFByb3RvdHlwZS4KCgkqIE1ha2VmaWxlLmluIChHQ0NfV0FSTl9DRkxBR1MpOiBBZGQgJChXRVJST1IpICQoJEAtd2FybikKCShndHlwZS1kZXNjLm8td2FybiwgYy1kZWNsLm8td2FybiwgdmFyYXNtLm8td2FybiwgZ2NjLm8td2FybiwKCWluc24tY29uZGl0aW9ucy5vLXdhcm4sIG91dF9vYmplY3RfZmlsZSwgZ2VuZ3R5cGUteWFjYy5vLXdhcm4sCgljLXBhcnNlLm8td2Fybik6IEFkZCAtV25vLWVycm9yLgoJKFNUQUdFMl9GTEFHU19UT19QQVNTKTogQWRkIFdFUlJPUj0iQFdFUlJPUkAiLgoKCSogY29uZmlndXJlLmluICgtLWVuYWJsZS13ZXJyb3IpOiBBZGQgbmV3IGZsYWcuCgkqIGRvYy9pbnN0YWxsLnRleGkgKC0tZW5hYmxlLXdlcnJvcik6IERvY3VtZW50LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy9vYmpjLXBhcnNlLm8td2Fybik6IEFkZCAtV25vLWVycm9yLgoKMjAwMy0wMS0yMSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGdlbmF1dG9tYXRhLmMgKG91dHB1dF9pbnRlcm5hbF9pbnNuX2xhdGVuY3lfZnVuYyk6IEZpeCBtaXNzaW5nCgljbG9zZSBwYXJlbiBpbiBvdXRwdXQuCgoyMDAzLTAxLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VuYXV0b21hdGEuYzogU3BhY2Ugc2F2aW5ncyBpbiBnZW5lcmF0ZWQgY29kZToKCShvdXRwdXRfZGZhX2luc25fY29kZV9mdW5jKTogU3BsaXQgb3V0IHRoZSB0YWJsZS1lbmxhcmdlbWVudAoJcGF0aCB0byBhbiBvdXQtb2YtbGluZSBzdGF0aWMgZnVuY3Rpb24sIGRmYV9pbnNuX2NvZGVfZW5sYXJnZS4KCShvdXRwdXRfaW50ZXJuYWxfaW5zbl9sYXRlbmN5X2Z1bmMpOiBVc2UgYSBsb29rdXAgdGFibGUgZm9yIHRoZQoJZGVmYXVsdCBsYXRlbmNpZXMuCgkob3V0cHV0X3ByaW50X3Jlc2VydmF0aW9uX2Z1bmMpOiBVc2UgYSBsb29rdXAgdGFibGUgZm9yIHRoZQoJc3RyaW5ncy4KCjIwMDMtMDEtMjEgIENocmlzdGlhbiBFaHJoYXJkdCAgPGVocmhhcmR0QG1hdGhlbWF0aWsudW5pLXVsbS5kZT4KCglQUiBvcHQvNzUwNwoJKiBjYWxscy5jIChmaXhfdW5zYWZlX3RyZWUpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShleHBhbmRfY2FsbCk6IC4uLiBoZXJlLiAgVXNlIGl0IG9uIHRoZSBmdW5jdGlvbiBhZGRyZXNzIHRvby4KCjIwMDMtMDEtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleHByLmggKGRlZmF1bHRfbXVzdF9wYXNzX2luX3N0YWNrKTogTW92ZSBkZWNsIG91dHNpZGUgaWZkZWYuCgoyMDAzLTAxLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG9wdC83MTU0CgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFZhbGlkaXplIG1lbW9yeSBvcGVyYW5kcy4KCjIwMDMtMDEtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0Lzg4NDgKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogQ29ycmVjdCBhcmd1bWVudHMgdG8KCW1vZGlmaWVkX2JldHdlZW5fcCBmb3Igbm8tZWxzZS1ibG9jayBjYXNlLgoKMjAwMy0wMS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChjb25zdF9jb3N0cyk6IFJlbW92ZSBhIHdhcm5pbmcuCgkob3V0cHV0X3BsdXNzaSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfcGx1c3NpX2xlbmd0aCk6IExpa2V3aXNlLgoJKGNvbXB1dGVfcGx1c3NpX2NjKTogTGlrZXdpc2UuCgoyMDAzLTAxLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhZGRzaV9oODMwMCk6IFJlbW92ZSB0aGUgbGFzdAoJYWx0ZXJuYXRpdmUuCgoyMDAzLTAxLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGdldF9zaGlmdF9hbGcpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgoyMDAzLTAxLTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaCAoX19OT19TVFJJTkdfSU5MSU5FUyk6IERlZmluZS4KCjIwMDMtMDEtMjAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBpZmN2dC5jIChub2NlX2VtaXRfc3RvcmVfZmxhZyk6IERvbid0IGVtaXQgc3RvcmUgZmxhZyBpZiBtb2RlIG9mIHgKCWlzIG5vdCBhIHNjYWxhciBpbnQgbW9kZS4KCjIwMDMtMDEtMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY3NlLmMgKGNzZV9pbnNuKTogQXZvaWQgUlRMIHNoYXJpbmcgd2hlbiB1cGRhdGluZyB0aGUgUkVUVkFMCglpbnNuJ3Mgbm90ZXMgZm9sbG93aW5nIGEgc3Vic3RpdHV0aW9uIGluc2lkZSBhIGxpYmNhbGwuCgoyMDAzLTAxLTIwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3Igc3lzdGVtLXByb3ZpZGVkICd1Y2hhcicgdHlwZS4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGNwcGhhc2guaDogT25seSB0eXBlZGVmICd1Y2hhcicgaWYgdGhlIHN5c3RlbSBkb2Vzbid0LgoKMjAwMy0wMS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGV4cHIuaCAoTVVTVF9QQVNTX0lOX1NUQUNLKTogTW92ZSBpbXBsZW1lbnRhdGlvbi4uLgoJKiBjYWxscy5jIChkZWZhdWx0X211c3RfcGFzc19pbl9zdGFjayk6IC4uLiBoZXJlLgoKMjAwMy0wMS0yMCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBnZW5hdHRydGFiLmggKElOU05fQUxUU19GVU5DX05BTUUpOiBNb3ZlIGl0IGZyb20gZ2VuYXV0b21hdGEuYy4KCgkqIGdlbmF1dG9tYXRhLmMgKElOU05fQUxUU19GVU5DX05BTUUpOiBNb3ZlIGl0IGludG8gZ2VuYXR0cnRhYi5oLgoKCSogZ2VuYXR0ci5jIChtYWluKTogT3V0cHV0IGRlZmF1bHQgZGVmaW5pdGlvbiBvZiBBVVRPTUFUT05fQUxUUy4KCVdyYXAgdXAgZGVmaW5pdGlvbiBvZiBgaW5zbl9hbHRzJy4KCgkqIGdlbmF0dHJ0YWIuYyAobWFpbik6IFdyYXAgdXAgYGluc25fYWx0cycuCgoyMDAzLTAxLTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb2xsZWN0Mi5jIChsZGdldG5hbWUpOiBDaGVjayBIQVZFX0RFQ0xfTERHRVROQU1FIGJlZm9yZQoJcHJvdG90eXBpbmcuCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIDxsZGZjbi5oPiBhbmQgbGRnZXRuYW1lKCkgcHJvdG90eXBlLgoKCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTAxLTIwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKHNpYmNhbGxfZXBpbG9ndWUpOiBBZGQgYW4KCVVOU1BFQ19QUk9MT0dVRV9VU0UgdG8gcHJldmVudCB0aGUgbGluayByZWdpc3RlciBmcm9tIGJlaW5nCgljb25zaWRlcmVkIGRlYWQuCgoyMDAzLTAxLTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChTU0UgY21vdiBzcGxpdHRlcik6ICBIYW5kbGUgbWVtb3J5IG9wZXJhbmQgaW4gb3BlcmFuZCA1LgoKMjAwMy0wMS0yMCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIHN5c3RlbS5oOiBEb24ndCBkZWNsYXJlIHN0cnNpZ25hbCBpZiB0aGUgZGVjbCB0ZXN0IGhhc24ndCBiZWVuCglydW4geWV0LgoKMjAwMy0wMS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChub3RpY2VfdXBkYXRlX2NjKTogRG9uJ3QgYXNzdW1lIHRoYXQKCXJlY29nX2RhdGEub3BlcmFuZHNbMF0gaXMgYWx3YXlzIGFzc29jaWF0ZWQgd2l0aCBjYzAuCgoyMDAzLTAxLTE5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb2xsZWN0Mi5jIChsZGdldG5hbWUpOiBFeHBhbmQgZGVjbGFyYXRpb24gdG8gcHJvdG90eXBlLgoJKiByZWFkLXJ0bC5jIChhdG9sbCk6IEFkZCBwcm90b3R5cGUuCgkqIHN5c3RlbS5oIChzdHJzaWduYWwpOiBBbHNvIGRlY2xhcmUgaWYgbm8gZGVjbGFyYXRpb24gZm91bmQuCgoyMDAzLTAxLTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHM2NCotKi1saW51eCopOiBBZGRlZC4KCSogY29uZmlnL21pcHMvbGludXg2NC5oLCBjb25maWcvbWlwcy90LWxpbnV4NjQ6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChNSVBTX1RGTU9ERV9GT1JNQVQpOiBEZWZpbmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBpdC4KCSogY29uZmlnL21pcHMvbWlwcy5oIChUQVJHRVRfU1dJVENIRVMpOiBBZGRlZC4uLgoJKFNVQlRBUkdFVF9UQVJHRVRfU1dJVENIRVMpOiBOZXcsIGVtcHR5IGJ5IGRlZmF1bHQuCgkqIE1ha2VmaWxlLmluIChTUEVDUyk6IE5ldy4KCShTVEFHRVNUVUZGLCBzcGVjcywgbW9zdGx5Y2xlYW4sIGluc3RhbGwtY29tbW9uKTogVXNlIGl0LgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogTW92ZSBzZWxmLXNwZWMgcHJvY2Vzc2luZyBwYXN0IHNwZWMKCWZpbGUgbG9hZGluZy4KCSogZG9jL3RtLnRleGkgKERSSVZFUl9TRUxGX1NQRUNTKTogRG9jdW1lbnQgdGhlIGNoYW5nZS4KCSogZG9jL2ZyYWdtZW50cy50ZXhpIChNVUxUSUxJQl9FWFRSQV9PUFRTKTogRG9jdW1lbnQgbmVlZCBmb3IKCUNSVFNUVUZGX1RfQ0ZMQUdTLgoJKFNQRUNTKTogRG9jdW1lbnQuCgkqIGRvYy9pbnZva2UudGV4aSAoLW1hYmktZmFrZS1kZWZhdWx0KTogRG9jdW1lbnQuCgoyMDAzLTAxLTE5ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAoc3RhY2tfcHVzaF93b3JkLCBzdGFja19wb3Bfd29yZCwKCXpfcmVnLCB6X3JlZ19xaSk6IERlY2xhcmUgc3RhdGljIGFuZCBHVFkoKS4KCShkYV9yZWcpOiBSZW1vdmUuCgkoY3JlYXRlX3JlZ3NfcnR4KTogRG9uJ3QgY3JlYXRlIGRhX3JlZy4KCSgiZ3QtbTY4aGMxMS5oIik6IEluY2x1ZGUgZm9yIEdUWSByb290cy4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oIChpeF9yZWcsIGl5X3JlZywgZF9yZWcpOiBEZWNsYXJlIGV4dGVybgoJYW5kIEdUWSgpIGhlcmUuCgkobTY4aGMxMV9jb21wYXJlX29wMCwgbTY4aGMxMV9jb21wYXJlX29wMSk6IExpa2V3aXNlLgoJKG02OGhjMTFfc29mdF90bXBfcmVnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmg6IFJlbW92ZSBhYm92ZSBkZWNsYXJhdGlvbnMuCgoyMDAzLTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYmFzaWMtYmxvY2suaDogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY2FsbHMuYzogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYzogTGlrZXdpc2UuCgkqIGNvbnZlcnQuYzogTGlrZXdpc2UuCgkqIGdjb3YuYzogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmM6IExpa2V3aXNlLgoJKiBsaWJnY2MyLmM6IExpa2V3aXNlLgoJKiBsb29wLmM6IExpa2V3aXNlLgoJKiBwcm9maWxlLmM6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaDogTGlrZXdpc2UuCgoyMDAzLTAxLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9wYS9wYS5tZCAobXVsZGkzKTogQXZvaWQgaW52YWxpZCBzaGFyaW5nIG9mIFNVQlJFRyBSVFhzLgoKMjAwMy0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmEtYnVpbGQuYyAodW5kZWZfdG9fc2l6ZV93b3JkKTogQXZvaWQgYHN3aXRjaCcgd2FybmluZy4KCjIwMDMtMDEtMTcgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICgqZmxvYXRzaWRmMl9pbnRlcm5hbCk6ICBBZGQgZWFybHljbG9iYmVycy4KCSAgKCpmbG9hdHVuc3NpZGYyX2ludGVybmFsKTogIERpdHRvLgoKMjAwMy0wMS0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFsaWFzLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBiYXNpYy1ibG9jay5oOiBMaWtld2lzZS4KCSogYy1jb21tb24uYzogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmg6IExpa2V3aXNlLgoJKiBjLWRlY2wuYzogTGlrZXdpc2UuCgkqIGMtb3B0cy5jOiBMaWtld2lzZS4KCSogYy1wcmFnbWEuYzogTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50Lmg6IExpa2V3aXNlLgoJKiBjZmcuYzogTGlrZXdpc2UuCgkqIGNmZ2FuYWwuYzogTGlrZXdpc2UuCgkqIGNmZ2J1aWxkLmM6IExpa2V3aXNlLgoJKiBjZmdjbGVhbnVwLmM6IExpa2V3aXNlLgoJKiBjZmdsYXlvdXQuYzogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jOiBMaWtld2lzZS4KCSogY29udmVydC5jOiBMaWtld2lzZS4KCSogY3BwaGFzaC5oOiBMaWtld2lzZS4KCSogY3BwbGV4LmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuaDogTGlrZXdpc2UuCgkqIGRmLmg6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmM6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmg6IExpa2V3aXNlLgoJKiBkd2FyZjIuaDogTGlrZXdpc2UuCgoyMDAzLTAxLTE3ICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaDogRm9yd2FyZC1kZWNsYXJlIHN0cnVjdCBjcHBfcmVhZGVyLgoKMjAwMy0wMS0xNyAgRG91Z2xhcyBCIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX25lZWRfbGlua2FnZSk6IEZpeCBvYnZpb3VzCgltaXN0YWtlIGluIGxhc3QgY2hlY2tpbi4KCjIwMDMtMDEtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBldC1mb3Jlc3QuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGV0LWZvcmVzdC5oOiBMaWtld2lzZS4KCSogZXhjZXB0LmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBmbGFncy5oOiBMaWtld2lzZS4KCSogZmxvdy5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoJKiBnZW5hdHRydGFiLmM6IExpa2V3aXNlLgoJKiBnZW5hdXRvbWF0YS5jOiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUuYzogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmM6IExpa2V3aXNlLgoJKiBnbG9iYWwuYzogTGlrZXdpc2UuCgkqIGd0aHItcnRlbXMuaDogTGlrZXdpc2UuCgoyMDAzLTAxLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpMzg2LmMgKHg4Nl9mdW5jdGlvbl9wcm9maWxlcik6IEZpeCBmb3JtYXQgc3BlY2lmaWVyLgoKMjAwMy0wMS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdlbmd0eXBlLmMgKHdhbGtfdHlwZSk6IEFsbG93IHBhcmFtTl9pcy4KCjIwMDMtMDEtMTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTk2MC90LTk2MGJhcmUgKGk5NjAtYy5vKTogQWRkIG1pc3NpbmcgbmV3bGluZSBlc2NhcGUuCgoyMDAzLTAxLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIChMSUJfU1BFQyk6IEFkanVzdCBpbnRlci1vcHRpb24gc3BhY2luZy4KCjIwMDMtMDEtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc3JfYWxpYXNfc2V0KTogTWFyayBHVFkuCgkoYWxwaGFfbmV4dF9zZXF1ZW5jZV9udW1iZXIpOiBMaWtld2lzZS4KCShhbHBoYV90aGlzX2xpdGVyYWxfc2VxdWVuY2VfbnVtYmVyKTogTGlrZXdpc2UuCgkoYWxwaGFfdGhpc19ncGRpc3Bfc2VxdWVuY2VfbnVtYmVyKTogTGlrZXdpc2UuCgkoc3RydWN0IGFscGhhX2Z1bmNzLCBhbHBoYV9mdW5jc19udW0pOiBMaWtld2lzZS4KCShzdHJ1Y3QgYWxwaGFfbGlua3MpOiBGaXggYnJhbmNoIG1lcmdlIGVycm9yLgoJKGFscGhhX25lZWRfbGlua2FnZSwgYWxwaGFfdXNlX2xpbmthZ2UpOiBVc2UgR0MgZm9yIGFscGhhX2Z1bmNzLgoKMjAwMy0wMS0xNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmg6IERvbid0IHVzZSAjZWxpZi4gIFJlcG9ydGVkIGJ5IEthdmVoCglSLiBHaGF6aS4KCjIwMDMtMDEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBpZmN2dC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogbGNtLmM6IExpa2V3aXNlLgoJKiBsaWJnY2MyLmM6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogcHJlZGljdC5jOiBMaWtld2lzZS4KCSogcmEtYnVpbGQuYzogTGlrZXdpc2UuCgkqIHJhLmM6IExpa2V3aXNlLgoJKiByYS1jb2xvcml6ZS5jOiBMaWtld2lzZS4KCSogcmEuaDogTGlrZXdpc2UuCgkqIHJhLXJld3JpdGUuYzogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYzogTGlrZXdpc2UuCgkqIHJlbG9hZC5oOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoJKiB0cmVlLmg6IExpa2V3aXNlLgoJKiB1bndpbmQtZHcyLWZkZS1nbGliYy5jOiBMaWtld2lzZS4KCSogdm1zZGJnb3V0LmM6IExpa2V3aXNlLgoKMjAwMy0wMS0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChzdHJ1Y3QgZmlsZV90YWJsZSk6IFJlbW92ZS4KCShGSUxFX1RBQkxFX0lOQ1JFTUVOVCk6IFJlbW92ZS4KCShmaWxlX3RhYmxlKTogTWFrZSBhIHZhcnJheTsgbWFyayBmb3IgR0MuICBVcGRhdGUgYWxsIHVzZXJzLgoJKGZpbGVfdGFibGVfbGFzdF9sb29rdXBfaW5kZXgpOiBFeHRyYWN0IGZyb20gc3RydWN0IGZpbGVfdGFibGUuCgkob3V0cHV0X2ZpbGVfbmFtZXMpOiBGaXggdW5zaWduZWQgY29tcGFyZSB3YXJuaW5ncy4KCShhZGRfbmFtZV9hdHRyaWJ1dGUpOiBSZW1vdmUgaW5saW5lIG1hcmtlci4KCShhZGRfY29tcF9kaXJfYXR0cmlidXRlKTogU3BsaXQgb3V0IGZyb20gZ2VuX2NvbXBpbGVfdW5pdF9kaWUuCgkobG9va3VwX2ZpbGVuYW1lKTogRG9uJ3QgbWFuYWdlIHNpemUgb2YgZmlsZV90YWJsZS4KCShpbml0X2ZpbGVfdGFibGUpOiBBbGxvY2F0ZSBmaWxlX3RhYmxlIHdpdGggR0MuCgkoZHdhcmYyb3V0X2luaXQpOiBEb24ndCByZWNvcmQgbWFpbl9pbnB1dF9maWxlbmFtZSBoZXJlLgoJKGR3YXJmMm91dF9maW5pc2gpOiBEbyBpdCBoZXJlIGluc3RlYWQuCgoyMDAzLTAxLTE2ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGdjYy9maXhpbmMvaW5jbGhhY2suZGVmKGxpbWl0c19pZm5kZWYpOiBRTlggbmVlZHMgYSBieXBhc3MsIHRvby4KCjIwMDMtMDEtMTYgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoX2luaXRpYWxpemVfdHJhbXBvbGluZSk6IEVtaXQgcm90cmRpM19tZXh0cgoJaW5zdGVhZCBvZiByb3RsZGkzX21leHRyLgoKMjAwMy0wMS0xNiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChtb3ZlX2luc24pOiBSZXN0b3JlIG1vdmluZyBhbGwgc2NoZWR1bGUgZ3JvdXAuCgkoc2V0X3ByaW9yaXRpZXMpOiBSZXN0b3JlIHRha2luZyBTQ0hFRF9HUk9VUF9QIGludG8gYWNjb3VudC4KCgkqIHNjaGVkLWRlcHMuYyAoYWRkX2RlcGVuZGVuY2UpOiBSZXN0b3JlIHByb2Nlc3NpbmcgdGhlIGxhc3QgZ3JvdXAKCWluc24uCgkocmVtb3ZlX2RlcGVuZGVuY2UsIGdyb3VwX2xlYWRlcik6IFJlc3RvcmUgdGhlIGZ1bmN0aW9ucy4KCShzZXRfc2NoZWRfZ3JvdXBfcCk6IFJlc3RvcmUgYWRkaW5nIGRlcGVuZGVuY2llcyBmcm9tIHByZXZpb3VzIGluc24KCWluIHRoZSBncm91cC4KCShjb21wdXRlX2ZvcndhcmRfZGVwZW5kZW5jZXMpOiBSZXN0b3JlIHVzYWdlIG9mIGdyb3VwX2xlYWRlci4KCgkqIHNjaGVkLWViYi5jIChpbml0X3JlYWR5X2xpc3QpOiBSZXN0b3JlIHRha2luZyBTQ0hFRF9HUk9VUF9QIGludG8KCWFjY291bnQuCgoJKiBzY2hlZC1yZ24uYyAoaW5pdF9yZWFkeV9saXN0KTogUmVzdG9yZSB0YWtpbmcgU0NIRURfR1JPVVBfUCBpbnRvCglhY2NvdW50LgoJKGNhbl9zY2hlZHVsZV9yZWFkeV9wKTogRGl0dG8uCgkoYWRkX2JyYW5jaF9kZXBlbmRlbmNlcyk6IFJlc3RvcmUgc2tpcHBpbmcgb3ZlciB0aGUgZ3JvdXAgaW5zbnMuCgoyMDAzLTAxLTE2ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYyAobTY4aGMxMV9jaGVja196X3JlcGxhY2VtZW50KTogRml4IGhhbmRsaW5nCgk2OEhDMTIgcHJlL3Bvc3QgaW5jL2RlYyBzaWRlIGVmZmVjdHMuCgoyMDAzLTAxLTE2ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoTUFTS19NNjgxMik6IERlZmluZS4KCjIwMDMtMDEtMTYgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQG9uZXRlbC5uZXQudWs+CgoJKiBzaC5tZCAobXNoZmxvX3dfeCk6IEZpeCBkZXNjcmlwdGlvbiBvZiBvcGVyYXRpb24uCgoyMDAzLTAxLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogTWVudGlvbiBBbHRpdmVjIHJlZ2lzdGVycyBpbgoJY29tbWVudGFyeS4gIEZpeCB0eXBvLgoKMjAwMy0wMS0xNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnRpX3N0cmluZyk6IFJlbW92ZSBjbG9iYmVyLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlLCBUSW1vZGUpOiBFeHBsaWNpdGx5CglnZW5lcmF0ZSBQQVJBTExFTCB3aXRoIGNsb2JiZXIgZm9yIFRBUkdFVF9QT1dFUi4KCjIwMDMtMDEtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJhLWNvbG9yaXplLmMgKGNvbG9yaXplX29uZV93ZWIpOiBJbml0aWFsaXplIHZhcmlhYmxlLgoJKiByZWdtb3ZlLmMgKGZpeHVwX21hdGNoXzEpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChyZWxvYWRfYXNfbmVlZGVkKTogTGlrZXdpc2UuCgkqIHNkYm91dC5jIChTRVRfS05PV05fVFlQRV9UQUcpOiBBZGQgY2FzdC4KCjIwMDMtMDEtMTYgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZ2xvb3AuYyAoZmxvd19sb29wc19maW5kKTogRml4IGhhbmRsaW5nIG9mIGFibm9ybWFsIGVkZ2VzLgoKMjAwMy0wMS0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGJ4b3V0LmMgKGxhc3RmaWxlLCBjd2QpOiBGaXggYHVudXNlZCcgd2FybmluZy4KCSogZHdhcmYyb3V0LmMgKGZkZV90YWJsZV9pbl91c2UsIGN1cnJlbnRfZnVuY2RlZl9mZGUsCglkd19jZmlfb3BybmQxX2Rlc2MsIGR3X2NmaV9vcHJuZDJfZGVzYywgbmV4dF9kaWVfb2Zmc2V0LAoJaXNfbWFpbl9zb3VyY2UsIGZpbGVfdGFibGUsIGRlY2xfZGllX3RhYmxlX2luX3VzZSwKCWFiYnJldl9kaWVfdGFibGVfaW5fdXNlLCBsaW5lX2luZm9fdGFibGVfaW5fdXNlLAoJc2VwYXJhdGVfbGluZV9pbmZvX3RhYmxlX2luX3VzZSwgcHVibmFtZV90YWJsZV9pbl91c2UsCglhcmFuZ2VfdGFibGVfaW5fdXNlLCByYW5nZXNfdGFibGVfaW5fdXNlLAoJY3VycmVudF9mdW5jdGlvbl9oYXNfaW5saW5lcyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGxpZmVfYW5hbHlzaXMpOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jIChnZW5faW5zbik6IExpa2V3aXNlLgoJKiBwcm90b2l6ZS5jIChjcGx1c19zdWZmaXgpOiBMaWtld2lzZS4KCgkqIGFybS5jIChST1VORF9VUF9XT1JEKTogUmVuYW1lZCBmcm9tIFJPVU5EX1VQLgoJKiBhcm0uaCAoUk9VTkRfVVBfV09SRCk6IExpa2V3aXNlLgoKCSogYXJtLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogQXZvaWQgc2lnbmVkL3Vuc2lnbmVkCgl3YXJuaW5nLgoJKiBlbWl0LXJ0bC5jIChnZW5fcnR4X1JFRywgc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcywKCWluaXRfZW1pdF9vbmNlKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAobWFya19yZWdzX2xpdmVfYXRfZW5kLCBjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6CglMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOiBMaWtld2lzZS4KCSogbG9vcC5jIChsb29wX2ludmFyaWFudF9wKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKHB1c2hfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChpbml0X3JlZ19zZXRzXzEpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKHVwZGF0ZV9hdXRvX2luY19ub3Rlcyk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlbG9hZF9hc19uZWVkZWQsIGVtaXRfaW5wdXRfcmVsb2FkX2luc25zKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChzdGFydF9yZWNvcmRfbGF5b3V0KTogTGlrZXdpc2UuCgoyMDAzLTAxLTE2ICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxoZXJtYW50ZW5icnVnZ2VAaG9tZS5ubD4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChlcGlsb2d1ZSk6IENvcnJlY3QgbGFzdCBwYXRjaC4KCjIwMDMtMDEtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoZmluZF9sb19zdW1fdXNpbmdfZ3ApOiBSZW5hbWUgZnJvbSBmaW5kX2xvX3N1bTsKCWFsc28gY2hlY2sgdGhhdCBHUCBpcyBiZWluZyB1c2VkLgoJKGFscGhhX2ZpbmRfbG9fc3VtX3VzaW5nX2dwKTogTmV3LgoJKGFscGhhX2RvZXNfZnVuY3Rpb25fbmVlZF9ncCk6IFVzZSBnZXRfYXR0cl91c2VncC4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoYXR0ciB1c2VncCk6IE5ldy4gIEFubm90YXRlIHBhdHRlcm5zCglhcyBuZWVkZWQuCgoyMDAzLTAxLTE1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGdjc2UuYyAob25lX2Nwcm9wX3Bhc3MpOiBDaGFuZ2UgZnVuY3Rpb24gYXJndW1lbnRzIHRvIHRha2UgYm90aAoJY3Byb3BfanVtcHMgYW5kIGJ5cGFzc19qdW1wcyBmbGFncyBpbnN0ZWFkIG9mIGp1c3QgYWx0ZXJfanVtcHMuCgkoZ2NzZV9tYWluKTogVXBkYXRlIGNhbGxzIHRvIG9uZV9jcHJvcF9wYXNzLCBkaXNhYmxpbmcgYnlwYXNzaW5nLgoJKGJ5cGFzc19qdW1wcyk6IE5ldyBmdW5jdGlvbiB0byBwZXJmb3JtIHNlcGFyYXRlIGp1bXAgYnlwYXNzaW5nIHBhc3MuCgkqIHJ0bC5oIChieXBhc3NfanVtcHMpOiBBZGQgZnVuY3Rpb24gcHJvdG90eXBlLgoJKiB0aW1ldmFyLmRlZiAoVFZfQllQQVNTKTogTmV3IHRpbWluZyB2YXJpYWJsZS4KCSogdG9wbGV2LmMgKGVudW0gZHVtcF9maWxlX2luZGV4KTogQWRkIG5ldyBlbnRyeSBERklfYnlwYXNzLgoJKGR1bXBfZmlsZSk6IE5ldyBlbnRyeSBmb3IgdGhlIGJ5cGFzcyBSVEwgZHVtcCBmaWxlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBJbnNlcnQgbmV3IGp1bXAgYnlwYXNzaW5nIG9wdGltaXphdGlvbgoJcGFzcyBhZnRlciBsb29wLgoJKiBkb2MvcGFzc2VzLnRleGk6IERvY3VtZW50IG5ldyBwYXNzLgoKMjAwMy0wMS0xNSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHNvbS5oIChTVVBQT1JUU19XRUFLLCBTVVBQT1JUU19PTkVfT05MWSwgTUFLRV9ERUNMX09ORV9PTkxZLAoJQVNNX1dFQUtFTl9MQUJFTCwgR1RIUkVBRF9VU0VfV0VBSyk6IERlZmluZS4KCSogcGEuaCAoVEFSR0VUX1NPTV9TREVGKTogRGVmaW5lLgoJKiBwYS1ocHV4MTEuaCAoVEFSR0VUX1NPTV9TREVGKTogRGVmaW5lLgoKMjAwMy0wMS0xNiAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKGV4cGFuZF9wcm9sb2d1ZSk6IFVzZSBwdXNoL3BvcCB0bwoJYWxsb2NhdGUgNC1ieXRlcyBvZiBsb2NhbHMgb24gNjhIQzExLgoJKGV4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKG02OGhjMTFfbWVtb3J5X21vdmVfY29zdCk6IEluY3JlYXNlIGNvc3Qgb2YgSEkvUUkgc29mdCByZWdpc3RlcnMuCgoyMDAzLTAxLTE1ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoQVNNX1NQRUMpOiBIYW5kbGUgLW02OGhjczEyOyBQYXNzIC1tc2hvcnQKCWFuZCAtbXNob3J0LWRvdWJsZSB0byB0aGUgYXNzZW1ibGVyIHRvIHNwZWNpZnkgdGhlIEFCSS4KCShMSU5LX1NQRUMpOiBMaWtld2lzZS4KCShDUFBfU1BFQyk6IFBhc3MgSENTMTIgc3BlY2lmaWMgZGVmaW5lLgoJKE1BU0tfTTY4UzEyKTogTmV3IGRlZmluZS4KCShUQVJHRVRfTTY4UzEyKTogTGlrZXdpc2UuCgkoVEFSR0VUX1NXSVRDSEVTKTogTmV3IG9wdGlvbnMgLW02OGhjczEyIGFuZCAtbTY4UzEyLgoJKFRBUkdFVF9WRVJTSU9OKTogVXBkYXRlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzEyLmggKENQUF9TUEVDKTogUGFzcyBIQ1MxMiBzcGVjaWZpYyBkZWZpbmUuCgkoTElOS19TUEVDKTogVXBkYXRlLgoJKEFTTV9TUEVDKTogVXBkYXRlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKG02OGhjMTFfYXNtX2ZpbGVfc3RhcnQpOiBVcGRhdGUuCgkqIGRvYy9pbnZva2UudGV4aSAoTTY4aGMxeCBPcHRpb25zKTogRG9jdW1lbnQgLW02OGhjczEyLgoKMjAwMy0wMS0xNSAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kICgicmV0dXJuIik6IFVzZSBlbWl0X2p1bXBfaW5zbiB0byBlbWl0Cgl0aGUgcmV0dXJuIGNvZGUuCgoyMDAzLTAxLTE1ICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBjZmdhbmFsLmMgKHNldF9lZGdlX2Nhbl9mYWxsdGhydV9mbGFnKTogQ2xlYXIgdGhlIEVER0VfQ0FOX0ZBTExUSFJVCglmbGFnIGJlZm9yZSBzZXR0aW5nIGl0LgoKMjAwMy0wMS0xNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfd2hpbGVfc3RtdCk6ICBJbXByb3ZlIGluaXRpYWwgUlRMIGdlbmVyYXRpb24KCXdoZW4gbG9vcCBjb25kaXRpb24gaXMga25vd24gdHJ1ZSwgaS5lLiAgIndoaWxlICgxKSB7IC4uLiB9Ii4KCShnZW5ydGxfZm9yX3N0bXQpOiBTaW1pbGFybHkgZm9yICJmb3IiIHN0YXRlbWVudHMuCgoyMDAzLTAxLTE1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlYWwuYyAocmVhbF9zcXJ0KTogUmV0dXJuIGEgYm9vbCByZXN1bHQgaW5kaWNhdGluZyB3aGV0aGVyCglhIGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbiBvciB0cmFwIHNob3VsZCBiZSByYWlzZWQuCgkqIHJlYWwuaCAocmVhbF9zcXJ0KTogVXBkYXRlIGZ1bmN0aW9uIHByb3RvdHlwZS4KCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluKTogT25seSBmb2xkIG5vbi10cmFwcGluZyBzcXVhcmUKCXJvb3RzIHVubGVzcyB3ZSdyZSBpZ25vcmluZyBlcnJubyBhbmQgdHJhcHBpbmcgbWF0aC4KCjIwMDMtMDEtMTUgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLmdjLmNhPgoKCSogZXhwci5oIChlbWl0X2NvbmRpdGlvbmFsX2FkZCk6IEFkZCBQQVJBTVMgdG8gZGVjbGFyYXRpb24uCgkqIGdlbmd0eXBlLWxleC5sIChtYWxsb2MsIHJlYWxsb2MpOiBNb3ZlIGRlZmluZXMgYWZ0ZXIgaW5jbHVkZSBvZgoJc3lzdGVtLmguICBSZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUgb2Ygc3lzdGVtLmguCgoyMDAzLTAxLTE1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzkwMDkKCSogb3B0YWJzLmMgKGV4cGFuZF91bm9wKTogIFdoZW4gbWFuaXB1bGF0aW5nIHRoZSBGUCBzaWduIGJpdAoJdXNpbmcgaW50ZWdlciBvcGVyYXRpb25zLCBhY2NvdW50IGZvciB0YXJnZXRzIHdpdGggZGlmZmVyZW50CglpbnRlZ2VyIGFuZCBGUCB3b3JkIG9yZGVycy4KCShleHBhbmRfYWJzKTogTGlrZXdpc2UuCgoyMDAzLTAxLTE1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZ2VuX3NlY3Rpb25fbmFtZSk6IERvIG5vdCBpbmNsdWRlCglmaWxlIGV4dGVuc2lvbiBpbiBzZWN0aW9uIG5hbWUuCgoyMDAzLTAxLTE1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGZsb3cuYyAoZmluZF9hdXRvX2luYyk6IEFsc28gdHJ5IHRvIGdlbmVyYXRlIGEgUFJFX01PRElGWSB3aXRoCgljb25zdGFudCBvZmZzZXQuCgoyMDAzLTAxLTE1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5oIChIQVZFX1BSRV9NT0RJRllfRElTUCwgSEFWRV9QUkVfTU9ESUZZX1JFRyk6IERlZmluZS4KCShIQVZFX1BPU1RfTU9ESUZZX0RJU1AsIEhBVkVfUE9TVF9NT0RJRllfUkVHKTogRGVmaW5lLgoJKEFSTV9HT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBIYW5kbGUgcHJlL3Bvc3QtbW9kaWZ5IGFkZHJlc3Nlcy4KCShBUk1fUFJJTlRfT1BFUkFORF9BRERSRVNTKTogTGlrZXdpc2UuCgoyMDAzLTAxLTE1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgZi85MjU4CgkqIGdsb2JhbC5jIChzdHJ1Y3QgYWxsb2Nubyk6IEFkZCBub19zdGFja19yZWcuCgkoZ2xvYmFsX2NvbmZsaWN0cyk6IFNldCBub19zdGFja19yZWcuCgkoZmluZF9yZWcpOiBVc2UgaXQuCgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9fcmVhbCk6IEZvbGQgLSBhbmQgYWJzIG9ubHkgd2hlbiBwcm9maXRhYmxlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGb2xkIHRydW5jYXRlcyBpbiAtIGFuZCBhYnMuCgoyMDAzLTAxLTE1ICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJU2VnaGVyIEJvZXNzZW5rb29sICA8c2VnaGVyQGtvZmZpZS5ubD4KCgkqIHByZWRpY3QuYyAocmVhbF9pbnZfYnJfcHJvYl9iYXNlKTogTmV3IHZhcmlhYmxlLgoJKHByb3BhZ2F0ZV9mcmVxKTogVXNlIG11bHRpcGx5IGJ5IHJlY2lwcm9jYWwgaW5zdGVhZCBvZgoJZGl2aXNpb24uICBEb24ndCBkaXZpZGUgYnkgMS4wIGF0IGFsbC4KCShlc3RpbWF0ZV9iYl9mcmVxdWVuY2llcyk6IFNpbWlsYXIuCgoyMDAzLTAxLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAobGliZ2NjX3Zpc2liaWxpdHkpOiBGb3JjZSBkaXNhYmxlZCBvbiBJUklYIDYgdG9vLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAzLTAxLTE1ICBIYXJ0bXV0IFBlbm5lciAgPGhwZW5uZXJAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9zYWZlX2F0dHJfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShzMzkwX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogTmV3IGZ1bmN0aW9uLCByZXR1cm4gdHJ1ZSBmb3IgejkwMC4KCShzMzkwX2lzc3VlX3JhdGUpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9hZ2VuX2RlcF9wKTogTmV3IGZ1bmN0aW9uLgoJKGFkZHJfZ2VuZXJhdGlvbl9kZXBlbmRlbmN5X3ApOiBVc2UgJ3MzOTBfc2FmZV9hdHRyX3R5cGUnLgoJKHMzOTBfYWRqdXN0X2Nvc3QpOiBSZXR1cm4gJ2Nvc3QnIGlmIG5ldyBERkEgaXMgdXNlZC4KCShzMzkwX2FkanVzdF9wcmlvcml0eSk6IERlbGV0ZSBmdW5jdGlvbi4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaDogKHMzOTBfYWdlbl9kZXBfcCk6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKGF0eXBlIGF0dHJpYnV0ZSk6IEF0dHJpYnV0ZSAnYXR5cGUnIGRlZmF1bHQKCWRldGVybWluZWQgYnkgJ29wX3R5cGUnLgoJKHR5cGUgYXR0cmlidXRlKTogQWRkZWQgbW9yZSB0eXBlIGF0dHJpYnV0ZXMuCgkqIGNvbmZpZy9zMzkwLzIwNjQubWQ6IE5ldyBERkEgZGVzY3JpcHRpb24gZm9yIHo5MDAgcGlwZWxpbmUuCgoyMDAzLTAxLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfdmVjdG9yX21vdmUpOiBWYWxpZGl6ZSBjb25zdGFudAoJZm9yY2VkIHRvIG1lbW9yeS4gIEZpeGVzIFBSIGJvb3RzdHJhcC85MDM2LgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBEZWZpbmUgc28gYXMKCXRvIHNldCAkZ3AgYmVmb3JlIHRoZSBjYWxsLgoKMjAwMy0wMS0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfbW92KTogVXNlIGNvcnJlY3QgbW9kZQoJZm9yIGZvcmNlX2NvbnN0X21lbS4KCjIwMDMtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbmF0dHIuYyAobWFpbik6IFJlYXJyYW5nZSBvdXRwdXQgdG8gYXZvaWQgcHJvdG90eXBlIHdhcm5pbmcuCgkqIGdlbmF1dG9tYXRhLmMgKHRyYW5zZm9ybV8zKTogRml4IGFtYmlndW91cy1lbHNlIHdhcm5pbmcuCgkqIGxvY2FsLWFsbG9jLmMgKHJlcXVpcmVzX2lub3V0KTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZAoJYXNzaWdubWVudCB1c2VkIGFzIHRydXRoLXZhbHVlLgoJKiB0aW1ldmFyLmM6IE1vdmUgc3lzdGVtIGluY2x1ZGVzIGFib3ZlIGxvY2FsIGluY2x1ZGVzLiAgSW5jbHVkZQoJdG9wbGV2LmgKCSogTWFrZWZpbGUuaW4gKHRpbWV2YXIubyk6IERlcGVuZCBvbiB0b3BsZXYuaC4KCjIwMDMtMDEtMTQgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvaXAyay9pcDJrLmggKFZBTElEX01BQ0hJTkVfREVDTF9BVFRSSUJVVEUpOiBSZW1vdmUuCgkoVkFMSURfTUFDSElORV9UWVBFX0FUVFJJQlVURSk6IFJlbW92ZS4KCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoaXAya19hdHRyaWJ1dGVfdGFibGUpOiBOZXcgdGFibGUgb2YKCWF0dHJpYnV0ZXMuCgkoVEFSR0VUX0FUVFJJQlVURV9UQUJMRSk6IE5ldyBtYWNyby4KCSh2YWxpZF9tYWNoaW5lX3R5cGVfYXR0cmlidXRlKTogUmVtb3ZlLgoJKHZhbGlkX21hY2hpbmVfZGVjbF9hdHRyaWJ1dGUpOiBSZW1vdmUuCgkoaXAya19oYW5kbGVfcHJvZ21lbV9hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkoaXAya19oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDMtMDEtMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvbGludXg2NC5oIChNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IpOiBSZW5hbWUKCXJlZ2lzdGVycyB0byBiZSBpbiBjb3JyZWN0IG9yZGVyLiAgQWRkIHJpcC4KCjIwMDMtMDEtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCphbmRzaTNfbHNoaWZ0cnRfOV9zYik6IE5ldy4KCSgqaW9yc2kzX2FuZF9sc2hpZnRydF85X3NiKTogTGlrZXdpc2UuCgoyMDAzLTAxLTE0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb252ZXJ0LmMgKHN0cmlwX2Zsb2F0X2V4dGVuc2lvbnMpOiAgTG9vayBmb3IgbmFycm93ZXN0IHR5cGUgaGFuZGxpbmcKCUZQIGNvbnN0YW50cy4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6ICBGb2xkIChkb3VibGUpZmxvYXQxIENNUCAoZG91YmxlKWZsb2F0MiBpbnRvCglmbG9hdDEgQ01QIGZsb2F0Mi4KCSogY29udmVydC5jIChzdHJpcF9mbG9hdF9leHRlbnNpb25zKTogTWFrZSBnbG9iYWwuCgkqIHRyZWUuaCAoc3RyaXBfZmxvYXRfZXh0ZW5zaW9ucyk6IERlY2xhcmUuCgoyMDAzLTAxLTE0ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHRpbWV2YXIuZGVmOiBkZWZpbmUgVFZfTkFNRV9MT09LVVAuCgkqIHRpbWV2YXIuYyAodGltZXZhcl9wb3ApOiBCZSB2ZXJib3NlIHdoZW4gYWJvcnRpbmcuCgoyMDAzLTAxLTEzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKCQocGFyc2VkaXIpL2dlbmd0eXBlLWxleC5jKTogRG9uJ3QgY2hhbmdlIHRvCgkkKHBhcnNlZGlyKSwganVzdCBtb3ZlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhdCB0aGUgZW5kLgoJKCQocGFyc2VkaXIpL2dlbmd0eXBlLXlhY2MuYyk6IExpa2V3aXNlLgoKMjAwMy0wMS0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBhY2xvY2FsLm00IChnY2NfQUNfUFJPR19HTkFUKTogRG9uJ3QgdHJ5IHRvIHByZXBlbmQKCSR7YWNfdG9vbF9wcmVmaXh9IHRvIEFEQUMgb3IgQ0MuICBQcm90ZWN0IHRoZW0gZnJvbSB3b3JkCglzcGxpdHRpbmcuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDMtMDEtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZy9zcGFyYy9nbW9uLXNvbDIuYyAobW9uY29udHJvbCwgbW9uc3RhcnR1cCwgX21jbGVhbnVwLAoJaW50ZXJuYWxfbWNvdW50KTogRG9uJ3QgdXNlIFBBUkFNUy4KCShtb25zdGFydHVwLCBfbWNsZWFudXAsIGludGVybmFsX21jb3VudCwgbW9uY29udHJvbCk6IENvbnZlcnQgdG8KCUlTTyBDIHN0eWxlLgoJKGludGVybmFsX21jb3VudCk6IFVzZSBfX2F0dHJpYnV0ZV9fLCBub3QgQVRUUklCVVRFX1VOVVNFRC4KCjIwMDMtMDEtMTMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEFTTV9PVVRQVVRfQUxJR05FRF9MT0NBTCk6IE91dHB1dCB0eXBlCglkaXJlY3RpdmUuCgoyMDAzLTAxLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqYW5kc2kzX2xzaGlmdF9uX3NiKTogTmV3LgoJKCppb3JzaTNfYW5kX2xzaGlmdHJ0X25fc2IpOiBMaWtld2lzZS4KCjIwMDMtMDEtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzkyNjQKCSogYy1sZXguYyAoY19sZXgpOiBTZXQgdGhlIHRva2VuIHZhbHVlIHRvIGVycm9yX21hcmtfbm9kZSBmb3IKCWludmFsaWQgbnVtZXJpYyBjb25zdGFudHMuCgoyMDAzLTAxLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXBjaC5jIChhc21fZmlsZV9zdGFydHBvcyk6IENoYW5nZSB0byBgbG9uZycuCgkocGNoX2luaXQpOiBVc2UgZnRlbGwsIG5vdCBmdGVsbG8uCgkoY19jb21tb25fd3JpdGVfcGNoKTogVXNlIGZ0ZWxsL2ZzZWVrLCBub3QgZnRlbGxvL2ZzZWVrby4KCVVzZSBgbG9uZycgaW5zdGVhZCBvZiBgb2ZmX3QnLgoJKGNfY29tbW9uX3JlYWRfcGNoKTogTGlrZXdpc2UuCgkqIGdnYy1jb21tb24uYyAoZ3RfcGNoX3NhdmUpOiBVc2UgbG9uZy9mdGVsbCBpbnN0ZWFkIG9mCglvZmZfdC9mdGVsbG8uCgoyMDAzLTAxLTEyICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciA8UkRJVl9FWFBSPik6IENvcnJlY3QgcmVjdXJzaXZlIGNhbGwgYXJncy4KCjIwMDMtMDEtMTEgIFJpY2hhcmQgRWFybnNoYXcgIChyZWFybnNoYUBhcm0uY29tKQoKCSogYXJtLXByb3Rvcy5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IEFkZCBkZWNsYXJhdGlvbi4KCjIwMDMtMDEtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvOTA2OAoJKiBpMzg2LmMgKG91dHB1dF9mcF9jb21wYXJlKTogRml4IHR5cG8uCgoyMDAzLTAxLTEwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChjb21tb25fbW9kZV9kZWZpbmVkKTogTWFyayBmb3IgUENILgoKMjAwMy0wMS0xMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2VkaXIpOiBOZXcgdmFyaWFibGUuCgkoZG9jb2JqZGlyKTogTmV3IHZhcmlhYmxlLgoJKGMtcGFyc2UubywgYy1wYXJzZS5jLCBjLXBhcnNlLnksIGdlbmd0eXBlLWxleC5vLCBnZW5ndHlwZS15YWNjLm8sCglnZW5ndHlwZS1sZXguYywgZ2VuZ3R5cGUteWFjYy5jKTogVXNlIHBhcnNlZGlyLgoJKGluZm8sIGNwcC5pbmZvLCBnY2MuaW5mbywgZ2NjaW50LmluZm8sIGdjY2luc3RhbGwuaW5mbywKCWNwcGludGVybmFscy5pbmZvLCBnZW5lcmF0ZWQtbWFucGFnZXMsIGdjb3YuMSwgY3BwLjEsIGdjYy4xLCBnZmRsLjcsCglncGwuNywgZnNmLWZ1bmRpbmcuNywgbWFpbnRhaW5lci1jbGVhbiwgaW5zdGFsbC1pbmZvLCBpbnN0YWxsLW1hbik6CglVc2UgZG9jb2JqZGlyLgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy9vYmpjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55LAoJb2JqYy5tYWludGFpbmVyLWNsZWFuKTogVXNlIHBhcnNlZGlyLgoKCSogdmFyYXNtLmMgKHN0cnVjdCBjb25zdGFudF9kZXNjcmlwdG9yX3J0eCk6IFJlbW92ZSB1bnVzZWQKCWBsYWJlbCcgZmllbGQuCgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBEb2N1bWVudCAtV2ludmFsaWQtcGNoLgoKMjAwMy0wMS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChOT19QUk9GSUxFX0NPVU5URVJTKTogU2V0LgoJKEFTTV9PVVRQVVRfUkVHX1BVU0gsIEFTTV9PVVRQVVRfUkVHX1BPUCk6IEtpbGwuCgoyMDAzLTAxLTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChtYWtlX2NvbXBvdW5kX29wZXJhdGlvbik6IFVzZSBTQ0FMQVJfSU5UX01PREVfUCwKCW5vdCBJTlRFR1JBTF9NT0RFX1Agd2hlbiB3aWRlbmluZyBleHRlbnNpb25zLgoKMjAwMy0wMS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChkZWNsX2hhc19zYW1lZ3ApOiBUcnVlIGZvciAhVFJFRV9QVUJMSUMuCgoyMDAzLTAxLTEwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdnYy1wYWdlLmMgKGdnY19jb2xsZWN0KTogQXZvaWQgb3ZlcmZsb3cgY29tcHV0aW5nCgltaW5fZXhwYW5kLgoKCSogTWFrZWZpbGUuaW4gKFJBTkxJQl9GT1JfVEFSR0VUKTogVXNlIFJBTkxJQiB3aGVuIG5hdGl2ZS4KCShSQU5MSUJfVEVTVF9GT1JfVEFSR0VUKTogRGVsZXRlLiAgRG9uJ3QgcGFzcyBkb3duIHRvIHN1Yi1tYWtlcy4KCVJlbW92ZSBjYWxscy4KCSogbWtsaWJnY2MuaW46IFJlbW92ZSB1c2VzIG9mIFJBTkxJQl9URVNUX0ZPUl9UQVJHRVQuCgoyMDAzLTAxLTEwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpZmN2dC5jIChub2NlX3RyeV9hZGRjYyk6IERvIG5vdCBjYWxsIGVtaXRfY29uZGl0aW9uYWxfYWRkCgl3aXRoIHdlaXJkIG9wZXJhbmRzLgoKMjAwMy0wMS0xMCAgRGFsZSBKb2hhbm5lc2VuIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjYWxscy5jIChsb2FkX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiAgQWRkIGlzX3NpYmNhbGwsIHNpYmNhbGxfZmFpbHVyZQoJcGFyYW1ldGVycy4gIENhbGwgY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwIGlmIGluZGljYXRlZC4KCShjaGVja19zaWJjYWxsX2FyZ3VtZW50X292ZXJsYXApOiAgQWRkIG1hcmtfc3RvcmVkX2FyZ3NfbWFwCglwYXJhbWV0ZXIuICBEb24ndCBtYXJrIHBhcmFtZXRlciBhcmVhIGFzIGNsb2JiZXJlZCBpZiBub3Qgc2V0LgoJKGV4cGFuZF9jYWxsKToJQWRqdXN0IGNhbGxzIHRvIGFib3ZlLgoKMjAwMy0wMS0xMCBLZWxsZXkgQ29vayA8a2VsbGV5Y29va0Bjb21jYXN0Lm5ldD4KCgkqIGNvbmZpZ3VyZS5pbiAobGlua2VyIHJlYWQtb25seSBhbmQgcmVhZC13cml0ZSBzZWN0aW9uIG1peGluZyk6CglTcXVlbGNoIHNvbWUgYXNzZW1ibGVyIHdhcm5pbmdzLgoJKiBjb25maWd1cmU6IExpa2V3aXNlLgoKMjAwMy0wMS0xMCAgSGFydG11dCBQZW5uZXIgIDxocGVubmVyQGRlLmlibS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1tdHVuZSwgZGVsZXRlIC1tY3B1CglvcHRpb24gZm9yIFMvMzkwIGFuZCB6U2VyaWVzLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfdHVuZV9zdHJpbmcpIE5ldyB2YXJpYWJsZS4KCShzMzkwX2NwdV9zdHJpbmcpIERlbGV0ZSB2YXJpYWJsZS4KCShvdmVycmlkZV9vcHRpb25zKTogVXNlIHMzOTBfdHVuZV9zdHJpbmcgaW5zdGVhZCBvZgoJczM5MF9jcHVfc3RyaW5nLgoJKiBjb25maWcvczM5MC9zMzkwLmg6IChUQVJHRVRfT1BUSU9OUykgJy1tdHVuZScgaW5zdGVhZCBvZiAnLW1jcHUnLgoKMjAwMy0wMS0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKmlvcnNpM19hc2hpZnRfMzEpOiBOZXcuCgoyMDAzLTAxLTEwICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBqdW1wLmMgKG5leHRfbm9ubm90ZV9pbnNuX2luX2xvb3ApOiBOZXcgZnVuY3Rpb24uCgkoY29weV9sb29wX2hlYWRlcnMpOiBVc2UgbmV4dF9ub25ub3RlX2luc25faW5fbG9vcCBpbnN0ZWFkIG9mCgluZXh0X25vbm5vdGVfaW5zbi4KCShkdXBsaWNhdGVfbG9vcF9leGl0X3Rlc3QpLiBMaWtld2lzZS4KCjIwMDMtMDEtMDkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCU1lcmdlIGZyb20gcGNoLWJyYW5jaDoKCgkyMDAzLTAxLTA2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdnYy1wYWdlLmMgKGdnY19wY2hfcmVhZCk6IFVwZGF0ZSB0aGUgc3RhdGlzdGljcyBhZnRlciBhIFBDSAoJbG9hZC4KCgkyMDAyLTEyLTI0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNwcGxpYi5jIChjb3VudF9yZWdpc3RlcmVkX3ByYWdtYXMpOiBOZXcgZnVuY3Rpb24uCgkoc2F2ZV9yZWdpc3RlcmVkX3ByYWdtYXMpOiBOZXcgZnVuY3Rpb24uCgkoX2NwcF9zYXZlX3ByYWdtYV9uYW1lcyk6IE5ldyBmdW5jdGlvbi4KCShyZXN0b3JlX3JlZ2lzdGVyZWRfcHJhZ21hcyk6IE5ldyBmdW5jdGlvbi4KCShfY3BwX3Jlc3RvcmVfcHJhZ21hX25hbWVzKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBoYXNoLmggKF9jcHBfc2F2ZV9wcmFnbWFfbmFtZXMpOiBQcm90b3R5cGUuCgkoX2NwcF9yZXN0b3JlX3ByYWdtYV9uYW1lcyk6IExpa2V3aXNlLgoJKiBjcHBwY2guYyAoc3RydWN0IHNhdmVfbWFjcm9faXRlbSk6IFNwbGl0IGZyb20gc2F2ZV9tYWNyb19kYXRhLgoJKHN0cnVjdCBzYXZlX21hY3JvX2RhdGEpOiBOZXcgZmllbGQgJ3NhdmVkX3ByYWdtYXMnLgoJKHNhdmVfbWFjcm9zKTogVXBkYXRlIGZvciBjaGFuZ2VzIHRvIHN0cnVjdCBzYXZlX21hY3JvX2RhdGEuCgkoY3BwX3ByZXBhcmVfc3RhdGUpOiBDYWxsIF9jcHBfc2F2ZV9wcmFnbWFfbmFtZXMsIHVwZGF0ZQoJZm9yIGNoYW5nZXMgdG8gc3RydWN0IHNhdmVfbWFjcm9fZGF0YS4KCShjcHBfcmVhZF9zdGF0ZSk6IENhbGwgX2NwcF9yZXN0b3JlX3ByYWdtYV9uYW1lcywgdXBkYXRlCglmb3IgY2hhbmdlcyB0byBzdHJ1Y3Qgc2F2ZV9tYWNyb19kYXRhLgoKCSogY3BwcGNoLmMgKGNwcF9yZWFkX3N0YXRlKTogUmVzdG9yZSB0aGUgaGFzaHRhYmxlIHJlZmVyZW5jZXMKCWluIHRoZSBjcHBfcmVhZGVyLgoKCSogdHJlZS5oIChidWlsdF9pbl9kZWNscyk6IE1hcmsgZm9yIFBDSC4KCgkqIGRieG91dC5jIChsYXN0ZmlsZSk6IERvbid0IG1hcmsgZm9yIFBDSC4KCgkqIGdnYy5oOiBEb2N1bWVudCBQQ0ggY2FsbHMgaW50byBtZW1vcnkgbWFuYWdlcnMuCgoJMjAwMi0xMi0xOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKFByZWNvbXBpbGVkIEhlYWRlcnMpOiBEb2N1bWVudCB0aGUKCWRpcmVjdG9yeSBmb3JtIG9mIFBDSC4KCSogY3BwZmlsZXMuYyAodmFsaWRhdGVfcGNoKTogTmV3IGZ1bmN0aW9uLgoJKG9wZW5fZmlsZV9wY2gpOiBTZWFyY2ggc3VpdGFibHktbmFtZWQgZGlyZWN0b3JpZXMgZm9yIFBDSCBmaWxlcy4KCgkyMDAyLTEyLTE0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRvYy9ndHkudGV4aSAoR1RZIE9wdGlvbnMpOiBEb2N1bWVudCBjaGFpbl9uZXh0LCBjaGFpbl9wcmV2LAoJcmVvcmRlciBvcHRpb25zLgoJKFR5cGUgSW5mb3JtYXRpb24pOiBNZW50aW9uIHRoYXQgdGhlIGluZm9ybWF0aW9uIGlzIGFsc28KCXVzZWQgdG8gaW1wbGVtZW50IFBDSC4KCSogZG9jL3Bhc3Nlcy50ZXhpIChQYXNzZXMpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YKCWxhbmd1YWdlLXNwZWNpZmljIGZpbGVzLgoKCTIwMDItMTItMTEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2VuZ3R5cGUuYyAoc3RydWN0IHdyaXRlX3R5cGVzX2RhdGEpOiBBZGQgcmVvcmRlcl9ub3RlX3JvdXRpbmUgZmllbGQuCgkoc3RydWN0IHdhbGtfdHlwZV9kYXRhKTogQWRkIHJlb3JkZXJfZm4gZmllbGQuCgkod2Fsa190eXBlKTogUHJvY2VzcyAncmVvcmRlcicgb3B0aW9uLgoJKHdyaXRlX3R5cGVzX3Byb2Nlc3NfZmllbGQpOiBSZW9yZGVyIHBhcmFtZXRlcnMgdG8gZ3RfcGNoX25vdGVfb2JqZWN0LAoJY2FsbCByZW9yZGVyX25vdGVfcm91dGluZS4KCSh3cml0ZV9mdW5jX2Zvcl9zdHJ1Y3R1cmUpOiBSZW9yZGVyIHBhcmFtZXRlcnMgdG8gZ3RfcGNoX25vdGVfb2JqZWN0LgoJKGdnY193dGQpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBzdHJ1Y3Qgd3JpdGVfdHlwZXNfZGF0YS4KCShwY2hfd3RkKTogTGlrZXdpc2UuCgkqIGdnYy5oIChndF9wY2hfbm90ZV9vYmplY3QpOiBSZW9yZGVyIHBhcmFtZXRlcnMuCgkoZ3RfaGFuZGxlX3Jlb3JkZXIpOiBOZXcgZGVmaW5pdGlvbi4KCShndF9wY2hfbm90ZV9yZW9yZGVyKTogTmV3IHByb3RvdHlwZS4KCSogZ2djLWNvbW1vbi5jIChzdHJ1Y3QgcHRyX2RhdGEpOiBBZGQgcmVvcmRlcl9mbi4KCShndF9wY2hfbm90ZV9vYmplY3QpOiBSZW9yZGVyIHBhcmFtZXRlcnMuCgkoZ3RfcGNoX25vdGVfcmVvcmRlcik6IE5ldy4KCShndF9wY2hfc2F2ZSk6IENhbGwgcmVvcmRlcl9mbi4KCSogc3RyaW5ncG9vbC5jIChndF9wY2hfbl9TKTogVXBkYXRlIGZvciBjaGFuZ2UgdG8gZ3RfcGNoX25vdGVfb2JqZWN0LgoKCSogZGJ4b3V0LmMgKGN3ZCk6IERvbid0IG1hcmsgZm9yIFBDSC4KCgkyMDAyLTEyLTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdlbmd0eXBlLmMgKGZpbmlzaF9yb290X3RhYmxlKTogRml4IHNvbWUgd2FybmluZ3MuCgkod3JpdGVfcm9vdCk6IEhhbmRsZSBUWVBFX1NUUklORy4KCSogZ2djLmggKGd0X2dnY19tX1MpOiBBZGQgcHJvdG90eXBlLgoJKiBzdHJpbmdwb29sLmMgKGd0X2dnY19tX1MpOiBOZXcgZnVuY3Rpb24uCgoJMjAwMi0xMS0zMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHcyX3N0cmluZ19jb3VudGVyKTogTmV3LgoJKEFUX3N0cmluZ19mb3JtKTogVXNlIGl0LgoJKHNhbWVfZHdfdmFsX3ApOiBVcGRhdGUgZm9yIHJlbW92YWwgb2YgaGFzaHRhYmxlLmggaGFzaCB0YWJsZXMuCgoJMjAwMi0xMS0yMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkYnhvdXQuYzogSW5jbHVkZSBndC1kYnhvdXQuaC4KCShsYXN0ZmlsZSk6IE1hcmsgZm9yIFBDSC9HR0MuCgkoY3dkKTogTGlrZXdpc2UuCgkoc3RydWN0IHR5cGVpbmZvKTogTGlrZXdpc2UuCgkodHlwZXZlYyk6IExpa2V3aXNlLgoJKHR5cGV2ZWNfbGVuKTogTGlrZXdpc2UuCgkobmV4dF90eXBlX251bWJlcik6IExpa2V3aXNlLgoJKHN0cnVjdCBkYnhfZmlsZSk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZmlsZSk6IExpa2V3aXNlLgoJKG5leHRfZmlsZV9udW1iZXIpOiBMaWtld2lzZS4KCShkYnhvdXRfaW5pdCk6IEFsbG9jYXRlIHR5cGV2ZWMsIHN0cnVjdCBkYnhfZmlsZSB3aXRoIEdHQy4KCShkYnhvdXRfc3RhcnRfc291cmNlX2ZpbGUpOiBBbGxvY2F0ZSBzdHJ1Y3QgZGJ4X2ZpbGUgd2l0aCBHR0MuCgkoZGJ4b3V0X2VuZF9zb3VyY2VfZmlsZSk6IERvbid0IGZyZWUgc3RydWN0IGRieF9maWxlLgoJKGRieG91dF90eXBlKTogVXNlIEdHQyB0byBhbGxvY2F0ZSB0eXBldmVjLgoJKiBNYWtlZmlsZS5pbiAoZGJ4b3V0Lm8pOiBEZXBlbmQgb24gZ3QtZGJ4b3V0LmgsICQoR0dDX0gpLgoJKEdURklMRVMpOiBBZGQgZGJ4b3V0LmMuCgkoZ3QtZGJ4b3V0LmgpOiBOZXcgcnVsZS4KCgkqIE1ha2VmaWxlLmluIChjLXBjaC5vKTogQWRkIGRlYnVnLmggYXMgZGVwZW5kZW5jeS4KCSogYy1wY2guYzogSW5jbHVkZSBkZWJ1Zy5oLgoJKHBjaF9pbml0KTogQ2FsbCBzdGFydF9zb3VyY2VfZmlsZSB0byBrZWVwIG5lc3RpbmcgcmlnaHQuCgkoY19jb21tb25fcmVhZF9wY2gpOiBBZGQgb3JpZ19uYW1lIHBhcmFtZXRlci4gIENhbGwKCXN0YXJ0X3NvdXJjZV9maWxlIGRlYnVnIGhvb2suICBDYWxsIGVuZF9zb3VyY2VfZmlsZSBkZWJ1ZyBob29rLgoJKiBjLWNvbW1vbi5oIChjX2NvbW1vbl9yZWFkX3BjaCk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2NhbGxiYWNrcyk6IEFkZCBmb3VydGggZmllbGQgdG8gcmVhZF9wY2gKCWNhbGxiYWNrLgoJKiBjcHBmaWxlcy5jIChzdHJ1Y3QgaW5jbHVkZV9maWxlKTogQWRkIG5ldyBmaWVsZCBgaGVhZGVyX25hbWUnLgoJKGZpbmRfb3JfY3JlYXRlX2VudHJ5KTogRGVmYXVsdCBpdCB0byBgbmFtZScuCgkob3Blbl9maWxlX3BjaCk6IFNldCBpdCB0byB0aGUgb3JpZ2luYWwgaGVhZGVyIGZpbGUgc2VhcmNoZWQgZm9yLgoJKHN0YWNrX2luY2x1ZGVfZmlsZSk6IERvbid0IHN0YWNrIGFuIGVtcHR5IGJ1ZmZlciwganVzdCBoYW5kbGUKCVBDSCBmaWxlcyBpbW1lZGlhdGVseS4gIFBhc3MgaGVhZGVyX25hbWUgZmllbGQgdG8gcmVhZF9wY2ggY2FsbGJhY2suCgoJMjAwMi0xMS0xOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBmdW5jdGlvbi5jIChmdW5jZGVmX25vKTogTWFyayB0byBiZSBzYXZlZCBpbiBhIFBDSC4KCgkyMDAyLTExLTE1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdnYy1wYWdlLmMgKGdnY19wY2hfcmVhZCk6IFJlbW92ZSB1bnVzZWQgJ2JtYXBfc2l6ZScuCgoJKiBjcHBwY2guYyAoY3BwX3JlYWRfc3RhdGUpOiBDb3JyZWN0IHNpemUgcmVhbGxvY2F0ZWQgZm9yICdkZWZuJy4KCgkyMDAyLTExLTE0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIG9wdGFicy5oIChjb2RlX3RvX29wdGFiKTogQWRkIEdUWSBtYXJrZXIuCgoJMjAwMi0xMS0xMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoR1RGSUxFUyk6IEFkZCBjcHBsaWIuaC4KCSogYy1jb21tb24uaCAoc3RydWN0IGNfY29tbW9uX2lkZW50aWZpZXIpOiBEb24ndCBza2lwICdub2RlJyBmaWVsZC4KCSogYy1kZWNsLmMgKGJ1aWxkX2NvbXBvdW5kX2xpdGVyYWwpOiBEb24ndCB1c2UgdmFyX2xhYmVsbm8uCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2hhc2hub2RlKTogVXNlIGdlbmd0eXBlIHRvIG1hcmsuCgkqIGR3YXJmMmFzbS5jIChkdzJfZm9yY2VfY29uc3RfbWVtKTogRG9uJ3QgdXNlIGNvbnN0X2xhYmVsbm8uCgkqIHZhcmFzbS5jIChjb25zdF9sYWJlbG5vKTogVXNlIGdlbmd0eXBlIHRvIG1hcmsuCgkodmFyX2xhYmVsbm8pOiBMaWtld2lzZS4KCShpbl9zZWN0aW9uKTogTGlrZXdpc2UuCgkoaW5fbmFtZWRfbmFtZSk6IExpa2V3aXNlLgoJKHN0cnVjdCBpbl9uYW1lZF9lbnRyeSk6IExpa2V3aXNlLgoJKGluX25hbWVkX2h0YWIpOiBMaWtld2lzZS4KCShzZXRfbmFtZWRfc2VjdGlvbl9mbGFncyk6IFVzZSBHR0MgdG8gYWxsb2NhdGUgc3RydWN0IGluX25hbWVkX2VudHJ5LgoJKGluaXRfdmFyYXNtX29uY2UpOiBVc2UgR0dDIHRvIGFsbG9jYXRlIGluX25hbWVkX2h0YWIuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoY3VycmVudF9waWNfbGFiZWxfbnVtKTogTWFyayBmb3IgUENILgoKCTIwMDItMTEtMTEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2djLXNpbXBsZS5jIChpbml0X2dnY19wY2gpOiBOZXcgc3R1YiBwcm9jZWR1cmUuCgkoZ2djX3BjaF9jb3VudF9vYmplY3QpOiBMaWtld2lzZS4KCShnZ2NfcGNoX3RvdGFsX3NpemUpOiBMaWtld2lzZS4KCShnZ2NfcGNoX3RoaXNfYmFzZSk6IExpa2V3aXNlLgoJKGdnY19wY2hfYWxsb2Nfb2JqZWN0KTogTGlrZXdpc2UuCgkoZ2djX3BjaF9wcmVwYXJlX3dyaXRlKTogTGlrZXdpc2UuCgkoZ2djX3BjaF93cml0ZV9vYmplY3QpOiBMaWtld2lzZQoJKGdnY19wY2hfZmluaXNoKTogTGlrZXdpc2UuCgkoZ2djX3BjaF9yZWFkKTogTGlrZXdpc2UuCgoJMjAwMi0xMS0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLXBjaC5jIChjX2NvbW1vbl93cml0ZV9wY2gpOiBXcml0ZSB0aGUgbWFjcm8gZGVmaW5pdGlvbnMgYWZ0ZXIKCXRoZSBHQ2VkIGRhdGEuCgkoY19jb21tb25fcmVhZF9wY2gpOiBDYWxsIGNwcF9wcmVwYXJlX3N0YXRlLiAgUmVzdG9yZSB0aGUgbWFjcm8KCWRlZmluaXRpb25zIGFmdGVyIHRoZSBHQ2VkIGRhdGEuCgkqIGNwcGxpYi5jIChzYXZlX21hY3Jvcyk6IE5ldy4KCShyZXNldF9odCk6IE5ldy4KCShjcHBfd3JpdGVfcGNoX2RlcHMpOiBTcGxpdCBvdXQgb2YgY3BwX3dyaXRlX3BjaC4KCShjcHBfd3JpdGVfcGNoX3N0YXRlKTogU3BsaXQgb3V0IG9mIGNwcF93cml0ZV9wY2guCgkoY3BwX3dyaXRlX3BjaCk6IERlbGV0ZS4KCShzdHJ1Y3Qgc2F2ZV9tYWNyb19kYXRhKTogRGVsZXRlLgoJKGNwcF9wcmVwYXJlX3N0YXRlKTogTmV3LgoJKGNwcF9yZWFkX3N0YXRlKTogRXJhc2UgYW5kIHJlc3RvcmUgaW5pdGlhbCBtYWNybyBkZWZpbml0aW9ucy4KCSogY3BwbGliLmggKHN0cnVjdCBzYXZlX21hY3JvX2RhdGEpOiBGb3J3YXJkLWRlY2xhcmUuCgkoY3BwX3dyaXRlX3BjaF9kZXBzKTogUHJvdG90eXBlLgoJKGNwcF93cml0ZV9wY2hfc3RhdGUpOiBQcm90b3R5cGUuCgkoY3BwX3dyaXRlX3BjaCk6IERlbGV0ZSBwcm90b3R5cGUuCgkoY3BwX3ByZXBhcmVfc3RhdGUpOiBQcm90b3R5cGUuCgkoY3BwX3JlYWRfc3RhdGUpOiBBZGQgZm91cnRoIGFyZ3VtZW50LgoKCTIwMDItMTEtMDQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2VuZ3R5cGUuYyAoYWRqdXN0X2ZpZWxkX3J0eF9kZWYpOiBEb24ndCB1c2Ugc2tpcCBvbiB2YWxpZCBmaWVsZHMuCgkod3JpdGVfYXJyYXkpOiBSZW1vdmUgd2FybmluZy4KCgkqIGdlbmd0eXBlLmMgKGNvbnRhaW5zX3NjYWxhcl9wKTogTmV3LgoJKGZpbmlzaF9yb290X3RhYmxlKTogQWRkIHRoZSB0YWJsZSB0byBhbGwgbGFuZ3VhZ2VzLCBldmVuIGlmIGl0J3MKCWVtcHR5LgoJKHdyaXRlX3Jvb3RzKTogT3V0cHV0IGd0X3BjaF9zY2FsYXJfcnRhYi4KCSogZ2djLWNvbW1vbi5jIChndF9wY2hfc2F2ZSk6IFdyaXRlIG91dCBzY2FsYXJzLgoJKGd0X3BjaF9yZXN0b3JlKTogUmVhZCBzY2FsYXJzIGJhY2suCgoJKiBnZ2MtcGFnZS5jIChPQkpFQ1RTX0lOX1BBR0UpOiBOZXcgbWFjcm8uCgkoc3RydWN0IHBhZ2VfZW50cnkpOiBEZWxldGUgcGNoX3BhZ2UgZmllbGQuCgkoZ2djX3JlY2FsY3VsYXRlX2luX3VzZV9wKTogVXNlIE9CSkVDVFNfSU5fUEFHRS4KCShjbGVhcl9tYXJrcyk6IExpa2V3aXNlLgoJKHN3ZWVwX3BhZ2VzKTogTGlrZXdpc2UuCgkocG9pc29uX3BhZ2VzKTogTGlrZXdpc2UuCgkoZ2djX3ByaW50X3N0YXRpc3RpY3MpOiBMaWtld2lzZS4KCShnZ2NfcGNoX3JlYWQpOiBEb24ndCBmcmVlIG9iamVjdHMgcmVhZCBmcm9tIGEgUENILgoJUHJvcGVybHkgc2V0IHVwIGluX3VzZV9wIGFuZCBwYWdlX3RhaWxzLgoKCTIwMDItMTAtMjUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZ2VuZ3R5cGUuYyAoc3RydWN0IHdyaXRlX3R5cGVzX2RhdGEpOiBOZXcuCgkoc3RydWN0IHdhbGtfdHlwZV9kYXRhKTogTWFrZSBgY29va2llJyBjb25zdDsgYWRkIGV4dHJhCglwcmV2X3ZhbCBpdGVtOyBhZGQgYG9yaWdfcycgZmllbGQuCgkod2Fsa190eXBlKTogVXBkYXRlIHByZXZfdmFsWzNdLgoJKHdyaXRlX3R5cGVzX3Byb2Nlc3NfZmllbGQpOiBOZXcuCgkod3JpdGVfZnVuY19mb3Jfc3RydWN0dXJlKTogVGFrZSB3cml0ZV90eXBlc19kYXRhIHN0cnVjdHVyZS4KCSh3cml0ZV90eXBlcyk6IE5ldy4KCShnZ2Nfd3RkKTogTmV3LgoJKHBjaF93dGQpOiBOZXcuCgkod3JpdGVfdHlwZXNfbG9jYWxfcHJvY2Vzc19maWVsZCk6IE5ldy4KCShnY19tYXJrX3Byb2Nlc3NfZmllbGQpOiBEZWxldGUuCgkod3JpdGVfbG9jYWxfZnVuY19mb3Jfc3RydWN0dXJlKTogTmV3LgoJKGdjX21hcmtfZnVuY19uYW1lKTogRGVsZXRlLgoJKHdyaXRlX2djX3R5cGVzKTogRGVsZXRlLgoJKHdyaXRlX2xvY2FsKTogTmV3LgoJKGZpbmlzaF9yb290X3RhYmxlKTogRG9uJ3QgaW5jbHVkZSAnZ2djXycgaW4gUEZYLgoJKHdyaXRlX3Jvb3QpOiBSZW5hbWUgZnJvbSB3cml0ZV9yb290LiAgRmlsbCBwY2h3IGZpZWxkIG9mIHN0cnVjdHVyZXMuCgkod3JpdGVfYXJyYXkpOiBOZXcuCgkod3JpdGVfcm9vdHMpOiBSZW5hbWUgZnJvbSB3cml0ZV9nY19yb290cy4gIFNwbGl0IG91dCB0byB3cml0ZV9hcnJheS4KCVVwZGF0ZSB0byBjaGFuZ2VzIHRvIG90aGVyIHJvdXRpbmVzLiAgV3JpdGUgZ3RfcGNoX2NhY2hlX3J0YWIgdGFibGUuCgkobWFpbik6IFdyaXRlIFBDSCB3YWxraW5nIHJvdXRpbmVzLgoJKiBnZ2MtY29tbW9uLmM6IEluY2x1ZGUgdG9wbGV2LmgsIHN5cy9tbWFuLmguCgkoZ2djX21hcmtfcm9vdHMpOiBGb3IgY2FjaGUgaGFzaHRhYmxlcywgYWxzbyBtYXJrIHRoZSBoYXNoIHRhYmxlCglhbmQgdGhlIGFycmF5IG9mIGVudHJpZXMuCgkoc2F2aW5nX2h0YWIpOiBOZXcuCgkoc3RydWN0IHB0cl9kYXRhKTogTmV3LgoJKFBPSU5URVJfSEFTSCk6IE5ldy4KCShndF9wY2hfbm90ZV9vYmplY3QpOiBOZXcuCgkoc2F2aW5nX2h0YWJfaGFzaCk6IE5ldy4KCShzYXZpbmdfaHRhYl9lcSk6IE5ldy4KCShzdHJ1Y3QgdHJhdmVyc2FsX3N0YXRlKTogTmV3LgoJKGNhbGxfY291bnQpOiBOZXcuCgkoY2FsbF9hbGxvYyk6IE5ldy4KCShjb21wYXJlX3B0cl9kYXRhKTogTmV3LgoJKHJlbG9jYXRlX3B0cnMpOiBOZXcuCgkod3JpdGVfcGNoX2dsb2JhbHMpOiBOZXcuCgkoc3RydWN0IG1tYXBfaW5mbyk6IE5ldy4KCShndF9wY2hfc2F2ZSk6IE5ldy4KCShndF9wY2hfcmVzdG9yZSk6IE5ldy4KCSogZ2djLXBhZ2UuYyAoUk9VTkRfVVBfVkFMVUUpOiBOZXcuCgkoUk9VTkRfVVApOiBOZXcuCgkoc3RydWN0IHBhZ2VfZW50cnkpOiBBZGQgZmllbGQgYHBjaF9wYWdlJy4KCShpbml0X2dnYyk6IFVzZSBST1VORF9VUC4KCShzdHJ1Y3QgZ2djX3BjaF9kYXRhKTogRGVjbGFyZS4KCShpbml0X2dnY19wY2gpOiBOZXcuCgkoZ2djX3BjaF9jb3VudF9vYmplY3QpOiBOZXcuCgkoZ2djX3BjaF90b3RhbF9zaXplKTogTmV3LgoJKGdnY19wY2hfdGhpc19iYXNlKTogTmV3LgoJKGdnY19wY2hfYWxsb2Nfb2JqZWN0KTogTmV3LgoJKGdnY19wY2hfcHJlcGFyZV93cml0ZSk6IE5ldy4KCShnZ2NfcGNoX3dyaXRlX29iamVjdCk6IE5ldy4KCShnZ2NfcGNoX2ZpbmlzaCk6IE5ldy4KCShnZ2NfcGNoX3JlYWQpOiBOZXcuCgkqIGdnYy5oIChndF9wb2ludGVyX29wZXJhdG9yKTogTmV3LgoJKGd0X25vdGVfcG9pbnRlcnMpOiBOZXcuCgkoZ3RfcGNoX25vdGVfb2JqZWN0KTogTmV3IHByb3RvdHlwZS4KCShndF9wb2ludGVyX3dhbGtlcik6IE5ldy4KCShzdHJ1Y3QgZ2djX3Jvb3RfdGFiKTogVXNlIGd0X3BvaW50ZXJfd2Fsa2VyLCBhZGQgYHBjaHcnIGZpZWxkLgoJKExBU1RfR0dDX1JPT1RfVEFCKTogVXBkYXRlLgoJKGd0X3BjaF9jYWNoZV9ydGFiKTogRGVjbGFyZS4KCShndF9wY2hfc2NhbGFyX3J0YWIpOiBEZWNsYXJlLgoJKHN0cnVjdCBnZ2NfY2FjaGVfdGFiKTogVXNlIGd0X3BvaW50ZXJfd2Fsa2VyLCBhZGQgYHBjaHcnIGZpZWxkLgoJKExBU1RfR0dDX0NBQ0hFX1RBQik6IFVwZGF0ZS4KCShndF9wY2hfc2F2ZV9zdHJpbmdwb29sKTogRGVjbGFyZS4KCShndF9wY2hfcmVzdG9yZV9zdHJpbmdwb29sKTogRGVjbGFyZS4KCShndF9wY2hfcF9TKTogRGVjbGFyZS4KCShndF9wY2hfbl9TKTogRGVjbGFyZS4KCShzdHJ1Y3QgZ2djX3BjaF9kYXRhKTogRm9yd2FyZC1kZWNsYXJlLgoJKGluaXRfZ2djX3BjaCk6IERlY2xhcmUuCgkoZ2djX3BjaF9jb3VudF9vYmplY3QpOiBEZWNsYXJlLgoJKGdnY19wY2hfdG90YWxfc2l6ZSk6IERlY2xhcmUuCgkoZ2djX3BjaF90aGlzX2Jhc2UpOiBEZWNsYXJlLgoJKGdnY19wY2hfYWxsb2Nfb2JqZWN0KTogRGVjbGFyZS4KCShnZ2NfcGNoX3ByZXBhcmVfd3JpdGUpOiBEZWNsYXJlLgoJKGdnY19wY2hfd3JpdGVfb2JqZWN0KTogRGVjbGFyZS4KCShnZ2NfcGNoX2ZpbmlzaCk6IERlY2xhcmUuCgkoZ2djX3BjaF9yZWFkKTogRGVjbGFyZS4KCShndF9wY2hfc2F2ZSk6IERlY2xhcmUuCgkoZ3RfcGNoX3Jlc3RvcmUpOiBEZWNsYXJlLgoJKiBmb2xkLWNvbnN0LmMgKHNpemVfaW50X3R5cGVfd2lkZSk6IEFsbG9jYXRlIHNpemVfaHRhYiB1c2luZyBHR0MuCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9vbmNlKTogQWxsb2NhdGUgY29uc3RfaW50X2h0YWIsCgljb25zdF9kb3VibGVfaHRhYiwgbWVtX2F0dHJzX2h0YWIgdXNpbmcgR0dDLgoJKiBjLXBjaC5jOiBJbmNsdWRlIGdnYy5oLgoJKHBjaF9pbml0KTogQWxsb3cgcmVhZGluZyBQQ0ggZmlsZSBiYWNrLgoJKGNfY29tbW9uX3dyaXRlX3BjaCk6IENhbGwgZ3RfcGNoX3NhdmUuCgkoY19jb21tb25fcmVhZF9wY2gpOiBDYWxsIGd0X3BjaF9yZXN0b3JlLgoJKiBjLXBhcnNlLmluIChpbml0X3Jlc3dvcmRzKTogRGVsZXRlIG5vdy11bnRydWUgY29tbWVudC4KCUFsbG9jYXRlIHJpZHBvaW50ZXJzIHVzaW5nIEdHQy4KCSogYy1vYmpjLWNvbW1vbi5jIChjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlKTogV3JpdGUgUENIIGJlZm9yZQoJY2FsbGluZyBleHBhbmRfZGVmZXJyZWRfZm5zLgoJKiBjLWNvbW1vbi5oIChyaWRwb2ludGVycyk6IE1hcmsgZm9yIEdUWSBtYWNoaW5lcnkuCgkqIE1ha2VmaWxlLmluIChzdHJpbmdwb29sLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKGMtcGNoLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKGdnYy1jb21tb24ubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIHN0cmluZ3Bvb2wuYzogSW5jbHVkZSBndC1zdHJpbmdwb29sLmguCgkoZ3RfcGNoX3BfUyk6IE5ldy4KCShndF9wY2hfbl9TKTogTmV3LgoJKHN0cnVjdCBzdHJpbmdfcG9vbF9kYXRhKTogTmV3LgoJKHNwZCk6IE5ldy4KCShndF9wY2hfc2F2ZV9zdHJpbmdwb29sKTogTmV3LgoJKGd0X3BjaF9yZXN0b3JlX3N0cmluZ3Bvb2wpOiBOZXcuCgkqIHRyZWUuYyAoaW5pdF90dHJlZSk6IE1ha2UgdHlwZV9oYXNoX3RhYmxlIGFsbG9jYXRlZCB1c2luZyBHQy4KCgkyMDAyLTEwLTA0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF9ydHhfZGVmKTogRG9uJ3QgcGFzcyBzaXplX3QgdG8gcHJpbnRmLgoJKG91dHB1dF9tYW5nbGVkX3R5cGVuYW1lKTogRG9uJ3QgcGFzcyBzaXplX3QgdG8gcHJpbnRmLgoKCSogdHJlZS5oICh1bmlvbiB0cmVlX3R5cGVfc3ltdGFiKTogQWRkIHRhZyB0byBgYWRkcmVzcycgZmllbGQuCgkodW5pb24gdHJlZV9kZWNsX3UyKTogQWRkIHRhZyB0byAnaScgZmllbGQuCgkqIHZhcmFzbS5jICh1bmlvbiBydHhfY29uc3RfdW4pOiBBZGQgdGFncyB0byBhbGwgZmllbGRzLgoJKiBnZW5ndHlwZS5jIChzdHJ1Y3Qgd2Fsa190eXBlX2RhdGEpOiBOZXcuCgkob3V0cHV0X2VzY2FwZWRfcGFyYW0pOiBUYWtlIHN0cnVjdCB3YWxrX3R5cGVfZGF0YSBwYXJhbWV0ZXIuCgkod3JpdGVfZ2Nfc3RydWN0dXJlX2ZpZWxkcyk6IERlbGV0ZS4KCSh3YWxrX3R5cGUpOiBOZXcuCgkod3JpdGVfZ2NfbWFya2VyX3JvdXRpbmVfZm9yX3N0cnVjdHVyZSk6IERlbGV0ZS4KCSh3cml0ZV9mdW5jX2Zvcl9zdHJ1Y3R1cmUpOiBOZXcuCgkoZ2NfbWFya19wcm9jZXNzX2ZpZWxkKTogTmV3LgoJKGdjX21hcmtfZnVuY19uYW1lKTogTmV3LgoJKGdjX2NvdW50ZXIpOiBEZWxldGUuCgkod3JpdGVfZ2NfdHlwZXMpOiBVc2Ugd3JpdGVfZnVuY19mb3Jfc3RydWN0dXJlLgoJKHdyaXRlX2djX3Jvb3RzKTogVXNlIHdhbGtfdHlwZS4KCgkyMDAyLTEwLTAyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdnYy1jb21tb24uYyAoZ2djX21hcmtfcm9vdHMpOiBEZWxldGUgJ3gnLgoJKGdnY19zcGxheV9kb250X2ZyZWUpOiBGaXggd2FybmluZyBhYm91dCB1bnVzZWQgJ3gnLgoJKGdnY19wcmludF9jb21tb25fc3RhdGlzdGljcyk6IFJlbW92ZSB3YXJuaW5ncy4KCgkyMDAyLTEwLTAxICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGdnYy1jb21tb24uYyAoZ2djX3NwbGF5X2FsbG9jKTogQWN0dWFsbHkgcmV0dXJuIHRoZSBhbGxvY2F0ZWQgYXJlYS4KCSogZ2VuZ3R5cGUuYyAod3JpdGVfZ2Nfc3RydWN0dXJlX2ZpZWxkcyk6IEhhbmRsZSBwYXJhbVtkaWdpdF1faXMuCgoJMjAwMi0wOS0wMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoJICAgIENhdGhlcmluZSBNb29yZSAgPGNsbUByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUgKGMtcGNoLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKExJQkNQUF9PQkpTKTogQWRkIGNwcHBjaC5vLgoJKGNwcHBjaC5vKTogTmV3LgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9pbml0KTogRG9uJ3QgY2FsbCBwY2hfaW5pdCBoZXJlLgoJKiBjLWNvbW1vbi5oIChjX2NvbW1vbl9yZWFkX3BjaCk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGMtbGV4LmMgKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBDYWxsIHBjaF9pbml0IGhlcmUuCgkqIGMtb3B0cy5jIChDT01NQU5EX0xJTkVfT1BUSU9OUyk6IEFkZCAtV2ludmFsaWQtcGNoLCAtZnBjaC1kZXBzLgoJKGNfY29tbW9uX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgdGhlbS4KCSogYy1wY2guYzogSW5jbHVkZSBjLXByYWdtYS5oLgoJKHNhdmVfYXNtX29mZnNldCk6IERlbGV0ZS4KCShwY2hfaW5pdCk6IE1vdmUgY29udGVudHMgb2Ygc2F2ZV9hc21fb2Zmc2V0IGludG8gaGVyZSwgY2FsbAoJY3BwX3NhdmVfc3RhdGUuCgkoY19jb21tb25fd3JpdGVfcGNoKTogQ2FsbCBjcHBfd3JpdGVfcGNoLgoJKGNfY29tbW9uX3ZhbGlkX3BjaCk6IFdhcm4gb25seSB3aGVuIC1XaW52YWxpZC1wY2guICBDYWxsCgljcHBfdmFsaWRfc3RhdGUuCgkoY19jb21tb25fcmVhZF9wY2gpOiBBZGQgTkFNRSBwYXJhbWV0ZXIuICBDYWxsIGNwcF9yZWFkX3N0YXRlLgoJKiBjcHBmaWxlcy5jIChzdGFja19pbmNsdWRlX2ZpbGUpOiBVcGRhdGUgZm9yIGNoYW5nZSB0bwoJcGFyYW1ldGVycyBvZiBjYi5yZWFkX3BjaC4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IEFkZCBgc2F2ZWRzdGF0ZScgZmllbGQuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBBZGQgYHdhcm5faW52YWxpZF9wY2gnIGFuZAoJYHJlc3RvcmVfcGNoX2RlcHMnIGZpZWxkcy4KCShzdHJ1Y3QgY3BwX2NhbGxiYWNrcyk6IEFkZCBOQU1FIHBhcmFtZXRlciB0byBgcmVhZF9wY2gnLgoJKGNwcF9zYXZlX3N0YXRlKTogUHJvdG90eXBlLgoJKGNwcF93cml0ZV9wY2gpOiBQcm90b3R5cGUuCgkoY3BwX3ZhbGlkX3N0YXRlKTogUHJvdG90eXBlLgoJKGNwcF9yZWFkX3N0YXRlKTogUHJvdG90eXBlLgoJKiBjcHBwY2guYzogTmV3IGZpbGUuCgkqIGZsYWdzLmggKHZlcnNpb25fZmxhZyk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIG1rZGVwcy5jIChkZXBzX3NhdmUpOiBOZXcuCgkoZGVwc19yZXN0b3JlKTogTmV3LgoJKiBta2RlcHMuaCAoZGVwc19zYXZlKTogUHJvdG90eXBlLgoJKGRlcHNfcmVzdG9yZSk6IFByb3RvdHlwZS4KCSogdG9wbGV2LmMgKGxhdGVfaW5pdF9ob29rKTogRGVsZXRlLgoJKHZlcnNpb25fZmxhZyk6IE1ha2Ugc3RhdGljIGFnYWluLgoJKGNvbXBpbGVfZmlsZSk6IERvbid0IGNhbGwgbGF0ZV9pbml0X2hvb2suCgkqIHRvcGxldi5oIChsYXRlX2luaXRfaG9vayk6IERlbGV0ZS4KCSogZG9jL2NwcG9wdHMudGV4aTogRG9jdW1lbnQgLWZwY2gtZGVwcy4KCSogZG9jL2ludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBEb2N1bWVudCAtV2ludmFsaWQtcGNoLgoKCTIwMDItMDgtMjcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGMtcGNoLmMgKGNfY29tbW9uX3dyaXRlX3BjaCk6IFJlbmFtZSBmcm9tIGNfd3JpdGVfcGNoLCBjaGFuZ2UKCWNhbGxlcnMuCgkoY19jb21tb25fdmFsaWRfcGNoKTogUmVuYW1lIGZyb20gY192YWxpZF9wY2gsIGNoYW5nZSBjYWxsZXJzLgoJKGNfY29tbW9uX3JlYWRfcGNoKTogUmVuYW1lIGZyb20gY19yZWFkX3BjaCwgY2hhbmdlIGNhbGxlcnMuCgoJKiBjLW9wdHMuYyAoQ09NTUFORF9MSU5FX09QVElPTlMpOiBBbGxvdyAtb3V0cHV0LXBjaD0gdG8gaGF2ZQoJYSBzcGFjZSBiZXR3ZWVuIGl0IGFuZCBpdHMgYXJndW1lbnQuCgoJMjAwMi0wOC0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogYy1wY2guYzogTmV3IGZpbGUuCgkqIHRvcGxldi5oIChsYXRlX2luaXRfaG9vayk6IERlY2xhcmUuCgkqIHRvcGxldi5jIChsYXRlX2luaXRfaG9vayk6IERlZmluZS4KCSh2ZXJzaW9uX2ZsYWcpOiBNYWtlIGdsb2JhbGx5IHZpc2libGUuCgkoY29tcGlsZV9maWxlKTogQ2FsbCBsYXRlX2luaXRfaG9vay4KCShpbml0X2FzbV9vdXRwdXQpOiBNYWtlIG91dHB1dCBmaWxlIHNlZWthYmxlLgoJKiBnY2MuYyAoZGVmYXVsdF9jb21waWxlcnMpOiBVcGRhdGUgYy1oZWFkZXIgcnVsZS4KCSogZmxhZ3MuaCAodmVyc2lvbl9mbGFnKTogRGVjbGFyZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfY2FsbGJhY2tzKTogQWRkICd2YWxpZF9wY2gnIGFuZCAncmVhZF9wY2gnCglmaWVsZHMuCgkqIGNwcGZpbGVzLmMgKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBBZGQgJ3BjaCcgZmllbGQuCgkoSU5DTFVERV9QQ0hfUCk6IE5ldy4KCShvcGVuX2ZpbGVfcGNoKTogTmV3LgoJKHN0YWNrX2luY2x1ZGVfZmlsZSk6IEhhbmRsZSBQQ0ggZmlsZXMgc3BlY2lhbGx5LgoJKGZpbmRfaW5jbHVkZV9maWxlKTogQ2FsbCBvcGVuX2ZpbGVfcGNoIGluc3RlYWQgb2Ygb3Blbl9maWxlLgoJKF9jcHBfcmVhZF9maWxlKTogRXhwbGFpbiB3aHkgb3Blbl9maWxlIGlzIHVzZWQgaW5zdGVhZCBvZgoJb3Blbl9maWxlX3BjaC4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2RlY29kZV9vcHRpb24pOiBDb3JyZWN0IE9QVF9fb3V0cHV0X3BjaCBjYXNlLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfb2JqY19jb21tb25fZmluaXNoX2ZpbGUpOiBDYWxsIGNfd3JpdGVfcGNoLgoJKiBjLWxleC5jIChpbml0X2NfbGV4KTogU2V0IHZhbGlkX3BjaCBhbmQgcmVhZF9wY2ggZmllbGRzCglpbiBjcHBsaWIgY2FsbGJhY2tzLgoJKiBjLWNvbW1vbi5jIChwY2hfZmlsZSk6IENvcnJlY3QgY29tbWVudC4KCShhbGxvd19wY2gpOiBEZWZpbmUuCgkoY19jb21tb25faW5pdCk6IENhbGwgcGNoX2luaXQuCgkqIGMtY29tbW9uLmggKGFsbG93X3BjaCk6IERlY2xhcmUuCgkocGNoX2luaXQpOiBEZWNsYXJlLgoJKGNfdmFsaWRfcGNoKTogRGVjbGFyZS4KCShjX3JlYWRfcGNoKTogRGVjbGFyZS4KCShjX3dyaXRlX3BjaCk6IERlY2xhcmUuCgkqIE1ha2VmaWxlLmluIChjLXBjaC5vKTogTmV3LgoJKENfQU5EX09CSkNfT0JKUyk6IEFkZCBjLXBjaC5vLgoJKiBkb2MvaW52b2tlLnRleGkgKFByZWNvbXBpbGVkIEhlYWRlcnMpOiBBZGQgaW5kZXggZW50cmllcywKCWNvbXBsZXRlIHRydW5jYXRlZCBwYXJhZ3JhcGguCgoJMjAwMi0wOC0xNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYzogKHBjaF9maWxlKTogRGVmaW5lLgoJKiBjLWNvbW1vbi5oIChwY2hfZmlsZSk6IERlY2xhcmUuCgkqIGMtb3B0cy5jIChDT01NQU5EX0xJTkVfT1BUSU9OUyk6IEFkZCAtLW91dHB1dC1wY2g9LgoJKG1pc3NpbmdfYXJnKTogUmVxdWlyZSAtLW91dHB1dC1wY2g9IHRvIGhhdmUgYW4gYXJndW1lbnQuCgkoY19jb21tb25fZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtLW91dHB1dC1wY2g9LgoJKiBnY2MuYzogRG9jdW1lbnQgbmV3ICVWLgoJKGRlZmF1bHRfY29tcGlsZXJzKTogSGFuZGxlIGNvbXBpbGluZyBDIGhlYWRlciBmaWxlcy4KCShkb19zcGVjXzEpOiBJbXBsZW1lbnQgJVYuCgkobWFpbik6IEhhbmRsZSAiZ2NjIGZvby5oIiB3aXRob3V0IHRyeWluZyB0byBydW4gbGlua2VyLgoJKiBkb2MvaW52b2tlLnRleGkgKEludm9raW5nIEdDQyk6IEFkZCBuZXcgbWVudSBpdGVtIGZvciBQQ0guCgkoT3ZlcmFsbCBPcHRpb25zKTogRG9jdW1lbnQgd2hhdCB0aGUgZHJpdmVyIGRvZXMgd2l0aCBoZWFkZXIgZmlsZXMsCglkb2N1bWVudCBuZXcgLXggb3B0aW9uIHBvc3NpYmlsaXRpZXMuCgkoSW52b2tpbmcgRysrKTogTW9yZSBkb2N1bWVudGF0aW9uIGZvciBQQ0guCgkoUHJlY29tcGlsZWQgSGVhZGVycyk6IE5ldy4KCgkyMDAyLTA4LTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBnZ2MuaDogRG9uJ3QgaW5jbHVkZSB2YXJyYXkuaC4gIFJlYXJyYW5nZSBmdW5jdGlvbnMgdG8gYmUgbW9yZQoJb3JnYW5pemVkLgoJKGdnY19hZGRfcm9vdCk6IERlbGV0ZS4KCShnZ2NfbWFya19ydHgpOiBEZWxldGUuCgkoZ2djX21hcmtfdHJlZSk6IERlbGV0ZS4KCShzdHJ1Y3QgZ2djX3N0YXRpc3RpY3MpOiBSZW1vdmUgY29udGVudHMuCgkqIGdnYy1jb21tb24uYzogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGVzLgoJKHN0cnVjdCBnZ2Nfcm9vdCk6IERlbGV0ZS4KCShyb290cyk6IERlbGV0ZS4KCShnZ2NfYWRkX3Jvb3QpOiBEZWxldGUuCgkoZ2djX21hcmtfcm9vdHMpOiBEb24ndCBtYXJrIGByb290cycuICBDYWxsIGdnY19tYXJrX3N0cmluZ3Bvb2wuCgkoZ2djX3ByaW50X2NvbW1vbl9zdGF0aXN0aWNzKTogUmVtb3ZlIG1vc3Qgb2YgdGhlIGNvbnRlbnRzLgoJKiBNYWtlZmlsZS5pbiAoR0dDX0gpOiBObyBsb25nZXIgdXNlcyB2YXJyYXkuaC4KCShnZ2MtY29tbW9uLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKGMtcGFyc2Uubyk6IEFkZCB2YXJyYXkuaCB0byBkZXBlbmRlbmNpZXMuCgkoYy1jb21tb24ubyk6IEFkZCB2YXJyYXkuaC4KCSogc3RyaW5ncG9vbC5jIChtYXJrX2lkZW50KTogVXNlIG1hbmdsZWQgbmFtZSBmb3IgdHJlZSBtYXJrZXIgcm91dGluZS4KCShtYXJrX2lkZW50X2hhc2gpOiBSZW5hbWUgdG8gZ2djX21hcmtfc3RyaW5ncG9vbC4KCShpbml0X3N0cmluZ3Bvb2wpOiBEb24ndCB1c2UgZ2djX2FkZF9yb290LgoJKiBjLXBhcnNlLmluOiBJbmNsdWRlIHZhcnJheS5oLgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIHZhcnJheS5oLgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy1hY3Qubyk6IEFkZCB2YXJyYXkuaC4KCSogb2JqYy9vYmpjLWFjdC5jOiBJbmNsdWRlIHZhcnJheS5oLgoKCTIwMDItMDctMjUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd19jZmlfb3BybmQyX2Rlc2MpOiBGaXggSVNPLW9ubHkgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCShkd19jZmlfb3BybmQxX2Rlc2MpOiBMaWtld2lzZS4KCgkyMDAyLTA3LTE3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoc3RydWN0IGFscGhhX2xpbmtzKTogVXNlIGdlbmd0eXBlIHRvIG1hcms7Cgltb3ZlIG91dCBvZiBpZmRlZi4KCShhbHBoYV9saW5rcyk6IFVzZSBnZW5ndHlwZSB0byBtYXJrOyBtb3ZlIG91dCBvZiBpZmRlZi4KCShtYXJrX2FscGhhX2xpbmtzX25vZGUpOiBEZWxldGUuCgkobWFya19hbHBoYV9saW5rcyk6IERlbGV0ZS4KCShhbHBoYV9uZWVkX2xpbmthZ2UpOiBVc2UgR0dDIHRvIGFsbG9jYXRlIHNwbGF5IHRyZWUsIHN0cnVjdAoJYWxwaGFfbGlua3MsIHN0cmluZ3MuICBEb24ndCB1c2UgZ2djX2FkZF9yb290LgoJKiBnZ2MtY29tbW9uLmMgKGdnY19zcGxheV9hbGxvYyk6IE5ldy4KCShnZ2Nfc3BsYXlfZG9udF9mcmVlKTogTmV3LgoJKiBnZ2MuaCAoZ2djX21hcmtfcnR4KTogVXBkYXRlIGZvciBjaGFuZ2VkIG5hbWUgbWFuZ2xpbmcuCgkoZ2djX21hcmtfdHJlZSk6IExpa2V3aXNlLgoJKHNwbGF5X3RyZWVfbmV3X2dnYyk6IE5ldy4KCShnZ2Nfc3BsYXlfYWxsb2MpOiBEZWNsYXJlLgoJKGdnY19zcGxheV9kb250X2ZyZWUpOiBEZWNsYXJlLgoJKiBkd2FyZjJhc20uYzogSW5jbHVkZSBndC1kd2FyZjJhc20uaC4KCShtYXJrX2luZGlyZWN0X3Bvb2xfZW50cnkpOiBEZWxldGUuCgkobWFya19pbmRpcmVjdF9wb29sKTogRGVsZXRlLgoJKGluZGlyZWN0X3Bvb2wpOiBVc2UgZ2VuZ3R5cGUgdG8gbWFyay4KCShkdzJfZm9yY2VfY29uc3RfbWVtKTogRG9uJ3QgdXNlIGdnY19hZGRfcm9vdC4KCSogTWFrZWZpbGUuaW4gKGR3YXJmMmFzbS5vKTogRGVwZW5kIG9uIGd0LWR3YXJmMmFzbS5oLgoJKEdURklMRVMpOiBBZGQgU1BMQVlfVFJFRV9ILCBkd2FyZjJhc20uYy4KCShndC1kd2FyZjJhc20uaCk6IERlcGVuZCBvbiBzLWd0eXBlLgoKCTIwMDItMDctMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCAodW5pb24gdHJlZV90eXBlX3N5bXRhYik6IE1hcmsgYGRpZScgZmllbGQuCgkqIE1ha2VmaWxlLmluIChkd2FyZjJvdXQubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIGR3YXJmMm91dC5jOiBVc2UgR0dDIHRvIGFsbG9jYXRlIGFsbCBzdHJ1Y3R1cmVzLiAgQ29udmVydCB0byBodGFiX3QKCWhhc2ggdGFibGVzLgoJKGR3X2NmaV9vcHJuZDFfZGVzYyk6IE5ldyBmdW5jdGlvbi4KCShkd19jZmlfb3BybmQyX2Rlc2MpOiBOZXcgZnVuY3Rpb24uCgkoaW5kaXJlY3Rfc3RyaW5nX2FsbG9jKTogRGVsZXRlLgoJKGRlYnVnX3N0cl9kb19oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKGRlYnVnX3N0cl9lcSk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX2xpbWJvX2RpZV9saXN0KTogRGVsZXRlLgoJKGR3YXJmMm91dF9pbml0KTogRG9uJ3QgY2FsbCBnZ2NfYWRkX3Jvb3QuCgoyMDAzLTAxLTA5ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCglUaGUgZm9sbG93aW5nIGNoYW5nZXMgYXJlIG1lcmdlZCBmcm9tIGl0YW5pdW0tc2NoZWQtYnJhbmNoOgoKCTIwMDMtMDEtMDggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGRvYy9tZC50ZXhpOiBDbGFyaWZ5IGFzc2lnbm1lbnQgb2YgdW5pdHMgdG8gYXV0b21hdGEgZGVzY3JpcHRpb24uCgoJMjAwMy0wMS0wOCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBnZW5hdXRvbWF0YS5jICh1bml0X2RlY2wpOiBSZW1vdmUgbWVtYmVycwoJYHRoZV9zYW1lX2F1dG9tYXRvbl91bml0JyBhbmQKCWB0aGVfc2FtZV9hdXRvbWF0b25fbWVzc2FnZV9yZXBvcnRlZF9wJy4KCShwcm9jZXNzX3VuaXRfdG9fZm9ybV90aGVfc2FtZV9hdXRvbWF0b25fdW5pdF9saXN0cywKCWZvcm1fdGhlX3NhbWVfYXV0b21hdG9uX3VuaXRfbGlzdHNfZnJvbV9yZWdleHAsCglmb3JtX3RoZV9zYW1lX2F1dG9tYXRvbl91bml0X2xpc3RzLCB0aGVfc2FtZV9hdXRvbWF0b25fbGlzdHMpOgoJUmVtb3ZlIHRoZW0uCgkoYW5ub3RhdGlvbl9tZXNzYWdlX3JlcG9ydGVkX3ApOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGNoZWNrX3VuaXRfZGlzdHJpYnV0aW9uX2luX3Jlc2VydiwKCWNoZWNrX3JlZ2V4cF91bml0c19kaXN0cmlidXRpb24pOiBOZXcgZnVuY3Rpb25zLgoJKGNoZWNrX3VuaXRfZGlzdHJpYnV0aW9uc190b19hdXRvbWF0YSk6IFJld3JpdGUgaXQuCgoJMjAwMy0wMS0wNCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBnZW5hdXRvbWF0YS5jIChmb3JtX3RoZV9zYW1lX2F1dG9tYXRvbl91bml0X2xpc3RzX2Zyb21fcmVnZXhwKToKCVVzZSBjb250aW51ZSBpbnN0ZWFkIG9mIGJyZWFrIGlmIGN5Y2xlIGlzIHRvbyBiaWcuCgoJMjAwMi0xMi0yMCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBnZW5hdXRvbWF0YS5jIChjaGVja191bml0X2Rpc3RyaWJ1dGlvbnNfdG9fYXV0b21hdGEpOiBPdXRwdXQgYXQKCW1vc3Qgb25lIG1lc3NhZ2UgZm9yIGEgdW5pdC4KCShwcm9jZXNzX3VuaXRfdG9fZm9ybV90aGVfc2FtZV9hdXRvbWF0b25fdW5pdF9saXN0cyk6IENoZWNrCglhdXRvbWF0b24gb2YgdW5pdHMgaW5zdGVhZCBvZiB1bml0cyB0aGVtc2VsZi4KCgkqIGRvYy9tZC50ZXhpOiBEZXNjcmliZSB0aGUgY29uc3RyYWludCBhYm91dCBhc3NpZ25pbmcgdW5pdCB0bwoJYXV0b21hdGEuCgoJMjAwMi0xMi0yMCAgSmFuIEh1Ymlja2EgIDxqSEBzdXNlLmN6PgoJCSAgICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGdlbmF1dG9tYXRhLmMgKHVuaXRfZGVjbCk6IEFkZCBuZXcgbWVtYmVycyBgbWluX29jY19jeWNsZV9udW0nCglhbmQgYGluX3NldF9wJy4KCShnZW5fY3B1X3VuaXQpOiBJbml0aWFsaXplIHRoZSBuZXcgbWVtYmVycy4KCShwcm9jZXNzX3JlZ2V4cF9jeWNsZXMpOiBDYWxjdWxhdGUgbWluaW1hbCBmaW5pc2ggY3ljbGUgdG9vLiAgU2V0Cgl1cCBgbWluX29jY19jeWNsZV9udW0nLgoJKGV2YWx1YXRlX21heF9yZXNlcnZfY3ljbGVzKTogQ2hhbmdlIHRoZSBmdW5jdGlvbiBjYWxsLgoJKENMRUFSX0JJVCk6IE5ldyBtYWNyby4KCShzdGF0ZXNfdW5pb24sIHN0YXRlX3NoaWZ0KTogVXNlIHRoZSBtYXNrLgoJKGluaXRpYXRlX2V4Y2xfc2V0cywgZm9ybV9yZXNlcnZfc2V0c19saXN0KTogU2V0IHVwIGBpbl9zZXRfcCcuCgkoZm9ybV9yZXNlcnZzX21hdHRlcik6IE5ldyBmdW5jdGlvbi4KCShtYWtlX2F1dG9tYXRvbik6IENhbGwgdGhlIGZ1bmN0aW9uIGFuZCB1c2UgdGhlIG1hc2suCgkoZXN0aW1hdGVfb25lX2F1dG9tYXRvbl9ib3VuZCk6IFRha2UgYG1pbl9vY2NfY3ljbGVfbnVtJyBpbnRvCglhY2NvdW50LgoKCTIwMDItMTItMTcgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaXRhbml1bTIubWQgKGxmZXRjaCk6IENoYW5nZSB0aGUgaW5zbiByZXNlcnZhdGlvbi4KCgkyMDAyLTEyLTE3ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoYnVuZGxpbmcpOiBUcnkgdG8gaW5zZXJ0IDIgbm9wcyBmb3IgTSBpbnNuCglmb3IgSXRhbml1bS4KCgkyMDAyLTEyLTE3ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9vdmVycmlkZV9vcHRpb25zKTogTWFrZSBpdGFuaXVtMiBhcwoJZGVmYXVsdCBjcHUuCgoJMjAwMi0xMi0xNyAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgkJMjAwMi0xMC0zMSAgRGFsZSBKb2hhbm5lc2VuIDxkYWxlakBhcHBsZS5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChmaW5kX3NldF9yZWdfd2VpZ2h0KTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfaW5zbl9yZWdfd2VpZ2h0KTogVXNlIHRoZSBuZXcgZnVuY3Rpb24uCgkoc2NoZWR1bGVfYmxvY2spOiBEbyBzb3J0aW5nIHJlYWR5IHF1ZXVlIGFsd2F5cwoJYWZ0ZXIgaW5zbiBpc3N1ZS4KCgkyMDAyLTExLTI3ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoYnVuZGxpbmcpOiBVc2UgTUZJIHRlbXBsYXRlIGluc3RlYWQgb2YgTUxYLgoKCTIwMDItMTEtMTkgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoY2hvaWNlX2VudHJ5KTogTmV3IHN0cnVjdHVyZS4KCShjaG9pY2Vfc3RhY2ssIGN5Y2xlX2lzc3VlZF9pbnNucyk6IE5ldyB2YXJpYWJsZXMuCgkobWF4X2lzc3VlKTogUmV3cml0ZSBpdC4KCShjaG9vc2VfcmVhZHkpOiBTZXQgdXAgcmVhZHlfdHJ5IGZvciB1bmtub3duIGluc25zIHRvby4KCShzY2hlZHVsZV9ibG9jayk6IEFsbG9jYXRlIGFuZCBmcmVlIGNob2ljZV9zdGFjay4gIFNldCB1cAoJYW5kIG1vZGlmeSBjeWNsZV9pc3N1ZWRfaW5zbnMuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlzc3VlX25vcHNfYW5kX2luc24pOiBDb21iaW5lIGluc24gaXNzdWUKCXdpdGggYW5kIHdpdGhvdXQgZmlsbGluZyB0aGUgYnVuZGxlLgoJKGJ1bmRsaW5nKTogQ29tYmluZSBjYWxscyBvZiBpc3N1ZV9ub3BzX2FuZF9pbnNuLgoKCTIwMDItMTAtMTcgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaXRhbml1bTEubWQ6IE5ldyBmaWxlLgoKCSogY29uZmlnL2lhNjQvaXRhbml1bTIubWQ6IE5ldyBmaWxlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZDogTW92ZSBERkEgZGVzY3JpcHRpb25zIGludG8gdGhlIG5ldyBmaWxlcy4KCVJlbW92ZSB0aGUgb2xkIHBpcGVsaW5lIGRlc2NyaXB0aW9uLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X292ZXJyaWRlX29wdGlvbnMpOiBBZGQgYWxpYXNlcyBvZgoJaXRhbml1bSBwcm9jZXNzb3IgbmFtZXMuCgoJMjAwMi0xMC0xNiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGJ1bmRsaW5nKTogUHJpbnQgc3RhdGVzIGZvciBJdGFuaXVtMiB0b28uCgkoaWE2NF9yZW9yZyk6ICBTZXQgdXAgcXVlcmllZCB1bml0IGNvZGVzIGZvciBJdGFuaXVtMiB0b28uCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBBZGQgZGVzY3JpcHRpb25zIGZvciBJdGFuaXVtMi4KCgkyMDAyLTEwLTA4ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAocHJvY2Vzc29yX3R5cGUpOiBOZXcgZW51bWVyYXRpb24uCgkoaWE2NF90dW5lLCBpYTY0X3R1bmVfc3RyaW5nKTogTmV3IGV4dGVybmFsIGRlY2xhcmF0aW9ucy4KCShUQVJHRVRfT1BUSU9OUyk6IEFkZCBvcHRpb24gYHR1bmU9Jy4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF90dW5lLCBpYTY0X3R1bmVfc3RyaW5nKTogTmV3IGdsb2JhbAoJdmFyaWFibGVzLgoJKGlhNjRfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCB1cCBgaWE2NF90dW5lJy4KCShpYTY0X3NjaGVkX3Jlb3JkZXIyKTogU2V0IHVwIGBjbG9ja3MnIG9ubHkgZm9yIEl0YW5pdW0uCgkoaWE2NF9kZmFfbmV3X2N5Y2xlKTogU2V0IHVwIGBhZGRfY3ljbGVzJyBvbmx5IGZvciBJdGFuaXVtLgoJKGJ1bmRsaW5nKTogQWRkIG5vcHMgZm9yIE1NLWluc25zIG9ubHkgZm9yIEl0YW5pdW0uCgkoaWE2NF9yZW9yZyk6IEFsbG9jYXRlIGFuZCBmcmVlIGBjbG9ja3MnIGFuZCBgYWRkX2N5Y2xlcycgb25seSBmb3IKCUl0YW5pdW0uCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChjcHUpOiBOZXcgYXR0cmlidXRlLgoJKERGQSBkZXNjcmlwdGlvbik6IEVuYWJsZSBpdCBvbmx5IGZvciBJdGFuaXVtLgoKCTIwMDItMTAtMDggIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoJCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChNQVNLX1RVTkVfU1RPUF9CSVRTKTogUmVuYW1lIGl0IHRvCglNQVNLX0VBUkxZX1NUT1BfQklUUy4KCShUQVJHRVRfVFVORV9TVE9QX0JJVFMpOiBSZW5hbWUgaXQgdG8gVEFSR0VUX0VBUkxZX1NUT1BfQklUUy4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW5hbWUgb3B0aW9uIGB0dW5lLXN0b3AtYml0cycgdG8KCWBlYXJseS1zdG9wLWJpdHMnLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2RmYV9uZXdfY3ljbGUsCglmaW5hbF9lbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBVc2UgVEFSR0VUX0VBUkxZX1NUT1BfQklUUwoJaW5zdGVhZCBvZiBUQVJHRVRfVFVORV9TVE9QX0JJVFMuCgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbmFtZSBvcHRpb24gYC1tdHVuZS1zdG9wLWJpdHMnIHRvCglgLW1lYXJseS1zdG9wLWJpdHMnLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChhdXRvbWF0YV9vcHRpb24gInYiKTogQ29tbWVudCBpdC4KCgkyMDAyLTEwLTA3ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoTUFTS19UVU5FX1NUT1BfQklUUywgVEFSR0VUX1RVTkVfU1RPUF9CSVRTKToKCU5ldyBtYWNyb3MuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIGVudHJpZXMgZm9yIHRoZSBuZXcgb3B0aW9uLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChkZmFfc3RvcF9pbnNuLCBsYXN0X3NjaGVkdWxlZF9pbnNuLCBydHgKCWRmYV9wcmVfY3ljbGVfaW5zbiwgaWE2NF9ub3ApOiBEb24ndCBtYWtlIHRoZW0gYXMgcm9vdHMgZm9yIEdDLgoJKHN0b3BzX3AsIHN0b3BfYmVmb3JlX3AsIGNsb2Nrc19sZW5ndGgsIGNsb2NrcywgYWRkX2N5Y2xlcyk6IE5ldwoJZ2xvYmFsIHZhcmlhYmxlcy4KCShpYTY0X3NjaGVkX3Jlb3JkZXIyKTogU2V0IHVwIGBjbG9ja3MnLgoJKGlhNjRfdmFyaWFibGVfaXNzdWUpOiBTZXQgdXAgYHN0b3BzX3AnIGFuZCByZXNldCBgc3RvcF9iZWZvcmVfcCcuCgkoaWE2NF9kZmFfbmV3X2N5Y2xlKTogU2V0IHVwIGFkZF9jeWNsZS4gIFBlcm1pdCBzb3J0aW5nIHJlYWR5CglxdWV1ZSB3aGVuIFRBUkdFVF9UVU5FX1NUT1BfQklUUy4KCShidW5kbGluZyk6IEluc2VydCBhZGRpdGlvbmFsIG5vcHMgZm9yIE1NLWluc25zLgoJKGZpbmFsX2VtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IEFkZCBpbnNlcnRpb24gb2Ygc3RvcCBiaXRzCglhY2NvcmRpbmcgYHN0b3BzX3AnLgoJKGlhNjRfcmVvcmcpOiBJbml0aWF0ZSB0aGUgbmV3IHZhcmliYWxlcy4KCgkqIGRvYy9pbnZva2UudGV4aTogQWRkIGRlc2NyaXB0aW9uIG9mIG9wdGlvbiBgLW10dW5lLXN0b3AtYml0cycuCgoJMjAwMi0xMC0wMiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9ibG9jayk6IE1vZGlmeSBJTlNOX1RJQ0sgb2YgZGVwZW5kZWQKCWluc25zIGF0IHRoZSBlbmQgb2YgYmxvY2sgaW5zbiBzY2hlZHVsaW5nLgoKCTIwMDItMDktMzAgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogc2NoZWQtZGVwcy5jIChyZW1vdmVfZGVwZW5kZW5jZSwgZ3JvdXBfbGVhZGVyKTogUmVtb3ZlIGl0LgoJKGFkZF9kZXBlbmRlbmNlKTogQWRkIGRlcGVuZGVuY2UgdG8gZ3JvdXAgbGVhZGVyIHRvLgoJKHNldF9zY2hlZF9ncm91cF9wKTogQWRkIGRlcGVuZGVuY2UgdG8gdGhlIGZpcnN0IGluc24gb2YgdGhlCglzY2hlZHVsZSBncm91cCB0b28uCgkoc2NoZWRfYW5hbHl6ZV9pbnNuKTogTWFrZSBkZXBlbmRlbmNlIHRvIGp1bXAgYXMgYW50aS1kZXBlbmRlbmNlLgoJQ2hhbmdlIHRydWUgZGVwZW5kZW5jZSBieSBhbnRpLWRlcGVuZGVuY2Ugd2hlbgoJYHJlZ19wZW5kaW5nX2JhcnJpZXInLgoKCSogc2NoZWQtcmduLmMgKGluaXRfcmVhZHlfbGlzdCwgY2FuX3NjaGVkdWxlX3JlYWR5X3AsCglhZGRfYnJhbmNoX2RlcGVuZGVuY2VzKTogSWdub3JlIHNjaGVkdWxlIGdyb3Vwcy4KCgkqIHNjaGVkLWViYi5jIChpbml0X3JlYWR5X2xpc3QpOiBEaXR0by4KCgkqIChtb3ZlX2luc24sIHNldF9wcmlvcml0aWVzKTogRGl0dG8uCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfc2NoZWRfaW5pdCk6IENoZWNrIHRoYXQgc2NoZWR1bGUgZ3JvdXAKCWZsYWcgaXMgY2xlYXIgYWZ0ZXIgcmVsb2FkLgoJKGFkanVzdF9jb3N0KTogQ2hhbmdlIGNvc3Qgb25seSBmb3Igb3V0cHV0IGRlcGVuZGVuY2llcy4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQ6IEFkZCBtb3JlIGluc25zIGludG8gYnlwYXNzIGZvciBNTS1pbnNucy4KCgkyMDAyLTA5LTI2ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChzY2hlZC1lYmIubyk6IEFkZCBgJChUQVJHRVRfSCknIHRvIHRoZSBlbnRyeS4KCgkqIHRhcmdldC5oIChnY2NfdGFyZ2V0KTogQWRkIG1lbWJlcgoJYGRlcGVuZGVuY2llc19ldmFsdWF0aW9uX2hvb2snLgoKCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfU0NIRURfREVQRU5ERU5DSUVTX0VWQUxVQVRJT05fSE9PSyk6IE5ldwoJbWFjcm8uCgkoVEFSR0VUX1NDSEVEKTogQWRkIGluaXRpYXRpYWxpemF0aW9uIG9mIHRoZSBuZXcgbWVtYmVyLgoKCSogc2NoZWQtZWJiLmM6IEluY2x1ZGUgYHRhcmdldC5oJy4KCShzY2hlZHVsZV9lYmIpOiBDYWxsIGBkZXBlbmRlbmNpZXNfZXZhbHVhdGlvbl9ob29rJy4KCgkqIHNjaGVkLXJnbi5jIChzY2hlZHVsZV9yZWdpb24pOiBDYWxsCglgZGVwZW5kZW5jaWVzX2V2YWx1YXRpb25faG9vaycuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKFRBUkdFVF9TQ0hFRF9ERVBFTkRFTkNJRVNfRVZBTFVBVElPTl9IT09LKToKCU5ldyBtYWNyby4KCShpYTY0X2RlcGVuZGVuY2llc19ldmFsdWF0aW9uX2hvb2spOiBOZXcgZnVuY3Rpb24uCgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1NDSEVEX0RFUEVOREVOQ0lFU19FVkFMVUFUSU9OX0hPT0spOgoJRGVzY3JpYmUgdGhlIG5ldyBob29rLgoKCTIwMDItMDktMjUgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogdGFyZ2V0LmggKGdjY190YXJnZXQpOiBBZGQgbWVtYmVycwoJYGZpcnN0X2N5Y2xlX211bHRpcGFzc19kZmFfbG9va2FoZWFkX2d1YXJkJyBhbmQgYGRmYV9uZXdfY3ljbGUnLgoKCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfU0NIRURfREZBX05FV19DWUNMRSwKCVRBUkdFVF9TQ0hFRF9GSVJTVF9DWUNMRV9NVUxUSVBBU1NfREZBX0xPT0tBSEVBRF9HVUFSRCk6IE5ldwoJbWFjcm9zLgoJKFRBUkdFVF9TQ0hFRCk6IEFkZCBpbml0aWF0aWFsaXphdGlvbiBvZiB0aGUgbmV3IG1lbWJlcnMuCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNuKTogVXBkYXRlIGxhc3RfY2xvY2tfdmFyIGZvciB0aGUgMXN0CglpbnNuIHNjaGVkdWxpbmcgdG9vLgoJKGNob29zZV9yZWFkeSk6IFVzZSBgZmlyc3RfY3ljbGVfbXVsdGlwYXNzX2RmYV9sb29rYWhlYWRfZ3VhcmQnIHRvCglpbml0aWFsaXplIGByZWFkeV90cnknLgoJKHNjaGVkdWxlX2Jsb2NrKTogVXNlIGBkZmFfbmV3X2N5Y2xlJy4gIFNvcnQgYHJlYWR5JyBvbmx5IHVubGVzcwoJYGRmYV9uZXdfY3ljbGUnIHNheXMgbm90IHRvIGRvIGl0LgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZDogQWRkIERGQSBJdGFuaXVtIDEgZGVzY3JpcHRpb24gZm9yIGluc24KCWJ1bmRsaW5nLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChDUFVfVU5JVFNfUVVFUlkpOiBOZXcgbWFjcm8uCgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IEluY2x1ZGUgYGhhc2h0YWIuaCcuCgkoaWE2NF9maXJzdF9jeWNsZV9tdWx0aXBhc3NfZGZhX2xvb2thaGVhZF9ndWFyZCwKCWlhNjRfZGZhX25ld19jeWNsZSwgZmluYWxfZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzLAoJaWE2NF9kZmFfc2NoZWRfcmVvcmRlciwgZ2V0X2ZyZWVfYnVuZGxlX3N0YXRlLCBmcmVlX2J1bmRsZV9zdGF0ZSwKCWluaXRpYXRlX2J1bmRsZV9zdGF0ZXMsIGZpbmlzaF9idW5kbGVfc3RhdGVzLCBidW5kbGVfc3RhdGVfaGFzaCwKCWJ1bmRsZV9zdGF0ZV9lcV9wLCBpbnNlcnRfYnVuZGxlX3N0YXRlLAoJaW5pdGlhdGVfYnVuZGxlX3N0YXRlX3RhYmxlLCBmaW5pc2hfYnVuZGxlX3N0YXRlX3RhYmxlLAoJdHJ5X2lzc3VlX25vcHMsIHRyeV9pc3N1ZV9pbnNuLCBpc3N1ZV9ub3BzX2FuZF9pbnNuLCBnZXRfbWF4X3BvcywKCWdldF90ZW1wbGF0ZSwgZ2V0X25leHRfaW1wb3J0YW50X2luc24sIGJ1bmRsaW5nKTogTmV3IGZ1bmN0aW9ucy4KCShpYTY0X2ludGVybmFsX3NjaGVkX3Jlb3JkZXIpOiBSZW1vdmUgaXQuCgkoVEFSR0VUX1NDSEVEX0ZJUlNUX0NZQ0xFX01VTFRJUEFTU19ERkFfTE9PS0FIRUFEX0dVQVJELAoJVEFSR0VUX1NDSEVEX0RGQV9ORVdfQ1lDTEUpOiBOZXcgbWFjcm9zLgoJKGlhNjRfc2FmZV9pdGFuaXVtX3JlcXVpcmVzX3VuaXQwKTogUmVtb3ZlIGl0LgoJKGdyb3VwX2JhcnJpZXJfbmVlZGVkX3ApOiBQbGFjZSBncm91cCBiYXJyaWVyIHJpZ2h0IGJlZm9yZSBhIHJlYWwKCWluc24uCgkoYnVuZGxlLCBpYTY0X3BhY2tldCwgTlJfUEFDS0VUUywgdHlwZV9uYW1lcywgcGFja2V0cywgcGFja2V0cyk6CglSZW1vdmUgdGhlbS4KCShidW5kbGVfbmFtZSk6IE5ldyB2YXJpYWJsZS4KCShfMG1paV8sIF8wbW1pXywgXzBtZmlfLCBfMG1tZl8sIF8wYmJiXywgXzBtYmJfLCBfMG1pYl8sIF8wbW1iXywKCV8wbWZiXywgXzBtbHhfLCBfMW1paV8sIF8xbW1pXywgXzFtZmlfLCBfMW1tZl8sIF8xYmJiXywgXzFtYmJfLAoJXzFtaWJfLCBfMW1tYl8sIF8xbWZiXywgXzFtbHhfLCBwb3NfMSwgcG9zXzIsIHBvc18zLCBwb3NfNCwgcG9zXzUsCglwb3NfNiwgZGZhX3N0b3BfaW5zbiwgbGFzdF9zY2hlZHVsZWRfaW5zbiwgZGZhX3N0YXRlX3NpemUsCgl0ZW1wX2RmYV9zdGF0ZSwgcHJldl9jeWNsZV9zdGF0ZSk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKGluc25fbWF0Y2hlc19zbG90LCBtYXliZV9yb3RhdGUsIGZpbmlzaF9sYXN0X2hlYWQsCglyb3RhdGVfb25lX2J1bmRsZSwgcm90YXRlX29uZV9idW5kbGVzLCBub3BfY3ljbGVzX3VudGlsLAoJY3ljbGVfZW5kX2ZpbGxfc2xvdHMsIHBhY2tldF9tYXRjaGVzX3AsIGdldF9zcGxpdCwgZmluZF9iZXN0X2luc24sCglmaW5kX2Jlc3RfcGFja2V0LCBpdGFuaXVtX3Jlb3JkZXIsIGR1bXBfY3VycmVudF9wYWNrZXQsCglzY2hlZHVsZV9zdG9wLCBnZW5fbm9wX3R5cGUsIGlhNjRfZW1pdF9ub3BzKTogUmVtb3ZlIHRoZW0uCgkoc2NoZWRfZGF0YSwgc2NoZWRfcmVhZHksIHNjaGVkX3R5cGVzKTogUmVtb3ZlIHRoZW0uCgkoaWE2NF9zY2hlZF9pbml0KTogSW5pdGlhdGUgb25seSBgbGFzdF9zY2hlZHVsZWRfaW5zbicgYW5kIGNhbGwKCWBpbml0X2luc25fZ3JvdXBfYmFycmllcnMnLgoJKGlhNjRfc2NoZWRfcmVvcmRlciwgaWE2NF9zY2hlZF9yZW9yZGVyMik6IENhbGwKCWlhNjRfZGZhX3NjaGVkX3Jlb3JkZXIuCgkoaWE2NF92YXJpYWJsZV9pc3N1ZSk6IFJld3JpdGUgaXQuCgkoYnVuZGxlX3N0YXRlKTogTmV3IHN0cnVjdHVyZS4KCShpbmRleF90b19idW5kbGVfc3RhdGVzLCBidW5kbGVfc3RhdGVzX251bSwKCWFsbG9jYXRlZF9idW5kbGVfc3RhdGVzX2NoYWluLCBmcmVlX2J1bmRsZV9zdGF0ZV9jaGFpbik6IE5ldwoJZ2xvYmFsIHZhcmlhYmxlcy4KCShpYTY0X3NjaGVkX2ZpbmlzaCk6IEFkZCBzdG9wIGJpdHMgYW5kIGNhbGwgYGJ1bmRsaW5nJyBhZnRlciB0aGUKCTJuZCBpbnNuIHNjaGVkdWxpbmcuCgkoaWE2NF91c2VfZGZhX3BpcGVsaW5lX2ludGVyZmFjZSk6IFJldHVybiB6ZXJvIGFsd2F5cy4KCShpYTY0X2ZpcnN0X2N5Y2xlX211bHRpcGFzc19kZmFfbG9va2FoZWFkKTogUmV0dXJuIDYgZm9yIHRoZSAybmQKCWluc24gc2NoZWR1bGluZy4KCShpYTY0X2luaXRfZGZhX3ByZV9jeWNsZV9pbnNuKTogSW5pdGlhbGl6ZSBgZGZhX3N0YXRlX3NpemUnLAoJYHRlbXBfZGZhX3N0YXRlJywgYHByZXZfY3ljbGVfc3RhdGUnLCBhbmQgYGRmYV9zdG9wX2luc24nLgoJKGlhNjRfcmVvcmcpOiBBZGQgYnVuZGxpbmcgaW5zbnMuCgoJKiBkb2MvdG0udGV4aQoJKFRBUkdFVF9TQ0hFRF9GSVJTVF9DWUNMRV9NVUxUSVBBU1NfREZBX0xPT0tBSEVBRF9HVUFSRCwKCVRBUkdFVF9TQ0hFRF9ERkFfTkVXX0NZQ0xFKTogRGVzY3JpYmUgdGhlIG5ldyBob29rcy4KCgkyMDAyLTA5LTIzICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQ6IEFkZCBJdGFuaXVtMSBERkEgZGVzY3JpcHRpb24uCgkoaXRhbml1bV9jbGFzcyk6IEFkZCBgbm9wJyBhbmQgYHByZV9jeWNsZScuICBBZGQKCWRlZmluZV9mdW5jdGlvbl91bml0IGZvciBgbm9wJy4KCShub3ApOiBDaGFuZ2UgYXR0cmlidXRlIGBpdGFuaXVtX2NsYXNzJy4KCShwcmVfY3ljbGUpOiBOZXcgZGVmaW5lX2luc24uCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChidW5kbGluZ19wKTogTmV3IGV4dGVybmFsIHZhcmlhYmxlLgoJKGlhNjRfc3RfYWRkcmVzc19ieXBhc3NfcCwgaWE2NF9sZF9hZGRyZXNzX2J5cGFzc19wLAoJaWE2NF9wcm9kdWNlX2FkZHJlc3NfcCk6IE5ldyBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChidW5kbGluZ19wKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShpYTY0X3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlLAoJaWE2NF9maXJzdF9jeWNsZV9tdWx0aXBhc3NfZGZhX2xvb2thaGVhZCwKCWlhNjRfaW5pdF9kZmFfcHJlX2N5Y2xlX2luc24sIGlhNjRfZGZhX3ByZV9jeWNsZV9pbnNuKTogTmV3CglmdW5jdGlvbnMuCgkoVEFSR0VUX1NDSEVEX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFLAoJVEFSR0VUX1NDSEVEX0ZJUlNUX0NZQ0xFX01VTFRJUEFTU19ERkFfTE9PS0FIRUFELAoJVEFSR0VUX1NDSEVEX0lOSVRfREZBX1BSRV9DWUNMRV9JTlNOLAoJVEFSR0VUX1NDSEVEX0RGQV9QUkVfQ1lDTEVfSU5TTik6IE5ldyBtYWNyb3MuCgkoaWE2NF9zY2hlZF9pbml0LCBpYTY0X3NjaGVkX3Jlb3JkZXIsIGlhNjRfc2NoZWRfcmVvcmRlcjIsCglpYTY0X3ZhcmlhYmxlX2lzc3VlLCBpYTY0X3NjaGVkX2ZpbmlzaCk6IERvIG5vdGhpbmcgYmVmb3JlIHJlbG9hZC4KCShkZmFfcHJlX2N5Y2xlX2luc24pOiBOZXcgdmFyaWFibGUuCgoJMjAwMi0wOS0yMCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBydGwuZGVmIChGSU5BTF9QUkVTRU5DRV9TRVQsIEZJTkFMX0FCU0VOQ0VfU0VUKTogTmV3Cgljb25zdHJ1Y3Rpb25zLgoKCSogZ2VuYXR0cnRhYi5oIChnZW5fZmluYWxfcHJlc2VuY2Vfc2V0LCBnZW5fZmluYWxfYWJzZW5jZV9zZXQpOgoJTmV3IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBnZW5hdHRydGFiLmMgKG1haW4pOiBQcm9jZXNzIHRoZSBuZXcgY29uc3RydWN0aW9ucy4KCgkqIGdlbmF1dG9tYXRhLmMgKGdlbl9wcmVzZW5jZV9hYnNlbmNlX3NldCwKCXByb2Nlc3NfcHJlc2VuY2VfYWJzZW5jZV9uYW1lcywgcHJvY2Vzc19wcmVzZW5jZV9hYnNlbmNlX3BhdHRlcm5zLAoJYWRkX3ByZXNlbmNlX2Fic2VuY2UsIGNoZWNrX2Fic2VuY2VfcGF0dGVybl9zZXRzKTogQWRkIHBhcmFtZXRlcgoJYGZpbmFsX3AnLgoJKHVuaXRfZGVjbCk6IEFkZCBuZXcgbWVtYmVycyBgZmluYWxfcHJlc2VuY2VfbGlzdCcgYW5kCglgZmluYWxfYWJzZW5jZV9saXN0Jy4KCSh1bml0X3BhdHRlcm5fcmVsX2RlY2wpOiBBZGQgbmV3IG1lbWJlciBgZmluYWxfcCcuCgkoZ2VuX2ZpbmFsX3ByZXNlbmNlX3NldCwgZ2VuX2ZpbmFsX2Fic2VuY2Vfc2V0KTogTmV3IGZ1bmN0aW9ucy4KCShwcm9jZXNzX2RlY2xzKTogVXNlIG1lbWJlciBgZmluYWxfcCcuCgkodGVtcF9yZXNlcnYpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKHJlc2Vydl9zZXRzX2FyZV9pbnRlcnNlY3RlZCk6IEFkZCBwcm9jZXNzaW5nIGBmaW5hbF9wcmVzZW5jZV9zZXQnCglhbmQgYGZpbmFsX2Fic2VuY2Vfc2V0Jy4KCShpbml0aWF0ZV9zdGF0ZXMpOiBBbGxvY2F0ZSBgdGVtcF9yZXNlcnYnLgoJKHVuaXRfZmluYWxfcHJlc2VuY2Vfc2V0X3RhYmxlLCB1bml0X2ZpbmFsX2Fic2VuY2Vfc2V0X3RhYmxlKTogTmV3CglnbG9hYmFsIHZhcmlhYmxlcy4KCShpbml0aWF0ZV9wcmVzZW5jZV9hYnNlbmNlX3BhdHRlcm5fc2V0cyk6IEluaXRpYXRlIHRoZW0uCgkoTkRGQV90b19ERkEpOiBGaXggdHlwby4KCShvdXRwdXRfZGVzY3JpcHRpb24pOiBPdXRwdXQgYGZpbmFsX3ByZXNlbmNlX3NldCcgYW5kCglgZmluYWxfYWJzZW5jZV9zZXQnLgoKCSogZG9jL21kLnRleGkgKGZpbmFsX3ByZXNlbmNlX3NldCwgZmluYWxfYWJzZW5jZV9zZXQpOiBEZXNjcmliZQoJdGhlbS4KCgkyMDAyLTA5LTIwICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KCgkqIGdlbmF1dG9tYXRhLmMgKHRyYW5zZm9ybV8zKTogUHJvY2VzcyBhIG1pc3NpbmcgY2FzZSAobm90aGluZyBvbgoJdW5pdCBwbGFjZSkuCgoJMjAwMi0wOS0yMCAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBydGwuZGVmIChERUZJTkVfUVVFUllfQ1BVX1VOSVQsIEFVVE9NQVRBX09QVElPTik6IENoYW5nZQoJY29tbWVudHMgYWJvdXQgcXVlcmllZCB1bml0cyBhbmQgdGhlIG1pbmltaXphdGlvbi4KCgkqIGRvYy9tZC50ZXhpOiBEaXR0by4KCgkqIGdlbmF1dG9tYXRhLmMgKGNyZWF0ZV9jb21wb3NlZF9zdGF0ZSk6IFJldHVybiBub256ZXJvIGlmIHRoZSBuZXcKCXN0YXRlIGhhcyBiZWVuIGNyZWF0ZWQuCgkoZmlyc3RfY3ljbGVfdW5pdF9wcmVzZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShzdGF0ZV9pc19kaWZmZXJlZCk6IEFkZCBuZXcgcGFyYW1ldGVyLiAgVXNlIHRoZSBuZXcgZnVuY3Rpb24uCglUYWtlIHF1ZXJpZWQgdW5pdHMgaW50byBhY2NvdW50LgoJKHBhcnRpdGlvbl9lcXVpdl9jbGFzcyk6IFBhc3MgYWRkaXRpb25hbCBwYXJhbWV0ZXIgdG8KCWBzdGF0ZV9pc19kaWZmZXJlZCcuCgkobWVyZ2Vfc3RhdGVzKTogUHJvY2VzcyBjb21wb3NlZCBzdGF0ZXMgdG9vLgoJKGJ1aWxkX2F1dG9tYXRvbiwgY3JlYXRlX2F1dG9tYXRhLCBvdXRwdXRfbWluX2lzc3VlX2RlbGF5X3RhYmxlLAoJb3V0cHV0X3RhYmxlcywgb3V0cHV0X3N0YXRpc3RpY3MpOiBPdXRwdXQgbW9yZSBpbmZvcm1hdGlvbi4KCShvdXRwdXRfcmVzZXJ2ZWRfdW5pdHNfdGFibGUpOiBVc2UgZnVuY3Rpb24KCWBmaXJzdF9jeWNsZV91bml0X3ByZXNlbmNlJy4KCShvdXRwdXRfdGFibGVzKTogT3V0cHV0IHRhYmxlIG9mIHF1ZXJpZWQgdW5pdHMgZXZlbiBpZiB0aGUKCW1pbmltaXphdGlvbiBpcyBzd2l0Y2hlZCBvbi4KCSh3cml0ZV9hdXRvbWF0YSk6IE91dHB1dCBjb2RlIGZvciBxdWVyeWluZyB1bml0cyBldmVuIGlmIHRoZQoJbWluaW1pemF0aW9uIGlzIHN3aXRjaGVkIG9uLgoKCTIwMDItMDktMTkgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogcnRsLmRlZiAoUFJFU0VOQ0VfU0VULCBBQlNFTkNFX1NFVCk6IEFkZCBjb21tZW50cyBhYm91dCBleHRlbmRlZAoJc3ludGF4IG9mIHRoZSBjb25zdHJ1Y3Rpb25zLgoKCSogZG9jL21kLnRleGkgKFBSRVNFTkNFX1NFVCwgQUJTRU5DRV9TRVQpOiBBZGQgZGVzY3JpcHRpb24gb2YKCWV4dGVuZGVkIHN5bnRheCBvZiB0aGUgY29uc3RydWN0aW9ucy4KCgkqIGdlbmF1dG9tYXRhLmMgKHVuaXRfcmVsX2RlY2wpOiBSZW5hbWUgaXQgdG8KCWB1bml0X3BhdHRlcm5fcmVsX2RlY2wnLgoJKHBhdHRlcm5fc2V0X2VsLCBwYXR0ZXJuX3Jlc2Vydik6IE5ldyBzdHJ1Y3R1cmVzLgoJKHBhdHRlcm5fc2V0X2VsX3QsIHBhdHRlcm5fcmVzZXJ2X3QpOiBOZXcgdHlwZXMuCgkoZ2VuX3ByZXNlbmNlX2Fic2VuY2Vfc2V0KTogTmV3IGZ1bmN0aW9uLgoJKHByb2Nlc3NfcHJlc2VuY2VfYWJzZW5jZSk6IFJlbW92ZSBpdC4KCShwcm9jZXNzX3ByZXNlbmNlX2Fic2VuY2VfbmFtZXMsCglwcm9jZXNzX3ByZXNlbmNlX2Fic2VuY2VfcGF0dGVybnMpOiBOZXcgZnVuY3Rpb25zLgoJKGdldF9wcmVzZW5jZV9hYnNlbmNlX3NldCk6IFJlbW92ZSBpdC4KCShpbml0aWF0ZV9wcmVzZW5jZV9hYnNlbmNlX3NldHMpOiBSZW5hbWUgaXQgb24KCWBpbml0aWF0ZV9wcmVzZW5jZV9hYnNlbmNlX3BhdHRlcm5fc2V0cycuICBVc2UgbmV3IGZ1bmN0aW9uCglgZm9ybV9yZXNlcnZfc2V0c19saXN0Jy4KCShmb3JtX3Jlc2Vydl9zZXRzX2xpc3QsIGNoZWNrX3ByZXNlbmNlX3BhdHRlcm5fc2V0cywKCWNoZWNrX2Fic2VuY2VfcGF0dGVybl9zZXRzLCBvdXRwdXRfcGF0dGVybl9zZXRfZWxfbGlzdCk6IE5ldwoJZnVuY3Rpb25zLgoJKHVuaXRfZGVjbCk6IENoYW5nZSB0eXBlcyBvZiBtZW1iZXJzIGBwcmVzZW5jZV9saXN0JyBhbmQKCWBhYnNlbmNlX2xpc3QnLgoJKHVuaXRfcmVsX2RlY2wpOiBSZW5hbWUgbWVtYmVyIGBuYW1lc19udW0nIHRvIGBhbGxfbmFtZXNfbnVtJy4KCShkZWNsKTogQ2hhbmdlIHR5cGVzIG9mIG1lbWJlcnMgYGV4Y2wnLCBgcHJlc2VuY2UnLCBhbmQgYGFic2VuY2UnLgoJKGdldF9zdHJfdmVjdCk6IFJlbmFtZSBgcGFyX2ZsYWcnIHRvIGBwYXJlbl9wJy4gIEFkZCBudWxsIGVsZW1lbnQKCWF0IHRoZSBlbmQgb2YgdGhlIHZlY3Rvci4KCShnZW5fY3B1X3VuaXQsIGdlbl9xdWVyeV9jcHVfdW5pdCwgZ2VuX2J5cGFzcywgZ2VuX2V4Y2xfc2V0LAoJZ2VuX2F1dG9tYXRvbiwgZ2VuX3JlZ2V4cF9yZXBlYXQsIGdlbl9yZWdleHBfYWxsb2YsCglnZW5fcmVnZXhwX29uZW9mLCBnZW5fcmVnZXhwX3NlcXVlbmNlKTogVXNlIGJvb2xlYW4gdmFsdWVzLgoJKGdlbl9wcmVzZW5jZV9zZXQsIGdlbl9hYnNlbmNlX3NldCk6IFVzZSBuZXcgZnVuY3Rpb24KCWBnZW5fcHJlc2VuY2VfYWJzZW5jZV9zZXQnLgoJKGFkZF9wcmVzZW5jZV9hYnNlbmNlKTogUHJvY2VzcyBgcGF0dGVybl9saXN0JyBpbnN0ZWFkIG9mCglgc291cmNlX2xpc3QnLgoJKHByb2Nlc3NfZGVjbHMpOiBVU2UgbmV3IGZ1bmN0aW9ucwoJYHByb2Nlc3NfcHJlc2VuY2VfYWJzZW5jZV9uYW1lcycgYW5kCglgcHJvY2Vzc19wcmVzZW5jZV9hYnNlbmNlX3BhdHRlcm5zJy4KCShyZXNlcnZfc2V0c19hcmVfaW50ZXJzZWN0ZWQpOiBVc2UgbmV3IGZ1bmN0aW9uCglgY2hlY2tfcHJlc2VuY2VfcGF0dGVybl9zZXRzJy4KCShwcmVzZW5jZV9zZXQsIGFic2VuY2Vfc2V0KTogUmVtb3ZlIHRoZW0uCgkodW5pdF9wcmVzZW5jZV9zZXRfdGFibGUsIHVuaXRfYWJzZW5jZV9zZXRfdGFibGUpOiBOZXcgZ2xvYmFsCgl2YXJpYWJsZXMuCgkob3V0cHV0X2Rlc2NyaXB0aW9uKTogVXNlIG5ldyBmdW5jdGlvbgoJYG91dHB1dF9wYXR0ZXJuX3NldF9lbF9saXN0Jy4KCShnZW5lcmF0ZSk6IFVzZSBgaW5pdGlhdGVfcHJlc2VuY2VfYWJzZW5jZV9wYXR0ZXJuX3NldHMnLgoKCTIwMDItMDktMTggIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogZ2VuYXR0ci5jIChtYWluKTogQWRkIG91dHB1dCBvZiBwcm90b3R5cGUgb2YgbmV3IGludGVyZmFjZQoJZnVuY3Rpb24gYGRmYV9jbGVhbl9pbnNuX2NhY2hlJy4KCgkqIGdlbmF1dG9tYXRhLmMgKG91dHB1dF9kZmFfY2xlYW5faW5zbl9jYWNoZV9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKERGQV9DTEVBTl9JTlNOX0NBQ0hFX0ZVTkNfTkFNRSk6IE5ldyBtYWNyby4KCShvdXRwdXRfZGZhX3N0YXJ0X2Z1bmMpOiBVc2UgZnVuY3Rpb24gYGRmYV9jbGVhbl9pbnNuX2NhY2hlJyBpbgoJdGhlIGdlbmVyYXRlZCBjb2RlLgoJKHdyaXRlX2F1dG9tYXRhKTogQ2FsbCB0aGUgbmV3IGZ1bmN0aW9uLgoKMjAwMy0wMS0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAodW5pdCwgcHJlZml4XzBmLCBtZW1vcnkgYXR0cmlidXRlcyk6IEhhbmxkZSBzc2VpY3Z0Cgljb3JyZWN0bHkuCgoyMDAzLTAxLTA5ICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAdW5pdHVzLml0PgoKCSogZG9jL3RtLnRleGkgKEVYVFJBX0FERFJFU1NfQ09OU1RSQUlOVCk6IEZpeCB0eXBvLgoKMjAwMy0wMS0wOSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBkZWZhdWx0cy5oIChFWFRSQV9NRU1PUllfQ09OU1RSQUlOVCk6IEFkZCBTVFIgYXJndW1lbnQuCgkoRVhUUkFfQUREUkVTU19DT05TVFJBSU5UKTogTGlrZXdpc2UuCgkoQ09OU1RSQUlOVF9MRU4pOiBQcm92aWRlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShDT05TVF9PS19GT1JfQ09OU1RSQUlOVF9QKTogTGlrZXdpc2UuCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9DT05TVFJBSU5UX1ApOiBMaWtld2lzZS4KCShFWFRSQV9DT05TVFJBSU5UX1NUUik6IExpa2V3aXNlLgoJKFJFR19DTEFTU19GUk9NX0NPTlNUUkFJTlQpOiBEZWZpbmUuCgkqIGdlbm91dHB1dC5jIChjaGVja19jb25zdHJhaW50X2xlbiwgY29uc3RyYWludF9sZW4pOiBOZXcgZnVuY3Rpb25zLgoJKHZhbGlkYXRlX2luc25fYWx0ZXJuYXRpdmVzKTogQ2hlY2sgQ09OU1RSQUlOVF9MRU4gZm9yIGVhY2gKCWNvbnN0cmFpbnQgLyBtb2RpZmllci4KCShnZW5faW5zbik6IENhbGwgY2hlY2tfY29uc3RyYWludF9sZW4uCgkqIGxvY2FsLWFsbG9jLmMgKGJsb2NrX2FsbG9jKTogVXBkYXRlIHRvIHVzZSBuZXcgbWFjcm9zIC8gcGFzcwoJc2Vjb25kIGFyZ3VtZW50IHRvIEVYVFJBX3tNRU1PUlksQUREUkVTU31fQ09OU1RSQUlOVC4KCSogcmEtYnVpbGQuYyAoaGFuZGxlX2FzbV9pbnNuKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKGFzbV9vcGVyYW5kX29rLCBwcmVwcm9jZXNzX2NvbnN0cmFpbnRzKTogTGlrZXdpc2UuCgkoY29uc3RyYWluX29wZXJhbmRzLCBwZWVwMl9maW5kX2ZyZWVfcmVnaXN0ZXIpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAocmVjb3JkX29wZXJhbmRfY29zdHMsIHJlY29yZF9yZWdfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmMgKGZpbmRfbWF0Y2hlcyk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAocHVzaF9zZWNvbmRhcnlfcmVsb2FkLCBmaW5kX3JlbG9hZHMpOiBMaWtld2lzZS4KCShhbHRlcm5hdGl2ZV9hbGxvd3NfbWVtY29uc3QpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChtYXliZV9maXhfc3RhY2tfYXNtcyk6IExpa2V3aXNlLgoJKHJlbG9hZF9jc2Vfc2ltcGxpZnlfb3BlcmFuZHMpOiBMaWtld2lzZS4KCSogc3RtdC5jIChwYXJzZV9vdXRwdXRfY29uc3RyYWludCwgcGFyc2VfaW5wdXRfY29uc3RyYWludCk6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aSAoQ09OU1RSQUlOVF9MRU4sIFJFR19DTEFTU19GUk9NX0NPTlNUUkFJTlQpOiBEb2N1bWVudC4KCShDT05TVF9PS19GT1JfQ09OU1RSQUlOVF9QKTogTGlrZXdpc2UuCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9DT05TVFJBSU5UX1AsIEVYVFJBX0NPTlNUUkFJTlRfU1RSKTogTGlrZXdpc2UuCgkoRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQsIEVYVFJBX0FERFJFU1NfQ09OU1RSQUlOVCk6IEFkZCBTVFIgYXJndW1lbnQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQpOiBMaWtld2lzZS4KCgkqIHNoLmggKE9WRVJSSURFX09QVElPTlMpOiBBbGxvdyBmaXJzdCBzY2hlZHVsaW5nIHBhc3MgZm9yIFNINS4KCjIwMDMtMDEtMDkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpleHR6dl8xX3JfaDgzMDApOiBDb3JyZWN0IHRoZSBpbnNuCglsZW5ndGguCgkoKmV4dHp2XzFfcl9oODMwMGhzKTogTGlrZXdpc2UuCgkoKmV4dHp2XzFfcl9pbnZfaDgzMDApOiBMaWtld2lzZS4KCSgqZXh0enZfMV9yX2ludl9oODMwMGhzKTogTGlrZXdpc2UuCgoyMDAzLTAxLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKFBSRURJQ0FURV9DT0RFUyk6IE5ldy4KCjIwMDMtMDEtMDkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCphZGRzaTNfdXBwZXIpOiBOZXcuCgkoKmlvcnNpM19zaGlmdCk6IExpa2V3aXNlLgoJKHR3byBzcGxpdHRlcnMpOiBMaWtld2lzZS4KCSgqYWRkc2kzX3NoaWZ0KTogTGlrZXdpc2UuCgkodHdvIHNwbGl0dGVycyk6IExpa2V3aXNlLgoKMjAwMy0wMS0wOSAgSm9zZWYgWmxvbWVrICA8emxvbWo5YW1AYXJ0YXgua2FybGluLm1mZi5jdW5pLmN6PgoKCSogTWFrZWZpbGUuaW4gKG9wdGFicy5vKTogQWRkIGRlcGVuZGVuY3kgb24gYmFzaWMtYmxvY2suaC4KCSogYmFzaWMtYmxvY2suaCAoY29udHJvbF9mbG93X2luc25fcCk6IEZ1Y3Rpb24gd2FzIGV4cG9ydGVkLgoJKiBjZmdidWlsZC5jIChjb250cm9sX2Zsb3dfaW5zbl9wKTogRnVjdGlvbiB3YXMgbWFkZSBub24tc3RhdGljLgoJKiBvcHRhYnMuYyAoZW1pdF9saWJjYWxsX2Jsb2NrKTogRW1pdCBSRUdfTElCQ0FMTCBhbmQgUkVHX1JFVFZBTAoJbm90ZXMgb25seSB3aGVuIHRoZSByZWdpb24gaXMgY29udGFpbmVkIGluIGEgc2luZ2xlIGJhc2ljIGJsb2NrLgoKMjAwMy0wMS0wOSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBpbmxpbmUtYXNtLzg4MzIKCSogdHJlZS5oIChleHBhbmRfYXNtKTogTmV3IHByb3RvdHlwZS4KCSogc3RtdC5jIChleHBhbmRfYXNtKTogU2V0IHRoZSBNRU1fVk9MQVRJTEVfUCBmbGFnIGlmIGluc3RydWN0ZWQKCXRvIGRvIHNvLgoJKiBjLXNlbWFudGljcyAoZ2VucnRsX2FzbV9zdG10KTogUGFzcyB0aGUgUklEX1ZPTEFUSUxFIHF1YWxpZmllcgoJZG93biB0byBleHBhbmRfYXNtLgoJKiBjLXR5cGVjay5jIChzaW1wbGVfYXNtX3N0bXQpOiBTZXQgdGhlIFJJRF9WT0xBVElMRSBxdWFsaWZpZXIuCgkqIHJ0bGFuYWwuYyAodm9sYXRpbGVfaW5zbl9wKSBbQVNNX0lOUFVUXTogVGVzdCB0aGUgTUVNX1ZPTEFUSUxFX1AgZmxhZy4KCSh2b2xhdGlsZV9yZWZzX3ApIFtBU01fSU5QVVRdOiBMaWtld2lzZS4KCShzaWRlX2VmZmVjdHNfcCkgW0FTTV9JTlBVVF06IExpa2V3aXNlLgoKMjAwMy0wMS0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoKm11bCopOiBGSXggY29uc3RyYWludHM7IHJlbW92ZSBjb25mdXNlZCBjb21tZW50OyBmaXgKCWF0aGxvbl9kZWNvZGUgYXR0cmlidXRlcwoJKGltdWwvazggb3B0aW1pemF0aW9uIHBlZXAycyk6IE5ldy4KCgkqIGF0aGxvbi5tZCAoYXRobG9uX3NzZWNtcCopOiBIYW5kbGUgc3NlY29taSBhcyB3ZWxsLgoJKiBpMzg2Lm1kICh0eXBlIGF0dHJpYnV0ZSk6IEFkZCBzc2Vjb21pLgoJKHVuaXQsIG1lbW9yeSwgcHJlZml4IGF0dHJpYnV0ZXMpOiBIYW5kbGUgc3NlY29taS4KCShjdnQ/Mj8gcGF0dGVybnMpOiBGaXggYXRobG9uX2RlY29kZSBhdHRyaWJ1dGUKCShjb21pIHBhdHRlcm5zKTogU2V0IGF0dHJpYnV0ZSB0byBzc2Vjb21pLgoKCVBSIHRhcmdldC84MzQzCgkqIG02OGsubWQgKHVtdWxzaWRpLCBtdWxzaWRpIGV4cGFuZGVycyk6IFVzZSByZWdpc3RlciBvcGVyYW5kLgoKMjAwMy0wMS0wOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgQUREUkVTU09GIGZvciBwcmVkaWNhdGVzCgl0aGF0IG1hdGNoIHJlZ2lzdGVyX29wZXJhbmRzLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKHJlZ19vcl8wX29wZXJhbmQsIHRydWVfcmVnX29yXzBfb3BlcmFuZCk6IE1ha2UKCXJlZ2lzdGVyX29wZXJhbmQgdGhlIGRlZmF1bHQgY2FzZS4KCjIwMDMtMDEtMDkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgYy84MDMyCgkqIGMtdHlwZWNrLmMgKHByb2Nlc3NfaW5pdF9lbGVtZW50KSBbUkVDT1JEX1RZUEVdOiBGb3IKCWFuIGVtcHR5IGVsZW1lbnQsIGRvIG5vdCBhZHZhbmNlIHRoZSBwb2ludGVyIHRvIHVuZmlsbGVkCglmaWVsZHMgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaW5pdGlhbGl6ZXJzLgoKMjAwMy0wMS0wOSAgQ2hyaXN0aWFuIENvcm5lbHNzZW4gIDxjY29ybkBjcy50dS1iZXJsaW4uZGU+CgoJKiBNYWtlZmlsZS5pbiAoT1JESU5BUllfRkxBR1NfVE9fUEFTUyk6IEFsc28gcGFzcyBERVNURElSLgoJKGluc3RhbGwtZ2NjLXRvb2xkaXIsIGluc3RhbGwtY3BwLCBpbnN0YWxsZGlycywKCWluc3RhbGwtY29tbW9uLCBpbnN0YWxsLWRyaXZlciwgaW5zdGFsbC1pbmZvLCBpbnN0YWxsLW1hbiwKCWluc3RhbGwtaGVhZGVycywgaW5zdGFsbC1pbmNsdWRlLWRpciwgaW5zdGFsbC1oZWFkZXJzLXRhciwKCWluc3RhbGwtaGVhZGVycy1jcGlvLCBpbnN0YWxsLWhlYWRlcnMtY3AsIGluc3RhbGwtbWtoZWFkZXJzLAoJaW5zdGFsbC1jb2xsZWN0MiwgdW5pbnN0YWxsKTogUHJlcGVuZCAkKERFU1RESVIpIHRvCglkZXN0aW5hdGlvbiBwYXRocyBpbiBhbGwgKHVuKWluc3RhbGxhdGlvbiBjb21tYW5kcy4KCShpbnN0YWxsLWRyaXZlcik6IFJld3JpdGUgJChMTikgY29tbWFuZHMgdG8gc3VwcG9ydCBERVNURElSCgl3aXRoICJsbiIgYXMgd2VsbCBhcyB3aXRoICJsbiAtcyIuCgkoaW5zdGFsbGRpcnMpOiBTaW1wbHkgdXNlIG1raW5zdGFsbGRpcnMuCgkoaW5zdGFsbC1saWJnY2MsIGluc3RhbGwtbXVsdGlsaWIpOiBBbHNvIHBhc3MgREVTVERJUi4KCSogbWtsaWJnY2MuaW46IFByZXBlbmQgJChERVNURElSKSB0byAkKGxpYnN1YmRpcikgaW4gdGhlCglpbnN0YWxsYXRpb24gZGVzdGluYXRpb24gdmFyaWFibGUgbGRpci4KCSogY29uZmlnL2FscGhhL3Qtb3NmNCwgY29uZmlnL2FybS90LW5ldGJzZCwKCWNvbmZpZy9pYTY0L3QtaHB1eCwgY29uZmlnL21pcHMvdC1pcmlzNS02LAoJY29uZmlnL3BhL3QtaHB1eC1zaGxpYiwgY29uZmlnL3JzNjAwMC90LWFpeDQzLAoJY29uZmlnL3JzNjAwMC90LWFpeDUyLCBjb25maWcvdC1zbGliZ2NjLWVsZi12ZXIsCgljb25maWcvdC1zbGliZ2NjLXNsZDogUHJlcGVuZCAkJChERVNURElSKSB0byAkJChzbGliZGlyKQoJaW4gdGhlIGRlZmluaXRpb24gb2YgU0hMSUJfSU5TVEFMTC4KCSogY29uZmlnL2FyYy90LWFyYyAoaW5zdGFsbC1tdWx0aWxpYi1hcmMpOiBQcmVwZW5kICQoREVTVERJUikgdG8KCSQobGlic3ViZGlyKSBpbiB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmRzLgoKMjAwMy0wMS0wOCAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2guaCAoQ0FTRV9WRUNUT1JfTU9ERSk6IFVzZSBTSW1vZGUgZm9yIGEKCW5vbi1vcHRpbWl6aW5nIGNvbXBpbGUuCgkoQVNNX09VVFBVVF9BRERSX1ZFQ19FTFQpOiBVc2UgLmxvbmcgZm9yIGEgbm9uLW9wdGltaXppbmcKCWNvbXBpbGUuCgoyMDAzLTAxLTA4ICBEb3VnbGFzIEIgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYXR0cmlidXRlX3RhYmxlKTogQWRkIG5ldyBhdHRyaWJ1dGVzCgltc19zdHJ1Y3QgYW5kIGdjY19zdHJ1Y3QuCgkoaXg4Nl9oYW5kbGVfc3RydWN0X2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShpeDg2X21zX2JpdGZpZWxkX2xheW91dF9wKTogVXBkYXRlIHRvIHRha2UgbmV3IGF0dHJpYnV0ZXMKCWludG8gYWNjb3VudC4KCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBuZXcgYXR0cmlidXRlcy4KCSogdGVzdHN1aXRlL2djYy5kZy9iZi1tcy1hdHRyaWIuYzogTmV3IHRlc3QuCgoyMDAzLTAxLTA4ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIG9wdGltaXphdGlvbi84NzUwCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBEb24ndCBhbGxvdwoJc2NoZWR1bGluZyBwYXNzIHRvIG1vdmUgaW5zbnMgYWNyb3NzIF9fYWxsb2NhIGNhbGwuCgoyMDAzLTAxLTA4ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogIFJlcGxhY2UgKnN0b3JlX211bHRpcGxlX3N0cmluZwoJd2l0aCAqc3Rtc2lbMy04XS4KCjIwMDMtMDEtMDggIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCglQUiB0YXJnZXQvOTIxMAoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZWxmX2VuY29kZV9zZWN0aW9uX2luZm8pOgoJU2V0IFNZTUJPTF9SRUZfRkxBRyBvbiBsb2NhbCBkYXRhIHN5bV9yZWYuCgoyMDAzLTAxLTA4ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiAgRG9uJ3Qgc2V0IHByZXRlbmRfYXJnc19zaXplIGlmCgkgIFJFR19QQVJNX1NUQUNLX1NQQUNFLgoJICBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzZXR1cF9pbmNvbWluZ192YXJhcmdzKTogIERvbid0IHNldAoJICBwcmV0ZW5kX2FyZ3Nfc2l6ZS4KCjIwMDMtMDEtMDggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZ2NjLmhscDogRGVsZXRlLgoKMjAwMy0wMS0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jICAoaXg4Nl9leHBhbmRfaW50X2FkZGNjKTogRml4IHRoaW5rby4KCjIwMDMtMDEtMDggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEZVTkNUSU9OX01PREUpOiBBbHdheXMgdXNlIFNJbW9kZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoVEFSR0VUX0FTTV9DQU5fT1VUUFVUX01JX1RIVU5LKTogUmVkZWZpbmUKCWFzIGhvb2tfYm9vbF90cmVlX2h3aV9od2lfdHJlZV90cnVlLgoJKHJzNjAwMF9lbWl0X2FsbG9jYXRlX3N0YWNrKTogVXNlIFRBUkdFVF8zMkJJVC4KCShyczYwMDBfZW1pdF9lcGlsb2d1ZSk6IFNhbWUuCgkocnM2MDAwX291dHB1dF9taV90aHVuayk6IFJlLWltcGxlbWVudCBhcyBSVEwuCgkqIGNvbmZpZy9yczYwMDAveGNvZmYuaCAoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IENhbGwKCXhjb2Zmb3V0X2RlY2xhcmVfZnVuY3Rpb24gaWYgYW55IGRlYnVnZ2luZyBlbmFibGVkLgoKMjAwMy0wMS0wOCAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHNpc2EzMnIyLSotZWxmKiwgbWlwc2lzYTMycjJlbC0qLWVsZiopOiBOZXcKCXRhcmdldHMsIHRvIHN1cHBvcnQgTUlQUzMyIFJlbGVhc2UgMiAoTUlQUzMyUjIpIGNvbmZpZ3VyYXRpb25zLgoJKiBjb25maWcvbWlwcy9taXBzLmggKGVudW0gcHJvY2Vzc29yX3R5cGUpOiBSZW5hbWUKCVBST0NFU1NPUl9SNEtDIHRvIFBST0NFU1NPUl80S0MsIFBST0NFU1NPUl9SNUtDIHRvCglQUk9DRVNTT1JfNUtDLCBhbmQgUFJPQ0VTU09SX1IyMEtDIHRvIFBST0NFU1NPUl8yMEtDLgoJQWRkIFBST0NFU1NPUl9NNEsuCgkoVEFSR0VUX01JUFM0S0MsIFRBUkdFVF9NSVBTNUtDKTogVXBkYXRlIGZvciB0aGUgcmVuYW1pbmcuCgkoSVNBX01JUFMzMlIyKTogTmV3IGRlZmluZS4KCShHRU5FUkFURV9NVUxUM19TSSwgSVNBX0hBU19DT05ETU9WRSwgSVNBX0hBU184Q0MpCgkoSVNBX0hBU19NQUREX01TVUIsIElTQV9IQVNfQ0xaX0NMTykKCShJU0FfSEFTX1BSRUZFVENIKTogQWRkIHN1cHBvcnQgZm9yIE1JUFMzMlIyLgoJKE1JUFNfSVNBX0RFRkFVTFQpOiBMaWtld2lzZS4gIEFsc28sIGZpeCBpbmRlbnRhdGlvbi4KCShUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZCBzdXBwb3J0IGZvciBNSVBTMzJSMi4gIEFkZCBuZXcKCXByZWRlZmluZSBfX21pcHNfaXNhX3JldiBmb3IgTUlQUzMyLCBNSVBTMzJSMiwgYW5kIE1JUFM2NC4KCShJU0FfSEFTX1JPVFJfU0kpOiBBZGQgc3VwcG9ydCBmb3IgTUlQUzMyUjIsIGFuZCBhdm9pZCBpZgoJY29tcGlsaW5nIE1JUFMxNiBjb2RlLgoJKElTQV9IQVNfUk9UUl9ESSk6IERvIG5vdCB1c2UgaWYgY29tcGlsaW5nIE1JUFMxNiBjb2RlLCBhbmQgZml4Cgljb21tZW50LgoJKElTQV9IQVNfU0VCX1NFSCk6IE5ldyBkZWZpbmUuCgkoQVNNX1NQRUMsIExJTktfU1BFQyk6IFBhc3MgLW1pcHMzMnIyIHRvIGFzc2VtYmxlciBhbmQgbGlua2VyLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY3B1X2luZm9fdGFibGUpOiBBZGp1c3QgZm9yIGVudW0KCXByb2Nlc3Nvcl90eXBlIHZhbHVlIHJlbmFtaW5nLiAgQWRkIHN1cHBvcnQgZm9yIE1JUFMzMlIyLgoJQ2xlYW4gdXAgY29tbWVudHMsIGFuZCBtb3ZlICJzYjEiIGVudHJ5IHdpdGggb3RoZXIgTUlQUzY0IENQVQoJZW50cmllcy4KCShvdmVycmlkZV9vcHRpb25zKTogUmVpbXBsZW1lbnQgLW1pcHNOIG9wdGlvbiBoYW5kbGluZyBzbyB0aGF0CglpdCB3aWxsIHdvcmsgY29ycmVjdGx5IGZvciAtbWlwczMycjIuICBBdm9pZCBicmFuY2gtbGlrZWx5CglpbnN0cnVjdGlvbnMgb24gTUlQUzMyUjIuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKG11bHNpM19tdWx0Myk6IEFkZCBzdXBwb3J0IGZvciBNSVBTMzJSMi4KCShleHRlbmRoaXNpMik6IFVzZSBleHRlbmRoaXNpMl9odyBpZiBJU0FfSEFTX1NFQl9TRUguCgkoZXh0ZW5kcWlzaTIpOiBVc2UgZXh0ZW5kcWlzaTJfaHcgaWYgSVNBX0hBU19TRUJfU0VILgoJKGV4dGVuZGhpc2kyX2h3LCBleHRlbmRxaXNpMl9odyk6IE5ldy4KCSogY29uZmlnL21pcHMvbmV0YnNkLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWRkIHN1cHBvcnQKCWZvciBNSVBTMzJSMi4gIEFkZCBuZXcgcHJlZGVmaW5lIF9fbWlwc19pc2FfcmV2IGZvciBNSVBTMzIsCglNSVBTMzJSMiwgYW5kIE1JUFM2NC4KCShMSU5LX1NQRUMpOiBQYXNzIC1taXBzMzJyMiB0byBsaW5rZXIuCgkqIGNvbmZpZy9taXBzL3QtaXNhMzI2NDogQnVpbHQgLW1pcHMzMnIyIG11bHRpbGlicy4KCSogZG9jL2ludm9rZS50ZXhpIChNSVBTIE9wdGlvbnMpOiBBZGQgLW1pcHMzMnIyLCBhZGQgc3VwcG9ydAoJZm9yIG1pcHMzMnIyIGluIHRoZSAtbWFyY2ggZGVzY3JpcHRpb24uICBBbHBoYWJldGljYWxseSBzb3J0CglDUFUgbmFtZXMgaW4gdGhlIC1tYXJjaCBkZXNjcmlwdGlvbi4gIEFkZCBsb25nLW1pc3NlZCAtbWlwczMyCglhbmQgLW1pcHM2NCB0byBNSVBTIG9wdGlvbiBzdW1tYXJ5LgoKCSogY29uZmlnLmdjYzogVXBkYXRlIGNvcHlyaWdodCB5ZWFycyB0byBpbmNsdWRlIDIwMDMuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9uZXRic2QuaDogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgoyMDAzLTAxLTA4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogYWNsb2NhbC5tNCAoZ2NjX0FDX0lOSVRGSU5JX0FSUkFZKTogRml4IHNwZWxsaW5nIG9mIGNhY2hlCgl2YXJpYWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDEtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAob3V0cHV0X2xvZ2ljYWxfb3ApOiBSZXBsYWNlIGJ5dGUvd29yZAoJZXh0cmFjdGlvbiBvZiBkZXQgd2l0aCBiMCwgYjEsIHcwLCB3MiwgZXRjLgoJKGNvbXB1dGVfbG9naWNhbF9vcF9sZW5ndGgpOiBMaWtld2lzZS4KCShjb21wdXRlX2xvZ2ljYWxfb3BfY2MpOiBMaWtld2lzZS4KCjIwMDMtMDEtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoQ09OU1RBTlRfQUREUkVTU19QKTogQWxsb3cgQ09OU1QgYW5kCglISUdIIG9uIGFsbCB2YXJpYW50cy4KCjIwMDMtMDEtMDggIEpvc2VmIFpsb21layA8emxvbWo5YW1AYXJ0YXgua2FybGluLm1mZi5jdW5pLmN6PgoKCSogTWFrZWZpbGUuaW4gKFBBUlRJVElPTl9IKTogTmV3LgoJKEJBU0lDX0JMT0NLX0gpOiBBZGRlZCBoYXJkLXJlZy1zZXQuaCBhbmQgJChQQVJUSVRJT05fSCkuCgkqIGJhc2ljLWJsb2NrLmg6IEluY2x1ZGUgaGFyZC1yZWctc2V0LmguCgoyMDAzLTAxLTA4ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5oIChFTkFCTEVfWEZfUEFUVEVSTlMpOiBEZWxldGUuCgkqIGFybS5tZCAoYWRkeGYzLCBzdWJ4ZjMsIG11bHhmMywgZGl2eGYzLCBtb2R4ZjMsIG5lZ3hmMiwgYWJzeGYyKQoJKHNxcnR4ZjIsIGZsb2F0c2l4ZjIsIGZpeF90cnVuY3hmc2kyLCB0cnVuY3hmc2YyLCB0cnVuY3hmZGYyKQoJKGV4dGVuZHNmeGYyLCBleHRlbmRkZnhmMiwgbW92eGYsIGNtcHhmLCBjbXB4Zl9pbnNuKQoJKGNtcHhmX3RyYXApOiBEZWxldGUuCgkobW92eGZfaGFyZF9pbnNuKTogUmVtb3ZlIHRlc3Qgb2YgRU5BQkxFX1hGX1BBVFRFUk5TLgoKMjAwMy0wMS0wOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkZGkzX2NhcnJ5X3JleDY0LCBzdWJkaTNfY2FycnlfcmV4NjQpOiBOYW1lIHBhdHRlcm4uCgkoYWRkaGkzX2NhcnJ5LCBhZGRxaTNfY2FycnksIHN1YmhpM19jYXJyeSwgc3VicWkzX2NhcnJ5KTogTmV3IHBhdHRlcm5zLgoJKGFkZD8/Y2MpOiBOZXcgZXhwYW5kZXJzLgoJKiBpMzg2LmMgKGV4cGFuZF9pbnRfYWRkY2MpOiBOZXcgZnVuY3Rpb24uCgkqIGkzODYtcHJvdG9zLmggKGV4cGFuZF9pbnRfYWRkY2MpOiBEZWNsYXJlLgoKCSogYWxpYXMuYyAobWVtb3J5X21vZGlmaWVkXzEpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKG1lbW9yeV9tb2RpZmllZCk6IE5ldyBzdGF0aWMgdmFyYWlibGUuCgkobWVtb3J5X21vZGlmaWVkX2luX2luc25fcCk6IE5ldyBnbG9iYWwgZnVuY3Rpb24uCgkqIHJ0bC5oIChtZW1vcnlfbW9kaWZpZWRfaW5faW5zbl9wKTogRGVjbGFyZS4KCSogcnRsYW5hbC5jIChtb2RpZmllZF9iZXR3ZWVuX3AsIG1vZGlmaWVkX2luX3ApOiBCZSBzbWFydCBhYm91dCBtZW1vcnkKCXJlZmVyZW5jZXMuCgoJKiBleHByLmggKGVtaXRfY29uZGl0aW9uYWxfYWRkKTogRGVjbGFyZS4KCjIwMDMtMDEtMDcgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCVBSIG90aGVyLzg5NDcKCSogZG9jL2ludm9rZS50ZXhpICgtbWFsaWduLWRvdWJsZSk6IEV4cGxhaW4gdGhhdCB0aGUgb3B0aW9uIGJyZWFrcwoJYmluYXJ5IGNvbXBhdGliaWxpdHkuCgoyMDAzLTAxLTA4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY29uZmlnLmdjYyAobTY4ay0qLWxpbnV4Kik6IERvbid0IHNldCBleHRyYV9wYXJ0cyBhbmQgZ251X2xkLAoJc2hvdWxkIGNvbWUgZnJvbSB0aGUgZ2VuZXJpYyAqLSotbGludXgqIGVudHJ5LgoKMjAwMy0wMS0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY3NlbGliLmMgKGNzZWxpYl9jdXJyZW50X2luc25faW5fbGliY2FsbCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkobmV3X2VsdF9sb2NfbGlzdCwgY3NlbGliX3Byb2Nlc3NfaW5zbiwgY3NlbGliX2luaXQpOiBLZWVwIHRyYWNrIG9uIHdoZXRoZXIKCXdlIGFyZSBpbnNpZGUgbGliY2FsbC4KCSogY3NlbGliLmggKGVsdF9sb2NfbGlzdCk6IEFkZCBpbl9saWJjYWxsLgoJKiBnY3NlLmMgKGRvX2xvY2FsX2Nwcm9wKTogRG8gbm90IGNvcHkgcHJvcGFnYXRlIHVzaW5nIGluc25zCglpbiBsaWJjYWxscy4KCjIwMDMtMDEtMDcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfU0NIRURfVkFSSUFCTEVfSVNTVUUpOiBDTE9CQkVSIGFuZCBVU0UgZG8KCW5vdCBub3JtYWxseSBhZmZlY3QgdG8gaXNzdWUgcmF0ZS4KCjIwMDMtMDEtMDcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBBZGQgYWRkY19vcHRhYi4KCSogaWZjdnQuYyAobm9jZV90cnlfc3RvcmVfZmxhZyk6IFJlbmFtZSB0byAuLi4KCShub2NlX3RyeV9hZGRjYyk6IC4uLiB0aGlzIG9uZTsgaGFuZGxlIGdlbmVyaWMgY29uZGl0aW9uYWwgaW5jcmVtZW50LgoJKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IFVwZGF0ZSBub2NlX3RyeV9hZGRjYyBjYWxsLgoJKiBvcHRhYnMuYyAoZW1pdF9jb25kaXRpb25hbF9hZGQpOiBOZXcuCgkoaW5pdF9vYnRhYnMpOiBJbml0aWFsaXplIGFkZGNfb3B0YWIuCgkqIG9wdGFicy5oIChvcHRhYl9pbmRleCk6IEFkZCBPVElfYWRkY2MuCgkoYWRkY2Nfb3B0YWIpOiBOZXcgbWFjcm8uCgkqIG1kLnRleGk6IERvY3VtZW50IGFkZE1jYwoKCVBSIHRhcmdldC84MzIyCgkqIGkzODYuYyAoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOiBDb25zdGlmeSBhcmd1bWVudHMgb2YgbG9hZHMuCgkqIHhtbWludHJpbi5oIChfbW1fbG9hZCpfc2kxMjguIF9tbV9zdG9yZSpfc2kxMjgpOiBBZGQgY2FzdHMuCgkqIHhtbWludHJpbi5oIChfbW1fbG9hZCpfc2kxMjguIF9tbV9zdG9yZSpfc2kxMjgpOiBBZGQgY2FzdHMuCgoJKiByZWxvYWQxLmMgKGRlbGV0ZV9vdXRwdXRfcmVsb2FkKTogQXZvaWQgcmVwZWF0ZWQgYXR0ZW1wdHMKCXRvIGRlbGV0ZSBpbnNuLgoKMjAwMy0wMS0wNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogUmVzdG9yZSBDRkxBR1MgYmVmb3JlIGdjY19BQ19JTklURklOSV9BUlJBWS4KCU1vdmUgLS1lbmFibGUtaW5pdGZpbmktYXJyYXkgY2hlY2sgLi4uCgkqIGFjbG9jYWwubTQgKGdjY19BQ19JTklURklOSV9BUlJBWSk6IC4uLiBoZXJlLiAgRGVmaW5lCglIQVZFX0lOSVRGSU5JX0FSUkFZIGFsc28gd2hlbiAtLWVuYWJsZS1pbml0ZmluaS1hcnJheSBpcyBnaXZlbi4KCURvbid0IEFDX1NVQlNUIGdjY19jdl9pbml0ZmluaXRfYXJyYXkuICBVc2UgQUNfVFJZX1JVTi4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwMy0wMS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGFsaWFzLmMgKGZpbmRfYmFzZV92YWx1ZSk6IE9ubHkgdXNlIG5ld19yZWdfYmFzZV92YWx1ZSBzaG9ydGN1dAoJaWYgdGhlIHJlZ2lzdGVyIGlzIHNldCBvbmNlLgoKMjAwMy0wMS0wNyAgU3lsdmFpbiBQaW9uIDxTeWx2YWluLlBpb25AbXBpLXNiLm1wZy5kZT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9pbml0X21teF9zc2VfYnVpbHRpbnMpOgoJX19idWlsdGluX2lhMzJfbGRteGNzciBhbmQgX19idWlsdGluX2lhMzJfc3RteGNzciBhcmUgU1NFLCBub3QgTVhYLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChsZG14Y3NyLCBzdG14Y3NyKTogU1NFLCBub3QgTU1YLgoKMjAwMy0wMS0wNyAgQmVuamFtaW4gS29zbmlrICA8YmtvekByZWRoYXQuY29tPgoJICAgIFN1bmlsIERhdmFzYW0gIDxzdW5pbC5rLmRhdmFzYW1AaW50ZWwuY29tPgoKCVBSIGxpYnN0ZGMrKy85MDc2CgkqIHVud2luZC1kdzIuYyAoZXhlY3V0ZV9jZmFfcHJvZ3JhbSk6IERXX0NGQV91bmRlZmluZWQsCglEV19DRkFfc2FtZV92YWx1ZSwgcmVhZCBuZXh0IGFuZCBpZ25vcmUuCgoyMDAzLTAxLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2ZnYW5hbC5jIChmbG93X2NhbGxfZWRnZXNfYWRkKTogRG9uJ3QgY3Jhc2ggb24gbm9yZXR1cm4gY2FsbC4KCjIwMDMtMDEtMDcgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogY2ZnLmM6IEluY2x1ZGUgYWxsb2MtcG9vbC5oCgkoZWRnZV9wb29sKTogTmV3IHBvb2wuCgkoYmJfcG9vbCk6IE5ldyBwb29sLgoJKGZpcnN0X2RlbGV0ZWRfZWRnZSk6IFJlbW92ZS4KCShmaXJzdF9kZWxldGVkX2Jsb2NrKTogUmVtb3ZlLgoJKGluaXRfZmxvdyk6IEFsbG9jL2ZyZWUgdGhlIHBvb2xzLgoJKGZyZWVfZWRnZSk6IFVzZSBwb29scy4KCShhbGxvY19ibG9jayk6IERpdHRvLgoJKGV4cHVuZ2VfYmxvY2spOiBEaXR0by4KCShjYWNoZWRfbWFrZV9lZGdlKTogRGl0dG8uCgoJKiBNYWtlZmlsZS5pbiAoY2ZnLm8pOiBBZGQgYWxsb2MtcG9vbC5oIGRlcGVuZGVuY3kuCgoyMDAzLTAxLTA3ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGV0LWZvcmVzdC5jOiBJbmNsdWRlIGFsbG9jLXBvb2wuaC4KCShzdHJ1Y3QgZXRfZm9yZXN0KTogQWRkIG5vZGVfcG9vbCBhbmQgb2NjdXJfcG9vbC4KCShldF9mb3Jlc3RfY3JlYXRlKTogQ3JlYXRlIHRoZSBuZXcgcG9vbHMuCgkoZXRfZm9yZXN0X2RlbGV0ZSk6IERlbGV0ZSB0aGVtLgoJKGV0X2ZvcmVzdF9hZGRfbm9kZSk6IEFsbG9jYXRlIGFuZCBmcmVlIHVzaW5nIHBvb2xzLgoJKGV0X2ZvcmVzdF9hZGRfZWRnZSk6IERpdHRvLgoJKGV0X2ZvcmVzdF9yZW1vdmVfbm9kZSk6IERpdHRvLgoJKGV0X2ZvcmVzdF9yZW1vdmVfZWRnZSk6IERpdHRvLgoKCSogTWFrZWZpbGUuaW4gKGV0LWZvcmVzdC5vKTogQWRkIGFsbG9jLXBvb2wuaCBkZXBlbmRlbmN5LgoKMjAwMy0wMS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChvdXRwdXRfbG9naWNhbF9vcCk6IFNpbXBsaWZ5IGFuZAoJb3B0aW1pemUgdGhlIGhhbmRsaW5nIG9mIFNJbW9kZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGNvbXB1dGVfbG9naWNhbF9vcF9sZW5ndGgpOiBVcGRhdGUKCWFjY29yZGluZ2x5LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoY29tcHV0ZV9sb2dpY2FsX29wX2NjKTogTGlrZXdpc2UuCgoyMDAzLTAxLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfYXJnKTogSW4gdGhlIEVBQkkgY29kZSwgYXBwbHkgdGhlCgliaWctZW5kaWFuIGNvcnJlY3Rpb24gdG8gaW5kaXJlY3QgYXJndW1lbnRzIHRvby4KCjIwMDMtMDEtMDYgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCglTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa29mZmllLm5sPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3JlZ19uYW1lcyk6IEFkZCBtaXNzaW5nIHJlZ2lzdGVycy4KCShhbHRfcmVnX25hbWVzKTogRGl0dG8sIGZpeCBmb3JtYXR0aW5nLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChERUJVR19SRUdJU1RFUl9OQU1FUyk6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMy0wMS0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChmaW5hbF9wcmVzY2FuX2luc24pOiBDb25zdGlmeSB1aWQuCgkob3V0cHV0X2xvZ2ljYWxfb3ApOiBDb25zdGlmeSBpbnR2YWwgYW5kIGRldC4KCShjb21wdXRlX2xvZ2ljYWxfbGVuZ3RoKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9sb2dpY2FsX2NjKTogTGlrZXdpc2UuCgkob3V0cHV0X2Ffc2hpZnQpOiBDb25zdGlmeSBtYXNrLgoJKGg4MzAwX2VuY29kZV9sYWJlbCk6IENvbnN0aWZ5IGxlbi4KCjIwMDMtMDEtMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfZXhwYW5kX3Byb2xvZ3VlKTogUmVtb3ZlIGZzaXplLgoJKGg4MzAwX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKMjAwMy0wMS0wNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVNlZ2hlciBCb2Vzc2Vua29vbCAgPHNlZ2hlckBrb2ZmaWUubmw+CgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQ6IFJlbW92ZSBzcGFjZXMgZnJvbSBhc3NlbWJsZXIKCWluc3RydWN0aW9uIGFyZ3VtZW50IGxpc3RzLgoKMjAwMy0wMS0wNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X25ha2VkX2Z1bmN0aW9uX3ApOiBSZW5hbWUgZnJvbQoJYzR4X2Fzc2VtYmxlcl9mdW5jdGlvbl9wLgoJKGM0eF9udWxsX2VwaWxvZ3VlX3ApOiBDb21wbGVtZW50IHJldHVybiB2YWx1ZSwgYWxsIHVzZXMgdXBkYXRlZC4KCShjNHhfaW5zZXJ0X2F0dHJpYnV0ZXMpOiBBZGQgbmFrZWQuCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChjNHhfbnVsbF9lcGlsb2d1ZV9wKTogQ2hhbmdlcyB1c2VzLgoJKiBkb2MvZXh0ZW5kLnRleGk6IFVwZGF0ZSBDNHggZnVuY3Rpb24gYXR0cmlidXRlcy4KCjIwMDMtMDEtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEFkanVzdCBzeW1ib2xfc3RyCglwcm9wZXJseSB3aGVuIGNoYW5naW5nICJsb2NhbC1uZXNzIi4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChtb3ZkaV9lcl9oaWdoX2cpOiBBbGxvdyBhbGwgc3ltYm9scy4KCjIwMDMtMDEtMDYgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmg6ICBBZGQgcHJvdG90eXBlcyBmb3IgbmV3IHNlY3Rpb24gZnVuY3Rpb25zLgoKMjAwMy0wMS0wNiAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy5nY2MgKG1pcHNpc2EzMi0qLWVsZiosIG1pcHNpc2EzMmVsLSotZWxmKik6IERlZmF1bHQgQUJJCgl0byBFQUJJLgoKMjAwMy0wMS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGh3aW50Lmg6IElmIHRoZSBjdXJyZW50IGNvbXBpbGVyIGhhcyBubyA2NC1iaXQgdHlwZSBhdCBhbGwsCgltYWtlIEhPU1RfV0lERVNUX0lOVCAzMiBiaXRzLgoKMjAwMy0wMS0wNiAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChtb3ZkZl9pbnRlcm5hbDIpOiBGaXggY29uc3RyYWludHMuCgoyMDAzLTAxLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqdHdvc2hpZnRzX2wxNl9yMSk6IE5ldy4KCjIwMDMtMDEtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGxlYWRpKTogVXNlIGRsYSByYXRoZXIgdGhhbiBsYS4KCjIwMDMtMDEtMDYgIFN2ZWluIEUuIFNlbGRhbCAgPFN2ZWluLlNlbGRhbEBzb2xpZGFzLmNvbT4KCgkqIGNvbmZpZy9jNHgvYzR4Lmg6IFVwZGF0ZWQgc3BlY3MgZm9yIG5ldyBnYXMgZm9ybWF0LiAgRml4ZWQgYnVnCglpbiBDMzNfRkxBRy4gIEFkZGVkIHByb3BlciBDMzMgc3VwcG9ydCBpbiBBU01fRklMRV9TVEFSVCBtYWNyby4KCjIwMDMtMDEtMDYgSGVybWFuIEEuSi4gdGVuIEJydWdnZSAgPGhlcm1hbnRlbmJydWdnZUBob21lLm5sPgoKCSogY29uZmlnL2M0eC9jNHguaDogUmVtb3ZlIGh3aW50LmggaW5jbHVkZSBhbmQgSE9TVF9XSURFX0lOVF9QUklOVF9IRVgKCXJlZGVmaW5pdGlvbi4KCjIwMDMtMDEtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpleHR6dl84XzIzKTogTmV3LgoKMjAwMy0wMS0wNSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhNjQtaHB1eC5oIChKQ1JfU0VDVElPTl9OQU1FKTogRGVmaW5lLgoJKFBBX0lOSVRfRlJBTUVfRFVNTVlfQVNNX09QKTogQ2hlY2sgRUhfRlJBTUVfU0VDVElPTl9OQU1FIGluc3RlYWQgb2YKCVVTRV9FSF9GUkFNRV9SRUdJU1RSWSB3aGVuIGRlZmluaW5nLgoKMjAwMy0wMS0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChvdXRwdXRfYV9zaGlmdCk6IERvIG5vdCBvdXRwdXQgYQoJdmFyaWFibGUgc2hpZnQuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAodHdvIHNwbGl0dGVycyk6IE5ldy4KCjIwMDMtMDEtMDUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IERpc2FibGUgdGhlIG1vdnN0cnNpIGRlZmluZV9zcGxpdC4KCjIwMDMtMDEtMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFsbG9jLXBvb2wuYzogRG9uJ3QgaW5jbHVkZSAibGliaWJlcnR5LmgiLgoJKiBjb25maWcvc3BhcmMvZ21vbi1zb2wyLmM6IEluY2x1ZGUgPGZjbnRsLmg+LgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9fcmVhbCk6IEhpZGUgdW51c2VkIHZhcmlhYmxlLgoKMjAwMy0wMS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGd0eXAtZ2VuLmgpOiBDb25zdC1pZnkuCgkqIGdjb3YtZHVtcC5jICh0YWdfdGFibGUpOiBMaWtld2lzZS4KCjIwMDMtMDEtMDQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMod3JhcF9maXgpOiB0aGUgd3JhcHBlciBndWFyZCBtdXN0IGJlIGEgZnVuY3Rpb24KCW9mICpib3RoKiB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgZml4IG5hbWUuCgoyMDAzLTAxLTA0ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy5jYT4KCgkqIGNvbmZpZy5nY2MgKGhwcGEqNjQqLSotaHB1eDExKik6IERlZmluZSBleHRyYV9wYXJ0cy4gIERvbid0IHVzZQoJY29sbGVjdDIuCgkqIHBhLWhwdXgxMS5oIChMRERfU1VGRklYLCBQQVJTRV9MRERfT1VUUFVUKTogVW5kZWZpbmUuCgkoSEFTX0lOSVRfU0VDVElPTiwgTERfSU5JVF9TV0lUQ0gsIExEX0ZJTklfU1dJVENIKTogRGVmaW5lLgoJKiBwYTY0LWhwdXguaCAoSFBfSU5JVF9BUlJBWV9TRUNUSU9OX0FTTV9PUCwKCUdOVV9JTklUX0FSUkFZX1NFQ1RJT05fQVNNX09QLCBIUF9GSU5JX0FSUkFZX1NFQ1RJT05fQVNNX09QLAoJR05VX0ZJTklfQVJSQVlfU0VDVElPTl9BU01fT1ApOiBEZWZpbmUuCgkoQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lIHdoZW4gbm90IHVzaW5nCgllbGZvcy5oLgoJKEVIX0ZSQU1FX0lOX0RBVEFfU0VDVElPTik6IERlbGV0ZSBkZWZpbmUuCgkoSEFTX0lOSVRfU0VDVElPTiwgTERfSU5JVF9TV0lUQ0gsIExEX0ZJTklfU1dJVENIKTogVW5kZWZpbmUuCgkoU1RBUlRGSUxFX1NQRUMpOiBVc2UgY3J0YmVnaW4uby4KCShFTkRGSUxFX1NQRUMpOiBVc2UgY3J0ZW5kLm8uCgkoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwgQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OLAoJU1VQUE9SVFNfSU5JVF9QUklPUklUWSwgUEFfQ1hBX0ZJTkFMSVpFX1NUVUIsIFBBX0lOSVRfRklOSV9IQUNLLAoJUEFfSU5JVF9GUkFNRV9EVU1NWV9BU01fT1AsIFBBX0pWX1JFR0lTVEVSQ0xBU1NFU19TVFVCLAoJRFRPUl9MSVNUX0JFR0lOKTogRGVmaW5lLgoJKiBwYS5jIChUQVJHRVRfQVNNX0NPTlNUUlVDVE9SKTogRGVmaW5lLgoJKHBhX2FzbV9vdXRfY29uc3RydWN0b3IsIHBhX2FzbV9vdXRfZGVzdHJ1Y3Rvcik6IE5ldyBmdW5jdGlvbnMuCgkqIHNvbS5oIChTVVBQT1JUU19JTklUX1BSSU9SSVRZKTogRGVsZXRlIGRlZmluZS4KCjIwMDItMTItMzEgIExhcmluIEhlbm5lc3N5ICA8bGFyaW5Ac2NpZW5jZS5vcmVnb25zdGF0ZS5lZHU+CgoJKiBmaXhpbmMvZml4aW5jLnN2cjQ6IFJlbW92ZSByZWZlcmVuY2VzIHRvIGk4NjAsIFNvbnkgTmV3c09TLCBhbmQgc3B1ci4KCSogZml4aW5jL2luY2xoYWNrLmRlZjogUmVtb3ZlIHRlc3RzIGZvciBBcHBsZSBBL1VYLCBBUk0vUklTQ2lYLCBERy9VWCwKCW04OGstKi1zeXN2MyosIFNvbnkgTmV3c09TLiAgIFJlbW92ZSByZWZlcmVuY2VzIHRvIGk4NjAuCglDbGVhbnVwIGhhbmRsaW5nIG9mIHJlcGxhY2VtZW50IHRleHQuCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogUmVtb3ZlIHJlZmVyZW5jZSB0byBpPzg2LSotb3NmMSoKCjIwMDMtMDEtMDQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL3Rlc3RzL2Jhc2UvbWF0aC5oOiByZW1vdmVkIG9ic29sZXRlIHJlc3VsdHMKCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3RkbGliLmg6IGRpdHRvCgkqIGZpeGluYy90ZXN0cy9iYXNlL3N5cy9wYXJhbS5oOiBkaXR0bwoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvc3RhdC5oOiBkaXR0bwoJKiBmaXhpbmMvdGVzdHMvYmFzZS90aW1lLmg6IGRpdHRvCgkqIGZpeGluYy90ZXN0cy9iYXNlL1gxMS9JbnRyaW5zaWMuaDogcmVtb3ZlZCBvYnNvbGV0ZSBmaWxlCgkqIGZpeGluYy90ZXN0cy9iYXNlL3N5cy9ieXRlb3JkZXIuaDogZGl0dG8KCSogZml4aW5jL2luY2xoYWNrLmRlZjogUmVtb3ZlIHN1cGVyZmx1b3VzIGJhY2tzbGFzaGVzCgoyMDAzLTAxLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlcyBmb3IKCXRoZSBuZXcgZnVuY3Rpb25zIGRlZmluZWQgYmVsb3cuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChUQVJHRVRfQVNNX0ZVTkNUSU9OX1BST0xPR1VFKTogRG8gbm90CglkZWZpbmUuCgkoZG9zaXplKTogRW1pdCBSVEwgaW5zdGVhZCBvZiBhc3NlbWJseSBjb2RlLgoJKHB1c2gpOiBMaWtld2lzZS4KCShwb3ApOiBMaWtld2lzZS4KCShoODMwMF9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBSZW1vdmUuCgkoaDgzMDBfZXhwYW5kX3Byb2xvZ3VlKTogTmV3LgoJKGg4MzAwX2V4cGFuZF9lcGlsb2d1ZSk6IE5ldy4KCShoODMwMF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBEbyBvbmx5IHRoZSByZXNldCBvZgoJcHJhZ21hX3NhdmVhbGwuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAocHVzaF9oODMwMCk6IE5ldy4KCShwdXNoX2g4MzAwaHMpOiBMaWtld2lzZS4KCShwb3BfaDgzMDApOiBMaWtld2lzZS4KCShwb3BfaDgzMDBocyk6IExpa2V3aXNlLgoJKCpzdG1faDgzMDBzXzIpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gc3RtX2g4MzAwc18yLgoJKCpzdG1faDgzMDBzXzMpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gc3RtX2g4MzAwc18zLgoJKCpzdG1faDgzMDBzXzQpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gc3RtX2g4MzAwc180LgoJKCpsZG1faDgzMDBzXzIpOiBOZXcuCgkoKmxkbV9oODMwMHNfMyk6IExpa2V3aXNlLgoJKCpsZG1faDgzMDBzXzQpOiBMaWtld2lzZS4KCShyZXR1cm4pOiBMaWtld2lzZS4KCSgqcmV0dXJuXzEpOiBMaWtld2lzZS4KCShwcm9sb2d1ZSk6IExpa2V3aXNlLgoJKGVwaWxvZ3VlKTogTGlrZXdpc2UuCgkobW9uaXRvcl9wcm9sb2d1ZSk6IExpa2V3aXNlLgoKMjAwMy0wMS0wMyAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oOiAgKEVYVFJBX1NFQ1RJT05TKTogIEFkZCBtYWNob3BpY19zeW1ib2xfc3R1YjEsCgkgIG1hY2hvcGljX3BpY3N5bWJvbF9zdHViMS4KCSAgKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogIERpdHRvLgoJKiByczYwMDAvcnM2MDAwLmM6ICBVcGRhdGUgY29weXJpZ2h0LgoJICAobWFjaG9waWNfb3V0cHV0X3N0dWIpOiAgVXNlIHRoZW0uICBSZW1vdmUgYW4gaW5zbiBmcm9tIHN0dWIgY29kZS4KCjIwMDMtMDEtMDIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKSBbQ09ORF9FWFBSXTogQXZvaWQgTk9QX0VYUFJzIGJldHRlci4KCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogRG9uJ3QgY2xlYXIgdGhlIHJ0bCBmb3IKCXN0YXRpYy9leHRlcm5hbCBkZWNscy4KCgkqIGMtY29tbW9uLmMgKGZpbmlzaF9mbmFtZV9kZWNscyk6IFB1dCB0aGUgREVDTF9TVE1UcyBpbnNpZGUgdGhlCglvdXRlcm1vc3Qgc2NvcGUuCgkqIGMtZGVjbC5jIChjX21ha2VfZm5hbWVfZGVjbCk6IFB1c2ggdGhlIGRlY2xzIHRoZXJlLCB0b28uCgoyMDAzLTAxLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBBZGQgYSBwcm90b3R5cGUgZm9yCgloODMwMF9jdXJyZW50X2Z1bmN0aW9uX2ludGVycnVwdF9mdW5jdGlvbl9wLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaW50ZXJydXB0X2hhbmRsZXIpOiBSZW1vdmUuCgkob3NfdGFzayk6IExpa2V3aXNlLgoJKG1vbml0b3IpOiBMaWtld2lzZS4KCShwcmFnbWFfaW50ZXJydXB0KTogTmV3LgoJKFdPUkRfUkVHX1VTRUQpOiBVc2UKCWg4MzAwX2N1cnJlbnRfZnVuY3Rpb25faW50ZXJydXB0X2Z1bmN0aW9uX3AuCgkoZG9zaXplKTogTGlrZXdpc2UuCgkoaDgzMDBfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogTGlrZXdpc2UuCglEbyBub3Qgc2V0IGludGVycnVwdF9oYW5kbGVyLCBvc190YXNrLCBtb25pdG9yLgoJKGg4MzAwX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFVzZQoJaDgzMDBfY3VycmVudF9mdW5jdGlvbl9pbnRlcnJ1cHRfZnVuY3Rpb25fcC4KCURvIG5vdCBzZXQgaW50ZXJydXB0X2hhbmRsZXIsIG9zX3Rhc2ssIG1vbml0b3IuCgkoaDgzMDBfY3VycmVudF9mdW5jdGlvbl9pbnRlcnJ1cHRfZnVuY3Rpb25fcCk6IE5ldy4KCShoODMwMF9wcl9pbnRlcnJ1cHQpOiBTZXQgcHJhZ21hX2ludGVycnVwdC4KCShoODMwMF9pbnNlcnRfYXR0cmlidXRlcyk6IFJlc2V0IHByYWdtYV9pbnRlcnJ1cHQuCgoyMDAzLTAxLTAzICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9uKTogRml4IG1hcmt1cCBmb3IgcmVmZXJlbmNlIHRvCglnY2MvY29uZmlnLmdjYy4KCjIwMDMtMDEtMDIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCppb3JoaTNfemV4dCk6IFJlbGF4IHRoZSBjb25kaXRpb24uCgkoKmlvcmhpM190d29fcWkpOiBMaWtld2lzZS4KCSgqaW9yc2kzX3pleHRoaSk6IExpa2V3aXNlLgoJKCp4b3JoaTNfemV4dHFpKTogTGlrZXdpc2UuCgkoKnhvcnNpM196ZXh0aGkpOiBMaWtld2lzZS4KCSgqeG9yc2kzX3pleHRxaSk6IExpa2V3aXNlLgoKMjAwMy0wMS0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChzdGFja19wb2ludGVyX29wZXJhbmQpOiBOZXcuCgkoY29uc3RfaW50X2d0XzJfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGNvbnN0X2ludF9nZV84X29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChhIHNwbGl0dGVyKTogTGlrZXdpc2UuCgkoYSBwZWVwaG9sZTIpOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlcyBmb3IgdGhlIG5ldwoJZnVuY3Rpb25zIGFib3ZlLgoKMjAwMy0wMS0wMiAgU3RldmVuIEJvc3NjaGVyIDxzLmJvc3NjaGVyQHN0dWRlbnQudHVkZWxmdC5ubD4KCgkqIG9iamMvTWFrZS1sYW5nLmluLCBvYmpjL2NvbmZpZy1sYW5nLmluLCBvYmpjL2xhbmctc3BlY3MuaCwKCW9iamMvb2JqYy1hY3QuaDogRml4IGNvcHlyaWdodCB5ZWFycy4KCjIwMDMtMDEtMDIgIFN0ZXZlbiBCb3NzY2hlciAgPHMuYm9zc2NoZXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoKCSogZG9jL3Bhc3Nlcy50ZXhpOiBGaXggZG9jdW1lbnRhdGlvbiBmb3IgLWZzc2EtY2NwCgoyMDAzLTAxLTAyICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBnY2NidWcuaW46IFVwZGF0ZSBmb3IgbmV3IGNhdGVnb3JpZXMuCgoyMDAzLTAxLTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBSZW9yZGVyIHNvbWUgcGF0dGVybnMuCgoyMDAzLTAxLTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKG91dHB1dF9sb2dpY2FsX29wKTogRml4IGEgd2FybmluZy4KCjIwMDMtMDEtMDEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmgsIGNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oLAoJY29uZmlnL2NyaXMvY3Jpcy1wcm90b3MuaCwgY29uZmlnL2kzNzAvaTM3MC1wcm90b3MuaCwKCWNvbmZpZy9pOTYwL2k5NjAtcHJvdG9zLmgsIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmgsCgljb25maWcvdjg1MC92ODUwLXByb3Rvcy5oOiBVc2Ugc3RydWN0LCBhbmQgZG9uJ3QgY29uZGl0aW9uYWxseQoJY29tcGlsZSBvbiBHQ0NfQ19QUkFHTUFfSC4KCjIwMDMtMDEtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogUmVtb3ZlICNpZmRlZiBHQ0NfQ19QUkFHTUFfSC4KCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLXByb3Rvcy5oOiBMaWtld2lzZS4KCjIwMDMtMDEtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogVXNlIHN0cnVjdCBjcHBfcmVhZGVyIGluc3RlYWQgb2YKCWNwcF9yZWFkZXIuCgkqIGNvbmZpZy9oODMwMC9oODMwMC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC1wcm90b3MuaDogTGlrZXdpc2UuCgoyMDAzLTAxLTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fcHJfbG9uZ19jYWxscywgYXJtX3ByX25vX2xvbmdfY2FsbHMsCglhcm1fcHJfbG9uZ19jYWxsc19vZmYpOiBVc2Ugc3RydWN0LgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoaDgzMDBfcHItaW50ZXJydXB0LCBoODMwMF9wcl9zYXZlYWxsKQoJOiBTaW1pbGFybHkuCglEb24ndCBpbmNsdWRlIGNwcGxpYi5oLgoJKiBjb25maWcvc2gvc2guYyAoc2hfcHJfaW50ZXJydXB0LCBzaF9wcl90cmFwYSwKCXNoX3ByX25vc2F2ZV9sb3dfcmVncyk6IFNpbWlsYXJseS4KCjIwMDMtMDEtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYzogSW5jbHVkZSBjcHBsaWIuaC4KCjIwMDMtMDEtMDEgIFN0ZXZlbiBCb3NzY2hlciAgPHMuYm9zc2NoZXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoKCSogb2JqYy9NYWtlLWxhbmcuaW4sIG9iamMvY29uZmlnLWxhbmcuaW4sIG9iamMvbGFuZy1vcHRpb25zLmgsCgkgIG9iamMvbGFuZy1zcGVjcy5oLCBvYmpjL29iamMtYWN0LmMsIG9iamMvb2JqYy1hY3QuaCwKCSAgb2JqYy9vYmpjLWxhbmcuYywgb2JqYy9vYmpjLXRyZWUuZGVmOiBSZXBsYWNlICJHTlUgQ0MiIHdpdGgKCSAgIkdDQyIgaW4gdGhlIGNvcHlyaWdodCBoZWFkZXIuCgoyMDAzLTAxLTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLXByYWdtYS5jIChjX3JlZ2lzdGVyX3ByYWdtYSk6IE5ldy4KCShpbml0X3ByYWdtYSk6IFVzZSBpdC4KCSogYy1wcmFnbWEuaCAoY3BwX3JlZ2lzdGVyX3ByYWdtYSk6IERvbid0IGRlY2xhcmUuCgkoY19yZWdpc3Rlcl9wcmFnbWEpOiBOZXcuCgkqIGNwcGxpYi5oOiBSZW1vdmUgI2lmZGVmIEdDQ19DX1BSQUdNQV9ILgoJKiBjb25maWcvZGFyd2luLmggKFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKTogVXBkYXRlLgoJKiBjb25maWcvYXJtL2FybS5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IFVwZGF0ZS4KCSogY29uZmlnL2M0eC9jNHguaCAoUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IFVwZGF0ZS4KCSogY29uZmlnL2kzNzAvaTM3MC5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IFVwZGF0ZS4KCSogY29uZmlnL2k5NjAvaTk2MC5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaHB1eC5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IFVwZGF0ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9zaC9zaC5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IFVwZGF0ZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IFVwZGF0ZS4KCSogZG9jL3RtLnRleGkgKFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKTogVXBkYXRlCg==