LyoKICoJVmlkZW8gZm9yIExpbnV4IFR3bwogKgogKglBIGdlbmVyaWMgdmlkZW8gZGV2aWNlIGludGVyZmFjZSBmb3IgdGhlIExJTlVYIG9wZXJhdGluZyBzeXN0ZW0KICoJdXNpbmcgYSBzZXQgb2YgZGV2aWNlIHN0cnVjdHVyZXMvdmVjdG9ycyBmb3IgbG93IGxldmVsIG9wZXJhdGlvbnMuCiAqCiAqCVRoaXMgZmlsZSByZXBsYWNlcyB0aGUgdmlkZW9kZXYuYyBmaWxlIHRoYXQgY29tZXMgd2l0aCB0aGUKICoJcmVndWxhciBrZXJuZWwgZGlzdHJpYnV0aW9uLgogKgogKglUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqCW1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqCWFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbgogKgkyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBBdXRob3I6CUJpbGwgRGlya3MgPGJkaXJrc0BwYWNiZWxsLm5ldD4KICoJCWJhc2VkIG9uIGNvZGUgYnkgQWxhbiBDb3gsIDxhbGFuQGN5bXJ1Lm5ldD4KICoKICovCgovKgogKiBWaWRlbyBjYXB0dXJlIGludGVyZmFjZSBmb3IgTGludXgKICoKICoJQSBnZW5lcmljIHZpZGVvIGRldmljZSBpbnRlcmZhY2UgZm9yIHRoZSBMSU5VWCBvcGVyYXRpbmcgc3lzdGVtCiAqCXVzaW5nIGEgc2V0IG9mIGRldmljZSBzdHJ1Y3R1cmVzL3ZlY3RvcnMgZm9yIGxvdyBsZXZlbCBvcGVyYXRpb25zLgogKgogKgkJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKgkJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICoJCWFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbgogKgkJMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogQXV0aG9yOglBbGFuIENveCwgPGFsYW5AcmVkaGF0LmNvbT4KICoKICogRml4ZXM6CiAqLwoKLyoKICogVmlkZW80bGludXggMS8yIGludGVncmF0aW9uIGJ5IEp1c3RpbiBTY2hvZW1hbgogKiA8anVzdGluQHN1bnRpZ2VyLmVlLnVwLmFjLnphPgogKiAyLjQgUFJPQ0ZTIHN1cHBvcnQgcG9ydGVkIGZyb20gMi40IGtlcm5lbHMgYnkKICogIEnxYWtpIEdhcmPtYSBFdHhlYmFycmlhIDxnYXJldHhlQGV1c2thbG5ldC5uZXQ+CiAqIE1ha2VmaWxlIGZpeCBieSAiVy4gTWljaGFlbCBQZXR1bGxvIiA8bWlrZUBmbHluLm9yZz4KICogMi40IGRldmZzIHN1cHBvcnQgcG9ydGVkIGZyb20gMi40IGtlcm5lbHMgYnkKICogIERhbiBNZXJpbGxhdCA8ZGFuQG1lcmlsbGF0Lm9yZz4KICogQWRkZWQgR2VyZCBLbm9ycnMgdjRsMSBlbmhhbmNlbWVudHMgKEp1c3RpbiBTY2hvZW1hbikKICovCgojaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CiNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiNpbmNsdWRlIDxsaW51eC9zbXBfbG9jay5oPgojaW5jbHVkZSA8bGludXgvbW0uaD4KI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgojaW5jbHVkZSA8bGludXgvZXJybm8uaD4KI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgojaW5jbHVkZSA8YXNtL2lvLmg+CiNpbmNsdWRlIDxhc20vZGl2NjQuaD4KCiNpZmRlZiBDT05GSUdfS01PRAojaW5jbHVkZSA8bGludXgva21vZC5oPgojZW5kaWYKCiNpZiBkZWZpbmVkKENPTkZJR19VU1QpIHx8IGRlZmluZWQoQ09ORklHX1VTVF9NT0RVTEUpCiNpbmNsdWRlIDxsaW51eC91c3QuaD4KI2VuZGlmCgoKI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Lmg+CgpNT0RVTEVfQVVUSE9SKCJCaWxsIERpcmtzLCBKdXN0aW4gU2Nob2VtYW4sIEdlcmQgS25vcnIiKTsKTU9EVUxFX0RFU0NSSVBUSU9OKCJtaXNjIGhlbHBlciBmdW5jdGlvbnMgZm9yIHY0bDIgZGV2aWNlIGRyaXZlcnMiKTsKTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwoKLyoKICoKICoJViA0IEwgMiAgIEQgUiBJIFYgRSBSICAgSCBFIEwgUCBFIFIgICBBIFAgSQogKgogKi8KCi8qCiAqICBWaWRlbyBTdGFuZGFyZCBPcGVyYXRpb25zIChjb250cmlidXRlZCBieSBNaWNoYWVsIFNjaGltZWspCiAqLwoKCi8qIEZpbGwgaW4gdGhlIGZpZWxkcyBvZiBhIHY0bDJfc3RhbmRhcmQgc3RydWN0dXJlIGFjY29yZGluZyB0byB0aGUKICAgJ2lkJyBhbmQgJ3RyYW5zbWlzc2lvbicgcGFyYW1ldGVycy4gIFJldHVybnMgbmVnYXRpdmUgb24gZXJyb3IuICAqLwppbnQgdjRsMl92aWRlb19zdGRfY29uc3RydWN0KHN0cnVjdCB2NGwyX3N0YW5kYXJkICp2cywKCQkJICAgICBpbnQgaWQsIGNoYXIgKm5hbWUpCnsKCXUzMiBpbmRleCA9IHZzLT5pbmRleDsKCgltZW1zZXQodnMsIDAsIHNpemVvZihzdHJ1Y3QgdjRsMl9zdGFuZGFyZCkpOwoJdnMtPmluZGV4ID0gaW5kZXg7Cgl2cy0+aWQgICAgPSBpZDsKCWlmIChpZCAmIChWNEwyX1NURF9OVFNDIHwgVjRMMl9TVERfUEFMX00pKSB7CgkJdnMtPmZyYW1lcGVyaW9kLm51bWVyYXRvciA9IDEwMDE7CgkJdnMtPmZyYW1lcGVyaW9kLmRlbm9taW5hdG9yID0gMzAwMDA7CgkJdnMtPmZyYW1lbGluZXMgPSA1MjU7Cgl9IGVsc2UgewoJCXZzLT5mcmFtZXBlcmlvZC5udW1lcmF0b3IgPSAxOwoJCXZzLT5mcmFtZXBlcmlvZC5kZW5vbWluYXRvciA9IDI1OwoJCXZzLT5mcmFtZWxpbmVzID0gNjI1OwoJfQoJc3RybGNweSh2cy0+bmFtZSxuYW1lLHNpemVvZih2cy0+bmFtZSkpOwoJcmV0dXJuIDA7Cn0KCgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiBwcmlvcml0eSBoYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwoKI2RlZmluZSBWNEwyX1BSSU9fVkFMSUQodmFsKSAodmFsID09IFY0TDJfUFJJT1JJVFlfQkFDS0dST1VORCAgIHx8IFwKCQkJICAgICAgdmFsID09IFY0TDJfUFJJT1JJVFlfSU5URVJBQ1RJVkUgIHx8IFwKCQkJICAgICAgdmFsID09IFY0TDJfUFJJT1JJVFlfUkVDT1JEKQoKaW50IHY0bDJfcHJpb19pbml0KHN0cnVjdCB2NGwyX3ByaW9fc3RhdGUgKmdsb2JhbCkKewoJbWVtc2V0KGdsb2JhbCwwLHNpemVvZigqZ2xvYmFsKSk7CglyZXR1cm4gMDsKfQoKaW50IHY0bDJfcHJpb19jaGFuZ2Uoc3RydWN0IHY0bDJfcHJpb19zdGF0ZSAqZ2xvYmFsLCBlbnVtIHY0bDJfcHJpb3JpdHkgKmxvY2FsLAoJCSAgICAgZW51bSB2NGwyX3ByaW9yaXR5IG5ldykKewoJaWYgKCFWNEwyX1BSSU9fVkFMSUQobmV3KSkKCQlyZXR1cm4gLUVJTlZBTDsKCWlmICgqbG9jYWwgPT0gbmV3KQoJCXJldHVybiAwOwoKCWF0b21pY19pbmMoJmdsb2JhbC0+cHJpb3NbbmV3XSk7CglpZiAoVjRMMl9QUklPX1ZBTElEKCpsb2NhbCkpCgkJYXRvbWljX2RlYygmZ2xvYmFsLT5wcmlvc1sqbG9jYWxdKTsKCSpsb2NhbCA9IG5ldzsKCXJldHVybiAwOwp9CgppbnQgdjRsMl9wcmlvX29wZW4oc3RydWN0IHY0bDJfcHJpb19zdGF0ZSAqZ2xvYmFsLCBlbnVtIHY0bDJfcHJpb3JpdHkgKmxvY2FsKQp7CglyZXR1cm4gdjRsMl9wcmlvX2NoYW5nZShnbG9iYWwsbG9jYWwsVjRMMl9QUklPUklUWV9ERUZBVUxUKTsKfQoKaW50IHY0bDJfcHJpb19jbG9zZShzdHJ1Y3QgdjRsMl9wcmlvX3N0YXRlICpnbG9iYWwsIGVudW0gdjRsMl9wcmlvcml0eSAqbG9jYWwpCnsKCWlmIChWNEwyX1BSSU9fVkFMSUQoKmxvY2FsKSkKCQlhdG9taWNfZGVjKCZnbG9iYWwtPnByaW9zWypsb2NhbF0pOwoJcmV0dXJuIDA7Cn0KCmVudW0gdjRsMl9wcmlvcml0eSB2NGwyX3ByaW9fbWF4KHN0cnVjdCB2NGwyX3ByaW9fc3RhdGUgKmdsb2JhbCkKewoJaWYgKGF0b21pY19yZWFkKCZnbG9iYWwtPnByaW9zW1Y0TDJfUFJJT1JJVFlfUkVDT1JEXSkgPiAwKQoJCXJldHVybiBWNEwyX1BSSU9SSVRZX1JFQ09SRDsKCWlmIChhdG9taWNfcmVhZCgmZ2xvYmFsLT5wcmlvc1tWNEwyX1BSSU9SSVRZX0lOVEVSQUNUSVZFXSkgPiAwKQoJCXJldHVybiBWNEwyX1BSSU9SSVRZX0lOVEVSQUNUSVZFOwoJaWYgKGF0b21pY19yZWFkKCZnbG9iYWwtPnByaW9zW1Y0TDJfUFJJT1JJVFlfQkFDS0dST1VORF0pID4gMCkKCQlyZXR1cm4gVjRMMl9QUklPUklUWV9CQUNLR1JPVU5EOwoJcmV0dXJuIFY0TDJfUFJJT1JJVFlfVU5TRVQ7Cn0KCmludCB2NGwyX3ByaW9fY2hlY2soc3RydWN0IHY0bDJfcHJpb19zdGF0ZSAqZ2xvYmFsLCBlbnVtIHY0bDJfcHJpb3JpdHkgKmxvY2FsKQp7CglpZiAoKmxvY2FsIDwgdjRsMl9wcmlvX21heChnbG9iYWwpKQoJCXJldHVybiAtRUJVU1k7CglyZXR1cm4gMDsKfQoKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qIHNvbWUgYXJyYXlzIGZvciBwcmV0dHktcHJpbnRpbmcgZGVidWcgbWVzc2FnZXMgICAgICAgICAgICAgICAgICAgICovCgpjaGFyICp2NGwyX2ZpZWxkX25hbWVzW10gPSB7CglbVjRMMl9GSUVMRF9BTlldICAgICAgICA9ICJhbnkiLAoJW1Y0TDJfRklFTERfTk9ORV0gICAgICAgPSAibm9uZSIsCglbVjRMMl9GSUVMRF9UT1BdICAgICAgICA9ICJ0b3AiLAoJW1Y0TDJfRklFTERfQk9UVE9NXSAgICAgPSAiYm90dG9tIiwKCVtWNEwyX0ZJRUxEX0lOVEVSTEFDRURdID0gImludGVybGFjZWQiLAoJW1Y0TDJfRklFTERfU0VRX1RCXSAgICAgPSAic2VxLXRiIiwKCVtWNEwyX0ZJRUxEX1NFUV9CVF0gICAgID0gInNlcS1idCIsCglbVjRMMl9GSUVMRF9BTFRFUk5BVEVdICA9ICJhbHRlcm5hdGUiLAp9OwoKY2hhciAqdjRsMl90eXBlX25hbWVzW10gPSB7CglbVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFXSA9ICJ2aWRlby1jYXAiLAoJW1Y0TDJfQlVGX1RZUEVfVklERU9fT1ZFUkxBWV0gPSAidmlkZW8tb3ZlciIsCglbVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRdICA9ICJ2aWRlby1vdXQiLAoJW1Y0TDJfQlVGX1RZUEVfVkJJX0NBUFRVUkVdICAgPSAidmJpLWNhcCIsCglbVjRMMl9CVUZfVFlQRV9WQklfT1VUUFVUXSAgICA9ICJ2Ymktb3V0IiwKfTsKCmNoYXIgKnY0bDJfaW9jdGxfbmFtZXNbMjU2XSA9IHsKCVswIC4uLiAyNTVdICAgICAgICAgICAgICAgICAgICAgID0gIlVOS05PV04iLAoJW19JT0NfTlIoVklESU9DX1FVRVJZQ0FQKV0gICAgICAgPSAiVklESU9DX1FVRVJZQ0FQIiwKCVtfSU9DX05SKFZJRElPQ19SRVNFUlZFRCldICAgICAgID0gIlZJRElPQ19SRVNFUlZFRCIsCglbX0lPQ19OUihWSURJT0NfRU5VTV9GTVQpXSAgICAgICA9ICJWSURJT0NfRU5VTV9GTVQiLAoJW19JT0NfTlIoVklESU9DX0dfRk1UKV0gICAgICAgICAgPSAiVklESU9DX0dfRk1UIiwKCVtfSU9DX05SKFZJRElPQ19TX0ZNVCldICAgICAgICAgID0gIlZJRElPQ19TX0ZNVCIsCglbX0lPQ19OUihWSURJT0NfUkVRQlVGUyldICAgICAgICA9ICJWSURJT0NfUkVRQlVGUyIsCglbX0lPQ19OUihWSURJT0NfUVVFUllCVUYpXSAgICAgICA9ICJWSURJT0NfUVVFUllCVUYiLAoJW19JT0NfTlIoVklESU9DX0dfRkJVRildICAgICAgICAgPSAiVklESU9DX0dfRkJVRiIsCglbX0lPQ19OUihWSURJT0NfU19GQlVGKV0gICAgICAgICA9ICJWSURJT0NfU19GQlVGIiwKCVtfSU9DX05SKFZJRElPQ19PVkVSTEFZKV0gICAgICAgID0gIlZJRElPQ19PVkVSTEFZIiwKCVtfSU9DX05SKFZJRElPQ19RQlVGKV0gICAgICAgICAgID0gIlZJRElPQ19RQlVGIiwKCVtfSU9DX05SKFZJRElPQ19EUUJVRildICAgICAgICAgID0gIlZJRElPQ19EUUJVRiIsCglbX0lPQ19OUihWSURJT0NfU1RSRUFNT04pXSAgICAgICA9ICJWSURJT0NfU1RSRUFNT04iLAoJW19JT0NfTlIoVklESU9DX1NUUkVBTU9GRildICAgICAgPSAiVklESU9DX1NUUkVBTU9GRiIsCglbX0lPQ19OUihWSURJT0NfR19QQVJNKV0gICAgICAgICA9ICJWSURJT0NfR19QQVJNIiwKCVtfSU9DX05SKFZJRElPQ19TX1BBUk0pXSAgICAgICAgID0gIlZJRElPQ19TX1BBUk0iLAoJW19JT0NfTlIoVklESU9DX0dfU1REKV0gICAgICAgICAgPSAiVklESU9DX0dfU1REIiwKCVtfSU9DX05SKFZJRElPQ19TX1NURCldICAgICAgICAgID0gIlZJRElPQ19TX1NURCIsCglbX0lPQ19OUihWSURJT0NfRU5VTVNURCldICAgICAgICA9ICJWSURJT0NfRU5VTVNURCIsCglbX0lPQ19OUihWSURJT0NfRU5VTUlOUFVUKV0gICAgICA9ICJWSURJT0NfRU5VTUlOUFVUIiwKCVtfSU9DX05SKFZJRElPQ19HX0NUUkwpXSAgICAgICAgID0gIlZJRElPQ19HX0NUUkwiLAoJW19JT0NfTlIoVklESU9DX1NfQ1RSTCldICAgICAgICAgPSAiVklESU9DX1NfQ1RSTCIsCglbX0lPQ19OUihWSURJT0NfR19UVU5FUildICAgICAgICA9ICJWSURJT0NfR19UVU5FUiIsCglbX0lPQ19OUihWSURJT0NfU19UVU5FUildICAgICAgICA9ICJWSURJT0NfU19UVU5FUiIsCglbX0lPQ19OUihWSURJT0NfR19BVURJTyldICAgICAgICA9ICJWSURJT0NfR19BVURJTyIsCglbX0lPQ19OUihWSURJT0NfU19BVURJTyldICAgICAgICA9ICJWSURJT0NfU19BVURJTyIsCglbX0lPQ19OUihWSURJT0NfUVVFUllDVFJMKV0gICAgICA9ICJWSURJT0NfUVVFUllDVFJMIiwKCVtfSU9DX05SKFZJRElPQ19RVUVSWU1FTlUpXSAgICAgID0gIlZJRElPQ19RVUVSWU1FTlUiLAoJW19JT0NfTlIoVklESU9DX0dfSU5QVVQpXSAgICAgICAgPSAiVklESU9DX0dfSU5QVVQiLAoJW19JT0NfTlIoVklESU9DX1NfSU5QVVQpXSAgICAgICAgPSAiVklESU9DX1NfSU5QVVQiLAoJW19JT0NfTlIoVklESU9DX0dfT1VUUFVUKV0gICAgICAgPSAiVklESU9DX0dfT1VUUFVUIiwKCVtfSU9DX05SKFZJRElPQ19TX09VVFBVVCldICAgICAgID0gIlZJRElPQ19TX09VVFBVVCIsCglbX0lPQ19OUihWSURJT0NfRU5VTU9VVFBVVCldICAgICA9ICJWSURJT0NfRU5VTU9VVFBVVCIsCglbX0lPQ19OUihWSURJT0NfR19BVURPVVQpXSAgICAgICA9ICJWSURJT0NfR19BVURPVVQiLAoJW19JT0NfTlIoVklESU9DX1NfQVVET1VUKV0gICAgICAgPSAiVklESU9DX1NfQVVET1VUIiwKCVtfSU9DX05SKFZJRElPQ19HX01PRFVMQVRPUildICAgID0gIlZJRElPQ19HX01PRFVMQVRPUiIsCglbX0lPQ19OUihWSURJT0NfU19NT0RVTEFUT1IpXSAgICA9ICJWSURJT0NfU19NT0RVTEFUT1IiLAoJW19JT0NfTlIoVklESU9DX0dfRlJFUVVFTkNZKV0gICAgPSAiVklESU9DX0dfRlJFUVVFTkNZIiwKCVtfSU9DX05SKFZJRElPQ19TX0ZSRVFVRU5DWSldICAgID0gIlZJRElPQ19TX0ZSRVFVRU5DWSIsCglbX0lPQ19OUihWSURJT0NfQ1JPUENBUCldICAgICAgICA9ICJWSURJT0NfQ1JPUENBUCIsCglbX0lPQ19OUihWSURJT0NfR19DUk9QKV0gICAgICAgICA9ICJWSURJT0NfR19DUk9QIiwKCVtfSU9DX05SKFZJRElPQ19TX0NST1ApXSAgICAgICAgID0gIlZJRElPQ19TX0NST1AiLAoJW19JT0NfTlIoVklESU9DX0dfSlBFR0NPTVApXSAgICAgPSAiVklESU9DX0dfSlBFR0NPTVAiLAoJW19JT0NfTlIoVklESU9DX1NfSlBFR0NPTVApXSAgICAgPSAiVklESU9DX1NfSlBFR0NPTVAiLAoJW19JT0NfTlIoVklESU9DX1FVRVJZU1REKV0gICAgICAgPSAiVklESU9DX1FVRVJZU1REIiwKCVtfSU9DX05SKFZJRElPQ19UUllfRk1UKV0gICAgICAgID0gIlZJRElPQ19UUllfRk1UIiwKfTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgpFWFBPUlRfU1lNQk9MKHY0bDJfdmlkZW9fc3RkX2NvbnN0cnVjdCk7CgpFWFBPUlRfU1lNQk9MKHY0bDJfcHJpb19pbml0KTsKRVhQT1JUX1NZTUJPTCh2NGwyX3ByaW9fY2hhbmdlKTsKRVhQT1JUX1NZTUJPTCh2NGwyX3ByaW9fb3Blbik7CkVYUE9SVF9TWU1CT0wodjRsMl9wcmlvX2Nsb3NlKTsKRVhQT1JUX1NZTUJPTCh2NGwyX3ByaW9fbWF4KTsKRVhQT1JUX1NZTUJPTCh2NGwyX3ByaW9fY2hlY2spOwoKRVhQT1JUX1NZTUJPTCh2NGwyX2ZpZWxkX25hbWVzKTsKRVhQT1JUX1NZTUJPTCh2NGwyX3R5cGVfbmFtZXMpOwpFWFBPUlRfU1lNQk9MKHY0bDJfaW9jdGxfbmFtZXMpOwoKLyoKICogTG9jYWwgdmFyaWFibGVzOgogKiBjLWJhc2ljLW9mZnNldDogOAogKiBFbmQ6CiAqLwo=