[PATCH v7 04/19] amd64: introduce hook for custom preload metada

看板FB_current作者時間12年前 (2013/12/22 11:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
LS0tCiBzeXMvYW1kNjQvYW1kNjQvbWFjaGRlcC5jICAgfCAgIDQ1ICsrKysrKysrKysrKystLS0t CiBzeXMvYW1kNjQvaW5jbHVkZS9zeXNhcmNoLmggfCAgIDEyICsrKysrCiBzeXMvY29uZi9maWxl cy5hbWQ2NCAgICAgICAgfCAgICAxICsKIHN5cy94ODYveGVuL3B2LmMgICAgICAgICAgICB8ICAx MTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3lzL3hlbi9w di5oICAgICAgICAgICAgICAgIHwgICAyOCArKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAx ODkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lz L3g4Ni94ZW4vcHYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5cy94ZW4vcHYuaAoKZGlmZiAtLWdp dCBhL3N5cy9hbWQ2NC9hbWQ2NC9tYWNoZGVwLmMgYi9zeXMvYW1kNjQvYW1kNjQvbWFjaGRlcC5j CmluZGV4IDE4ODBmMjMuLjA5ZDlhMWEgMTAwNjQ0Ci0tLSBhL3N5cy9hbWQ2NC9hbWQ2NC9tYWNo ZGVwLmMKKysrIGIvc3lzL2FtZDY0L2FtZDY0L21hY2hkZXAuYwpAQCAtMTI2LDYgKzEyNiw3IEBA IF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxtYWNoaW5lL3JlZy5oPgogI2luY2x1 ZGUgPG1hY2hpbmUvc2lnZnJhbWUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxyZWcuaD4K KyNpbmNsdWRlIDxtYWNoaW5lL3N5c2FyY2guaD4KICNpZmRlZiBQRVJGTU9OCiAjaW5jbHVkZSA8 bWFjaGluZS9wZXJmbW9uLmg+CiAjZW5kaWYKQEAgLTE0OCw2ICsxNDksNyBAQCBfX0ZCU0RJRCgi JEZyZWVCU0QkIik7CiAKICNpZmRlZiBYRU5IVk0KICNpbmNsdWRlIDx4ZW4veGVuLW9zLmg+Cisj aW5jbHVkZSA8eGVuL3B2Lmg+CiAjZW5kaWYKIAogLyogU2FuaXR5IGNoZWNrIGZvciBfX2N1cnRo cmVhZCgpICovCkBAIC0xNzIsNiArMTc0LDE0IEBAIHN0YXRpYyBpbnQgIHNldF9mcGNvbnRleHQo c3RydWN0IHRocmVhZCAqdGQsIGNvbnN0IG1jb250ZXh0X3QgKm1jcCwKICAgICBjaGFyICp4ZnB1 c3RhdGUsIHNpemVfdCB4ZnB1c3RhdGVfbGVuKTsKIFNZU0lOSVQoY3B1LCBTSV9TVUJfQ1BVLCBT SV9PUkRFUl9GSVJTVCwgY3B1X3N0YXJ0dXAsIE5VTEwpOwogCisvKiBQcmVsb2FkIGRhdGEgcGFy c2UgZnVuY3Rpb24gKi8KK3N0YXRpYyBjYWRkcl90IG5hdGl2ZV9wYXJzZV9wcmVsb2FkX2RhdGEo dV9pbnQ2NF90KTsKKworLyogRGVmYXVsdCBpbml0X29wcyBpbXBsZW1lbnRhdGlvbi4gKi8KK3N0 cnVjdCBpbml0X29wcyBpbml0X29wcyA9IHsKKwkucGFyc2VfcHJlbG9hZF9kYXRhID0JbmF0aXZl X3BhcnNlX3ByZWxvYWRfZGF0YSwKK307CisKIC8qCiAgKiBUaGUgZmlsZSAiY29uZi9sZHNjcmlw dC5hbWQ2NCIgZGVmaW5lcyB0aGUgc3ltYm9sICJrZXJucGh5cyIuICBJdHMgdmFsdWUgaXMKICAq IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGF0IHdoaWNoIHRoZSBrZXJuZWwgaXMgbG9hZGVkLgpAQCAt MTY5MCw2ICsxNzAwLDI2IEBAIGRvX25leHQ6CiAJbXNnYnVmcCA9IChzdHJ1Y3QgbXNnYnVmICop UEhZU19UT19ETUFQKHBoeXNfYXZhaWxbcGFfaW5keF0pOwogfQogCitzdGF0aWMgY2FkZHJfdAor bmF0aXZlX3BhcnNlX3ByZWxvYWRfZGF0YSh1X2ludDY0X3QgbW9kdWxlcCkKK3sKKwljYWRkcl90 IGttZHA7CisKKwlwcmVsb2FkX21ldGFkYXRhID0gKGNhZGRyX3QpKHVpbnRwdHJfdCkobW9kdWxl cCArIEtFUk5CQVNFKTsKKwlwcmVsb2FkX2Jvb3RzdHJhcF9yZWxvY2F0ZShLRVJOQkFTRSk7CisJ a21kcCA9IHByZWxvYWRfc2VhcmNoX2J5X3R5cGUoImVsZiBrZXJuZWwiKTsKKwlpZiAoa21kcCA9 PSBOVUxMKQorCQlrbWRwID0gcHJlbG9hZF9zZWFyY2hfYnlfdHlwZSgiZWxmNjQga2VybmVsIik7 CisJYm9vdGhvd3RvID0gTURfRkVUQ0goa21kcCwgTU9ESU5GT01EX0hPV1RPLCBpbnQpOworCWtl cm5fZW52cCA9IE1EX0ZFVENIKGttZHAsIE1PRElORk9NRF9FTlZQLCBjaGFyICopICsgS0VSTkJB U0U7CisjaWZkZWYgRERCCisJa3N5bV9zdGFydCA9IE1EX0ZFVENIKGttZHAsIE1PRElORk9NRF9T U1lNLCB1aW50cHRyX3QpOworCWtzeW1fZW5kID0gTURfRkVUQ0goa21kcCwgTU9ESU5GT01EX0VT WU0sIHVpbnRwdHJfdCk7CisjZW5kaWYKKworCXJldHVybiAoa21kcCk7Cit9CisKICNpZmRlZiBY RU5IVk0KIC8qCiAgKiBGaXJzdCBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIFhlbiBQVkggYm9vdCBz ZXF1ZW5jZS4KQEAgLTE3NTQsNiArMTc4NCw5IEBAIGhhbW1lcl90aW1lX3hlbihzdGFydF9pbmZv X3QgKnNpLCB1X2ludDY0X3QgeGVuc3RhY2spCiAJfQogCWxvYWRfY3IzKCgodV9pbnQ2NF90KSZQ VDRbMF0pIC0gS0VSTkJBU0UpOwogCisJLyogU2V0IHRoZSBob29rcyBmb3IgZWFybHkgZnVuY3Rp b25zIHRoYXQgZGl2ZXJnZSBmcm9tIGJhcmUgbWV0YWwgKi8KKwl4ZW5fcHZfc2V0X2luaXRfb3Bz KCk7CisKIAkvKiBOb3cgd2UgY2FuIGp1bXAgaW50byB0aGUgbmF0aXZlIGluaXQgZnVuY3Rpb24g Ki8KIAlyZXR1cm4gKGhhbW1lcl90aW1lKDAsIHBoeXNmcmVlKSk7CiB9CkBAIC0xNzgzLDE3ICsx ODE2LDcgQEAgaGFtbWVyX3RpbWUodV9pbnQ2NF90IG1vZHVsZXAsIHVfaW50NjRfdCBwaHlzZnJl ZSkKIAkgKi8KIAlwcm9jX2xpbmt1cDAoJnByb2MwLCAmdGhyZWFkMCk7CiAKLQlwcmVsb2FkX21l dGFkYXRhID0gKGNhZGRyX3QpKHVpbnRwdHJfdCkobW9kdWxlcCArIEtFUk5CQVNFKTsKLQlwcmVs b2FkX2Jvb3RzdHJhcF9yZWxvY2F0ZShLRVJOQkFTRSk7Ci0Ja21kcCA9IHByZWxvYWRfc2VhcmNo X2J5X3R5cGUoImVsZiBrZXJuZWwiKTsKLQlpZiAoa21kcCA9PSBOVUxMKQotCQlrbWRwID0gcHJl bG9hZF9zZWFyY2hfYnlfdHlwZSgiZWxmNjQga2VybmVsIik7Ci0JYm9vdGhvd3RvID0gTURfRkVU Q0goa21kcCwgTU9ESU5GT01EX0hPV1RPLCBpbnQpOwotCWtlcm5fZW52cCA9IE1EX0ZFVENIKGtt ZHAsIE1PRElORk9NRF9FTlZQLCBjaGFyICopICsgS0VSTkJBU0U7Ci0jaWZkZWYgRERCCi0Ja3N5 bV9zdGFydCA9IE1EX0ZFVENIKGttZHAsIE1PRElORk9NRF9TU1lNLCB1aW50cHRyX3QpOwotCWtz eW1fZW5kID0gTURfRkVUQ0goa21kcCwgTU9ESU5GT01EX0VTWU0sIHVpbnRwdHJfdCk7Ci0jZW5k aWYKKwlrbWRwID0gaW5pdF9vcHMucGFyc2VfcHJlbG9hZF9kYXRhKG1vZHVsZXApOwogCiAJLyog SW5pdCBiYXNpYyB0dW5hYmxlcywgaHogZXRjICovCiAJaW5pdF9wYXJhbTEoKTsKZGlmZiAtLWdp dCBhL3N5cy9hbWQ2NC9pbmNsdWRlL3N5c2FyY2guaCBiL3N5cy9hbWQ2NC9pbmNsdWRlL3N5c2Fy Y2guaAppbmRleCBjZDM4MGQ0Li41OGFjOGNkIDEwMDY0NAotLS0gYS9zeXMvYW1kNjQvaW5jbHVk ZS9zeXNhcmNoLmgKKysrIGIvc3lzL2FtZDY0L2luY2x1ZGUvc3lzYXJjaC5oCkBAIC00LDMgKzQs MTUgQEAKIC8qICRGcmVlQlNEJCAqLwogCiAjaW5jbHVkZSA8eDg2L3N5c2FyY2guaD4KKworLyoK KyAqIFN0cnVjdCBjb250YWluaW5nIHBvaW50ZXJzIHRvIGluaXQgZnVuY3Rpb25zIHdob3NlCisg KiBpbXBsZW1lbnRhdGlvbiBpcyBydW4gdGltZSBzZWxlY3RhYmxlLiAgU2VsZWN0aW9uIGNhbiBi ZSBtYWRlLAorICogZm9yIGV4YW1wbGUsIGJhc2VkIG9uIGRldGVjdGlvbiBvZiBhIEJJT1MgdmFy aWFudCBvcgorICogaHlwZXJ2aXNvciBlbnZpcm9ubWVudC4KKyAqLworc3RydWN0IGluaXRfb3Bz IHsKKwljYWRkcl90CSgqcGFyc2VfcHJlbG9hZF9kYXRhKSh1X2ludDY0X3QpOworfTsKKworZXh0 ZXJuIHN0cnVjdCBpbml0X29wcyBpbml0X29wczsKZGlmZiAtLWdpdCBhL3N5cy9jb25mL2ZpbGVz LmFtZDY0IGIvc3lzL2NvbmYvZmlsZXMuYW1kNjQKaW5kZXggZDFiZGNkOS4uYjNiMTMxOSAxMDA2 NDQKLS0tIGEvc3lzL2NvbmYvZmlsZXMuYW1kNjQKKysrIGIvc3lzL2NvbmYvZmlsZXMuYW1kNjQK QEAgLTU2NiwzICs1NjYsNCBAQCB4ODYveDg2L25leHVzLmMJCQlzdGFuZGFyZAogeDg2L3g4Ni90 c2MuYwkJCXN0YW5kYXJkCiB4ODYveGVuL2h2bS5jCQkJb3B0aW9uYWwJeGVuaHZtCiB4ODYveGVu L3hlbl9pbnRyLmMJCW9wdGlvbmFsCXhlbiB8IHhlbmh2bQoreDg2L3hlbi9wdi5jCQkJb3B0aW9u YWwJeGVuaHZtCmRpZmYgLS1naXQgYS9zeXMveDg2L3hlbi9wdi5jIGIvc3lzL3g4Ni94ZW4vcHYu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmFjYTMyCi0tLSAvZGV2L251 bGwKKysrIGIvc3lzL3g4Ni94ZW4vcHYuYwpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHly aWdodCAoYykgMjAwNCBDaHJpc3RpYW4gTGltcGFjaC4KKyAqIENvcHlyaWdodCAoYykgMjAwNC0y MDA2LDIwMDggS2lwIE1hY3kKKyAqIENvcHlyaWdodCAoYykgMjAxMyBSb2dlciBQYXUgTW9ubsOp IDxyb2dlci5wYXVAY2l0cml4LmNvbT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05U UklCVVRPUlMgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBD T05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig QlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElU WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO IEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs dWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworI2luY2x1ZGUgPHN5 cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9idXMuaD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+ CisjaW5jbHVkZSA8c3lzL3JlYm9vdC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorCisjaW5j bHVkZSA8bWFjaGluZS9zeXNhcmNoLmg+CisKKyNpbmNsdWRlIDx4ZW4veGVuLW9zLmg+CisjaW5j bHVkZSA8eGVuL3B2Lmg+CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZvcndhcmQg RGVjbGFyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitzdGF0aWMgY2FkZHJf dCB4ZW5fcHZfcGFyc2VfcHJlbG9hZF9kYXRhKHVfaW50NjRfdCk7CisKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gR2xvYmFsIERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSovCisvKiBYZW4gaW5pdF9vcHMgaW1wbGVtZW50YXRpb24uICovCitzdHJ1Y3QgaW5p dF9vcHMgeGVuX2luaXRfb3BzID0geworCS5wYXJzZV9wcmVsb2FkX2RhdGEgPQl4ZW5fcHZfcGFy c2VfcHJlbG9hZF9kYXRhLAorfTsKKworc3RhdGljIHN0cnVjdAoreworCWNvbnN0IGNoYXIJKmV2 OworCWludAkJbWFzazsKK30gaG93dG9fbmFtZXNbXSA9IHsKKwl7ImJvb3RfYXNrbmFtZSIsCVJC X0FTS05BTUV9LAorCXsiYm9vdF9zaW5nbGUiLAkJUkJfU0lOR0xFfSwKKwl7ImJvb3Rfbm9zeW5j IiwJCVJCX05PU1lOQ30sCisJeyJib290X2hhbHQiLAkJUkJfQVNLTkFNRX0sCisJeyJib290X3Nl cmlhbCIsCQlSQl9TRVJJQUx9LAorCXsiYm9vdF9jZHJvbSIsCQlSQl9DRFJPTX0sCisJeyJib290 X2dkYiIsCQlSQl9HREJ9LAorCXsiYm9vdF9nZGJfcGF1c2UiLAlSQl9SRVNFUlZFRDF9LAorCXsi Ym9vdF92ZXJib3NlIiwJUkJfVkVSQk9TRX0sCisJeyJib290X211bHRpY29ucyIsCVJCX01VTFRJ UExFfSwKKwl7TlVMTCwJMH0KK307CisKKy8qCisgKiBGdW5jdGlvbnMgdG8gY29udmVydCB0aGUg ImV4dHJhIiBwYXJhbWV0ZXJzIHBhc3NlZCBieSBYZW4KKyAqIGludG8gRnJlZUJTRCBib290IG9w dGlvbnMgKGZyb20gdGhlIGkzODYgWGVuIHBvcnQpLgorICovCitzdGF0aWMgY2hhciAqCit4ZW5f c2V0Ym9vdGVudihjaGFyICpjbWRfbGluZSkKK3sKKwljaGFyICpjbWRfbGluZV9uZXh0OworCisg ICAgICAgIC8qIFNraXAgbGVhZGluZyBzcGFjZXMgKi8KKyAgICAgICAgZm9yICg7ICpjbWRfbGlu ZSA9PSAnICc7IGNtZF9saW5lKyspOworCisJZm9yIChjbWRfbGluZV9uZXh0ID0gY21kX2xpbmU7 IHN0cnNlcCgmY21kX2xpbmVfbmV4dCwgIiwiKSAhPSBOVUxMOyk7CisJcmV0dXJuIChjbWRfbGlu ZSk7Cit9CisKK3N0YXRpYyBpbnQKK3hlbl9ib290aG93dG8oY2hhciAqZW52cCkKK3sKKwlpbnQg aSwgaG93dG8gPSAwOworCisJLyogZ2V0IGVxdWl2YWxlbnRzIGZyb20gdGhlIGVudmlyb25tZW50 ICovCisJZm9yIChpID0gMDsgaG93dG9fbmFtZXNbaV0uZXYgIT0gTlVMTDsgaSsrKQorCQlpZiAo Z2V0ZW52KGhvd3RvX25hbWVzW2ldLmV2KSAhPSBOVUxMKQorCQkJaG93dG8gfD0gaG93dG9fbmFt ZXNbaV0ubWFzazsKKwlyZXR1cm4gKGhvd3RvKTsKK30KKworc3RhdGljIGNhZGRyX3QKK3hlbl9w dl9wYXJzZV9wcmVsb2FkX2RhdGEodV9pbnQ2NF90IG1vZHVsZXApCit7CisJLyogUGFyc2UgdGhl IGV4dHJhIGJvb3QgaW5mb3JtYXRpb24gZ2l2ZW4gYnkgWGVuICovCisJaWYgKEhZUEVSVklTT1Jf c3RhcnRfaW5mby0+Y21kX2xpbmUpCisJCWtlcm5fZW52cCA9IHhlbl9zZXRib290ZW52KEhZUEVS VklTT1Jfc3RhcnRfaW5mby0+Y21kX2xpbmUpOworCWJvb3Rob3d0byB8PSB4ZW5fYm9vdGhvd3Rv KGtlcm5fZW52cCk7CisKKwlyZXR1cm4gKE5VTEwpOworfQorCit2b2lkCit4ZW5fcHZfc2V0X2lu aXRfb3BzKHZvaWQpCit7CisJLyogSW5pdCBvcHMgZm9yIFhlbiBQViAqLworCWluaXRfb3BzID0g eGVuX2luaXRfb3BzOworfQpkaWZmIC0tZ2l0IGEvc3lzL3hlbi9wdi5oIGIvc3lzL3hlbi9wdi5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYjg3NzYKLS0tIC9kZXYvbnVs bAorKysgYi9zeXMveGVuL3B2LmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg aW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu IElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiAk RnJlZUJTRCQKKyAqLworCisjaWZuZGVmCV9fWEVOX1BWX0hfXworI2RlZmluZQlfX1hFTl9QVl9I X18KKwordm9pZAl4ZW5fcHZfc2V0X2luaXRfb3BzKHZvaWQpOworCisjZW5kaWYJLyogX19YRU5f UFZfSF9fICovCi0tIAoxLjcuNy41IChBcHBsZSBHaXQtMjYpCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmcmVlYnNkLWN1cnJlbnRAZnJlZWJzZC5vcmcg bWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5mcmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zy ZWVic2QtY3VycmVudApUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0byAiZnJlZWJzZC1j dXJyZW50LXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIg==
文章代碼(AID): #1IjbqtQs (FB_current)