脏管提权及延伸思考

camer   ·   发表于 2023-05-04 13:48:56   ·   技术文章
IyMgMHgwMSDmvI/mtJ7mpoLov7AKCkxpbnV4IOaPkOadg+a8j+a0nu+8muiEj+euoea8j+a0nu+8iENWRS0yMDIyLTA4NDfvvInvvIzmlLvlh7vogIXlj6/ku6XliKnnlKjor6XmvI/mtJ7lrp7njrDkvY7mnYPpmZDnlKjmiLfmj5DljYfoh7Mgcm9vdCDmnYPpmZDvvIzkuJTog73lr7nkuLvmnLrku7vmhI/lj6/or7vmlofku7bov5vooYzor7vlhpnjgILor6XmvI/mtJ7nmoTkuqfnlJ/mupDkuo7mlrDnrqHpgZPnvJPlhrLljLrnu5PmnoTnmoTigJxmbGFn4oCd5Y+Y6YeP5ZyoIExpbnV4IOWGheaguOS4reeahCBjb3B5X3BhZ2VfdG9faXRlcl9waXBlIOWSjCBwdXNoX3BpcGUg5Ye95pWw5Lit57y65LmP5q2j56Gu5Yid5aeL5YyW77yM5LuO6ICM5a+86Ie05YWB6K646KaG55uW5Lu75oSP5Y+q6K+75paH5Lu25Lit55qE5pWw5o2u77yM5L2/5b6X6Z2e54m55p2D5pys5Zyw55So5oi35Yip55So6K+l5ryP5rSe5Y+v5Lul5o+Q5Y2H5p2D6ZmQ6Iezcm9vdOOAggoKIyMgMHgwMiDlvbHlk43ojIPlm7QKCi0gTGludXggS2VybmVs54mI5pysICZndDs9IDUuOAotIExpbnV4IEtlcm5lbOeJiOacrCAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKIAojaWZuZGVmIFBBR0VfU0laRQojZGVmaW5lIFBBR0VfU0laRSA0MDk2CiNlbmRpZgogCi8qKgogKiBDcmVhdGUgYSBwaXBlIHdoZXJlIGFsbCAiYnVmcyIgb24gdGhlIHBpcGVfaW5vZGVfaW5mbyByaW5nIGhhdmUgdGhlCiAqIFBJUEVfQlVGX0ZMQUdfQ0FOX01FUkdFIGZsYWcgc2V0LgogKi8Kc3RhdGljIHZvaWQgcHJlcGFyZV9waXBlKGludCBwWzJdKQp7CglpZiAocGlwZShwKSkgYWJvcnQoKTsKIAkvLyDojrflj5ZQaXBl5Y+v5L2/55So55qE5pyA5aSn6aG16Z2i5pWw6YePCgljb25zdCB1bnNpZ25lZCBwaXBlX3NpemUgPSBmY250bChwWzFdLCBGX0dFVFBJUEVfU1opOwoJc3RhdGljIGNoYXIgYnVmZmVyWzQwOTZdOwogCS8vIOS7u+aEj+aVsOaNruWhq+WFhQoJLyogZmlsbCB0aGUgcGlwZSBjb21wbGV0ZWx5OyBlYWNoIHBpcGVfYnVmZmVyIHdpbGwgbm93IGhhdmUKCSAgIHRoZSBQSVBFX0JVRl9GTEFHX0NBTl9NRVJHRSBmbGFnICovCglmb3IgKHVuc2lnbmVkIHIgPSBwaXBlX3NpemU7IHIgJmd0OyAwOykgewoJCXVuc2lnbmVkIG4gPSByICZndDsgc2l6ZW9mKGJ1ZmZlcikgPyBzaXplb2YoYnVmZmVyKSA6IHI7CgkJd3JpdGUocFsxXSwgYnVmZmVyLCBuKTsKCQlyIC09IG47Cgl9CiAJLy/muIXnqbpQaXBlCgkvKiBkcmFpbiB0aGUgcGlwZSwgZnJlZWluZyBhbGwgcGlwZV9idWZmZXIgaW5zdGFuY2VzIChidXQKCSAgIGxlYXZpbmcgdGhlIGZsYWdzIGluaXRpYWxpemVkKSAqLwoJZm9yICh1bnNpZ25lZCByID0gcGlwZV9zaXplOyByICZndDsgMDspIHsKCQl1bnNpZ25lZCBuID0gciAmZ3Q7IHNpemVvZihidWZmZXIpID8gc2l6ZW9mKGJ1ZmZlcikgOiByOwoJCXJlYWQocFswXSwgYnVmZmVyLCBuKTsKCQlyIC09IG47Cgl9CiAKCS8qIHRoZSBwaXBlIGlzIG5vdyBlbXB0eSwgYW5kIGlmIHNvbWVib2R5IGFkZHMgYSBuZXcKCSAgIHBpcGVfYnVmZmVyIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGl0cyAiZmxhZ3MiLCB0aGUgYnVmZmVyCgkgICB3aWxsIGJlIG1lcmdlYWJsZSAqLwp9CiAKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Cgljb25zdCBjaGFyICpjb25zdCBwYXRoID0gIi9ldGMvcGFzc3dkIjsKIAogICAgICAgIHByaW50ZigiQmFja2luZyB1cCAvZXRjL3Bhc3N3ZCB0byAvdG1wL3Bhc3N3ZC5iYWsgLi4uXG4iKTsgIAogICAgICAgIEZJTEUgKmYxID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwgInIiKTsKICAgICAgICBGSUxFICpmMiA9IGZvcGVuKCIvdG1wL3Bhc3N3ZC5iYWsiLCAidyIpOwogCiAgICAgICAgaWYgKGYxID09IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gb3BlbiAvZXRjL3Bhc3N3ZFxuIik7CiAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgICAgICB9IGVsc2UgaWYgKGYyID09IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gb3BlbiAvdG1wL3Bhc3N3ZC5iYWtcbiIpOwogICAgICAgICAgICBmY2xvc2UoZjEpOwogICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgfQogCiAgICAgICAgY2hhciBjOwogICAgICAgIHdoaWxlICgoYyA9IGZnZXRjKGYxKSkgIT0gRU9GKQogICAgICAgICAgICBmcHV0YyhjLCBmMik7CiAKICAgICAgICBmY2xvc2UoZjEpOwogICAgICAgIGZjbG9zZShmMik7CiAKCWxvZmZfdCBvZmZzZXQgPSA0OyAvLyBhZnRlciB0aGUgInJvb3QiCgljb25zdCBjaGFyICpjb25zdCBkYXRhID0gIjokMSRhYXJvbiRwSXdwSndNTWNvenNVeEF0UmE4NXcuOjA6MDp0ZXN0Oi9yb290Oi9iaW4vc2hcbiI7IC8vIG9wZW5zc2wgcGFzc3dkIC0xIC1zYWx0IGFhcm9uIGFhcm9uIAogICAgICAgIHByaW50ZigiU2V0dGluZyByb290IHBhc3N3b3JkIHRvIFwiYWFyb25cIi4uLiIpOwoJY29uc3Qgc2l6ZV90IGRhdGFfc2l6ZSA9IHN0cmxlbihkYXRhKTsKIAoJaWYgKG9mZnNldCAlIFBBR0VfU0laRSA9PSAwKSB7CgkJZnByaW50ZihzdGRlcnIsICJTb3JyeSwgY2Fubm90IHN0YXJ0IHdyaXRpbmcgYXQgYSBwYWdlIGJvdW5kYXJ5XG4iKTsKCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwoJfQogCgljb25zdCBsb2ZmX3QgbmV4dF9wYWdlID0gKG9mZnNldCB8IChQQUdFX1NJWkUgLSAxKSkgKyAxOwoJY29uc3QgbG9mZl90IGVuZF9vZmZzZXQgPSBvZmZzZXQgKyAobG9mZl90KWRhdGFfc2l6ZTsKCWlmIChlbmRfb2Zmc2V0ICZndDsgbmV4dF9wYWdlKSB7CgkJZnByaW50ZihzdGRlcnIsICJTb3JyeSwgY2Fubm90IHdyaXRlIGFjcm9zcyBhIHBhZ2UgYm91bmRhcnlcbiIpOwoJCXJldHVybiBFWElUX0ZBSUxVUkU7Cgl9CiAJLy/miZPlvIDlj6ror7vmlofku7YKCS8qIG9wZW4gdGhlIGlucHV0IGZpbGUgYW5kIHZhbGlkYXRlIHRoZSBzcGVjaWZpZWQgb2Zmc2V0ICovCgljb25zdCBpbnQgZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsgLy8geWVzLCByZWFkLW9ubHkhIDotKQoJaWYgKGZkICBzdC5zdF9zaXplKSB7CgkJZnByaW50ZihzdGRlcnIsICJPZmZzZXQgaXMgbm90IGluc2lkZSB0aGUgZmlsZVxuIik7CgkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKCX0KIAoJaWYgKGVuZF9vZmZzZXQgJmd0OyBzdC5zdF9zaXplKSB7CgkJZnByaW50ZihzdGRlcnIsICJTb3JyeSwgY2Fubm90IGVubGFyZ2UgdGhlIGZpbGVcbiIpOwoJCXJldHVybiBFWElUX0ZBSUxVUkU7Cgl9CiAJLy8g5Yib5bu6UGlwZQoJLyogY3JlYXRlIHRoZSBwaXBlIHdpdGggYWxsIGZsYWdzIGluaXRpYWxpemVkIHdpdGgKCSAgIFBJUEVfQlVGX0ZMQUdfQ0FOX01FUkdFICovCglpbnQgcFsyXTsKCXByZXBhcmVfcGlwZShwKTsKIAkvLyBzcGxpY2UoKeWwhuaWh+S7tjHlrZfoioLmlbDmja7lhpnlhaVQaXBlCgkvKiBzcGxpY2Ugb25lIGJ5dGUgZnJvbSBiZWZvcmUgdGhlIHNwZWNpZmllZCBvZmZzZXQgaW50byB0aGUKCSAgIHBpcGU7IHRoaXMgd2lsbCBhZGQgYSByZWZlcmVuY2UgdG8gdGhlIHBhZ2UgY2FjaGUsIGJ1dAoJICAgc2luY2UgY29weV9wYWdlX3RvX2l0ZXJfcGlwZSgpIGRvZXMgbm90IGluaXRpYWxpemUgdGhlCgkgICAiZmxhZ3MiLCBQSVBFX0JVRl9GTEFHX0NBTl9NRVJHRSBpcyBzdGlsbCBzZXQgKi8KCS0tb2Zmc2V0OwoJc3NpemVfdCBuYnl0ZXMgPSBzcGxpY2UoZmQsICZhbXA7b2Zmc2V0LCBwWzFdLCBOVUxMLCAxLCAwKTsKCWlmIChuYnl0ZXMgCiNpbmNsdWRlIAojaW5jbHVkZSAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKI2luY2x1ZGUgCgojaWZuZGVmIFBBR0VfU0laRQojZGVmaW5lIFBBR0VfU0laRSA0MDk2CiNlbmRpZgoKLyoqCiAqIENyZWF0ZSBhIHBpcGUgd2hlcmUgYWxsICJidWZzIiBvbiB0aGUgcGlwZV9pbm9kZV9pbmZvIHJpbmcgaGF2ZSB0aGUKICogUElQRV9CVUZfRkxBR19DQU5fTUVSR0UgZmxhZyBzZXQuCiAqLwpzdGF0aWMgdm9pZCBwcmVwYXJlX3BpcGUoaW50IHBbMl0pCnsKCWlmIChwaXBlKHApKSBhYm9ydCgpOwoKCWNvbnN0IHVuc2lnbmVkIHBpcGVfc2l6ZSA9IGZjbnRsKHBbMV0sIEZfR0VUUElQRV9TWik7CglzdGF0aWMgY2hhciBidWZmZXJbNDA5Nl07CgoJLyogZmlsbCB0aGUgcGlwZSBjb21wbGV0ZWx5OyBlYWNoIHBpcGVfYnVmZmVyIHdpbGwgbm93IGhhdmUKCSAgIHRoZSBQSVBFX0JVRl9GTEFHX0NBTl9NRVJHRSBmbGFnICovCglmb3IgKHVuc2lnbmVkIHIgPSBwaXBlX3NpemU7IHIgJmd0OyAwOykgewoJCXVuc2lnbmVkIG4gPSByICZndDsgc2l6ZW9mKGJ1ZmZlcikgPyBzaXplb2YoYnVmZmVyKSA6IHI7CgkJd3JpdGUocFsxXSwgYnVmZmVyLCBuKTsKCQlyIC09IG47Cgl9CgoJLyogZHJhaW4gdGhlIHBpcGUsIGZyZWVpbmcgYWxsIHBpcGVfYnVmZmVyIGluc3RhbmNlcyAoYnV0CgkgICBsZWF2aW5nIHRoZSBmbGFncyBpbml0aWFsaXplZCkgKi8KCWZvciAodW5zaWduZWQgciA9IHBpcGVfc2l6ZTsgciAmZ3Q7IDA7KSB7CgkJdW5zaWduZWQgbiA9IHIgJmd0OyBzaXplb2YoYnVmZmVyKSA/IHNpemVvZihidWZmZXIpIDogcjsKCQlyZWFkKHBbMF0sIGJ1ZmZlciwgbik7CgkJciAtPSBuOwoJfQoKCS8qIHRoZSBwaXBlIGlzIG5vdyBlbXB0eSwgYW5kIGlmIHNvbWVib2R5IGFkZHMgYSBuZXcKCSAgIHBpcGVfYnVmZmVyIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGl0cyAiZmxhZ3MiLCB0aGUgYnVmZmVyCgkgICB3aWxsIGJlIG1lcmdlYWJsZSAqLwp9CgppbnQgbWFpbigpIHsKCWNvbnN0IGNoYXIgKmNvbnN0IHBhdGggPSAiL2V0Yy9wYXNzd2QiOwoKICAgICAgICBwcmludGYoIkJhY2tpbmcgdXAgL2V0Yy9wYXNzd2QgdG8gL3RtcC9wYXNzd2QuYmFrIC4uLlxuIik7CiAgICAgICAgRklMRSAqZjEgPSBmb3BlbigiL2V0Yy9wYXNzd2QiLCAiciIpOwogICAgICAgIEZJTEUgKmYyID0gZm9wZW4oIi90bXAvcGFzc3dkLmJhayIsICJ3Iik7CgogICAgICAgIGlmIChmMSA9PSBOVUxMKSB7CiAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIG9wZW4gL2V0Yy9wYXNzd2RcbiIpOwogICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgfSBlbHNlIGlmIChmMiA9PSBOVUxMKSB7CiAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIG9wZW4gL3RtcC9wYXNzd2QuYmFrXG4iKTsKICAgICAgICAgICAgZmNsb3NlKGYxKTsKICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgICAgIH0KCiAgICAgICAgY2hhciBjOwogICAgICAgIHdoaWxlICgoYyA9IGZnZXRjKGYxKSkgIT0gRU9GKQogICAgICAgICAgICBmcHV0YyhjLCBmMik7CgogICAgICAgIGZjbG9zZShmMSk7CiAgICAgICAgZmNsb3NlKGYyKTsKCglsb2ZmX3Qgb2Zmc2V0ID0gNDsgLy8gYWZ0ZXIgdGhlICJyb290IgoJY29uc3QgY2hhciAqY29uc3QgZGF0YSA9ICI6JDEkYWFyb24kcEl3cEp3TU1jb3pzVXhBdFJhODV3LjowOjA6dGVzdDovcm9vdDovYmluL3NoXG4iOyAvLyBvcGVuc3NsIHBhc3N3ZCAtMSAtc2FsdCBhYXJvbiBhYXJvbiAKICAgICAgICBwcmludGYoIlNldHRpbmcgcm9vdCBwYXNzd29yZCB0byBcImFhcm9uXCIuLi5cbiIpOwoJY29uc3Qgc2l6ZV90IGRhdGFfc2l6ZSA9IHN0cmxlbihkYXRhKTsKCglpZiAob2Zmc2V0ICUgUEFHRV9TSVpFID09IDApIHsKCQlmcHJpbnRmKHN0ZGVyciwgIlNvcnJ5LCBjYW5ub3Qgc3RhcnQgd3JpdGluZyBhdCBhIHBhZ2UgYm91bmRhcnlcbiIpOwoJCXJldHVybiBFWElUX0ZBSUxVUkU7Cgl9CgoJY29uc3QgbG9mZl90IG5leHRfcGFnZSA9IChvZmZzZXQgfCAoUEFHRV9TSVpFIC0gMSkpICsgMTsKCWNvbnN0IGxvZmZfdCBlbmRfb2Zmc2V0ID0gb2Zmc2V0ICsgKGxvZmZfdClkYXRhX3NpemU7CglpZiAoZW5kX29mZnNldCAmZ3Q7IG5leHRfcGFnZSkgewoJCWZwcmludGYoc3RkZXJyLCAiU29ycnksIGNhbm5vdCB3cml0ZSBhY3Jvc3MgYSBwYWdlIGJvdW5kYXJ5XG4iKTsKCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwoJfQoKCS8qIG9wZW4gdGhlIGlucHV0IGZpbGUgYW5kIHZhbGlkYXRlIHRoZSBzcGVjaWZpZWQgb2Zmc2V0ICovCgljb25zdCBpbnQgZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsgLy8geWVzLCByZWFkLW9ubHkhIDotKQoJaWYgKGZkICBzdC5zdF9zaXplKSB7CgkJZnByaW50ZihzdGRlcnIsICJPZmZzZXQgaXMgbm90IGluc2lkZSB0aGUgZmlsZVxuIik7CgkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKCX0KCglpZiAoZW5kX29mZnNldCAmZ3Q7IHN0LnN0X3NpemUpIHsKCQlmcHJpbnRmKHN0ZGVyciwgIlNvcnJ5LCBjYW5ub3QgZW5sYXJnZSB0aGUgZmlsZVxuIik7CgkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKCX0KCgkvKiBjcmVhdGUgdGhlIHBpcGUgd2l0aCBhbGwgZmxhZ3MgaW5pdGlhbGl6ZWQgd2l0aAoJICAgUElQRV9CVUZfRkxBR19DQU5fTUVSR0UgKi8KCWludCBwWzJdOwoJcHJlcGFyZV9waXBlKHApOwoKCS8qIHNwbGljZSBvbmUgYnl0ZSBmcm9tIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9mZnNldCBpbnRvIHRoZQoJICAgcGlwZTsgdGhpcyB3aWxsIGFkZCBhIHJlZmVyZW5jZSB0byB0aGUgcGFnZSBjYWNoZSwgYnV0CgkgICBzaW5jZSBjb3B5X3BhZ2VfdG9faXRlcl9waXBlKCkgZG9lcyBub3QgaW5pdGlhbGl6ZSB0aGUKCSAgICJmbGFncyIsIFBJUEVfQlVGX0ZMQUdfQ0FOX01FUkdFIGlzIHN0aWxsIHNldCAqLwoJLS1vZmZzZXQ7Cglzc2l6ZV90IG5ieXRlcyA9IHNwbGljZShmZCwgJmFtcDtvZmZzZXQsIHBbMV0sIE5VTEwsIDEsIDApOwoJaWYgKG5ieXRlcyAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKCiNpZm5kZWYgUEFHRV9TSVpFCiNkZWZpbmUgUEFHRV9TSVpFIDQwOTYKI2VuZGlmCgovKioKICogQ3JlYXRlIGEgcGlwZSB3aGVyZSBhbGwgImJ1ZnMiIG9uIHRoZSBwaXBlX2lub2RlX2luZm8gcmluZyBoYXZlIHRoZQogKiBQSVBFX0JVRl9GTEFHX0NBTl9NRVJHRSBmbGFnIHNldC4KICovCnN0YXRpYyB2b2lkIHByZXBhcmVfcGlwZShpbnQgcFsyXSkKewoJaWYgKHBpcGUocCkpIGFib3J0KCk7CgoJY29uc3QgdW5zaWduZWQgcGlwZV9zaXplID0gZmNudGwocFsxXSwgRl9HRVRQSVBFX1NaKTsKCXN0YXRpYyBjaGFyIGJ1ZmZlcls0MDk2XTsKCgkvKiBmaWxsIHRoZSBwaXBlIGNvbXBsZXRlbHk7IGVhY2ggcGlwZV9idWZmZXIgd2lsbCBub3cgaGF2ZQoJICAgdGhlIFBJUEVfQlVGX0ZMQUdfQ0FOX01FUkdFIGZsYWcgKi8KCWZvciAodW5zaWduZWQgciA9IHBpcGVfc2l6ZTsgciAmZ3Q7IDA7KSB7CgkJdW5zaWduZWQgbiA9IHIgJmd0OyBzaXplb2YoYnVmZmVyKSA/IHNpemVvZihidWZmZXIpIDogcjsKCQl3cml0ZShwWzFdLCBidWZmZXIsIG4pOwoJCXIgLT0gbjsKCX0KCgkvKiBkcmFpbiB0aGUgcGlwZSwgZnJlZWluZyBhbGwgcGlwZV9idWZmZXIgaW5zdGFuY2VzIChidXQKCSAgIGxlYXZpbmcgdGhlIGZsYWdzIGluaXRpYWxpemVkKSAqLwoJZm9yICh1bnNpZ25lZCByID0gcGlwZV9zaXplOyByICZndDsgMDspIHsKCQl1bnNpZ25lZCBuID0gciAmZ3Q7IHNpemVvZihidWZmZXIpID8gc2l6ZW9mKGJ1ZmZlcikgOiByOwoJCXJlYWQocFswXSwgYnVmZmVyLCBuKTsKCQlyIC09IG47Cgl9CgoJLyogdGhlIHBpcGUgaXMgbm93IGVtcHR5LCBhbmQgaWYgc29tZWJvZHkgYWRkcyBhIG5ldwoJICAgcGlwZV9idWZmZXIgd2l0aG91dCBpbml0aWFsaXppbmcgaXRzICJmbGFncyIsIHRoZSBidWZmZXIKCSAgIHdpbGwgYmUgbWVyZ2VhYmxlICovCn0KCmludCBtYWluKCkgewoJY29uc3QgY2hhciAqY29uc3QgcGF0aCA9ICIvZXRjL3Bhc3N3ZCI7CgogICAgICAgIHByaW50ZigiQmFja2luZyB1cCAvZXRjL3Bhc3N3ZCB0byAvdG1wL3Bhc3N3ZC5iYWsgLi4uXG4iKTsKICAgICAgICBGSUxFICpmMSA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsICJyIik7CiAgICAgICAgRklMRSAqZjIgPSBmb3BlbigiL3RtcC9wYXNzd2QuYmFrIiwgInciKTsKCiAgICAgICAgaWYgKGYxID09IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gb3BlbiAvZXRjL3Bhc3N3ZFxuIik7CiAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgICAgICB9IGVsc2UgaWYgKGYyID09IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gb3BlbiAvdG1wL3Bhc3N3ZC5iYWtcbiIpOwogICAgICAgICAgICBmY2xvc2UoZjEpOwogICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgfQoKICAgICAgICBjaGFyIGM7CiAgICAgICAgd2hpbGUgKChjID0gZmdldGMoZjEpKSAhPSBFT0YpCiAgICAgICAgICAgIGZwdXRjKGMsIGYyKTsKCiAgICAgICAgZmNsb3NlKGYxKTsKICAgICAgICBmY2xvc2UoZjIpOwoKCWxvZmZfdCBvZmZzZXQgPSA0OyAvLyBhZnRlciB0aGUgInJvb3QiCgljb25zdCBjaGFyICpjb25zdCBkYXRhID0gIjo6MDowOnJvb3Q6L3Jvb3Q6L2Jpbi9iYXNoXG4iOwkvLyBjbGVhbiBwYXNzd29yZAogICAgICAgIHByaW50ZigiQ2xlYW4gcGFzc3dvcmQgU3VjY2VzcyFcbiIpOwoJY29uc3Qgc2l6ZV90IGRhdGFfc2l6ZSA9IHN0cmxlbihkYXRhKTsKCglpZiAob2Zmc2V0ICUgUEFHRV9TSVpFID09IDApIHsKCQlmcHJpbnRmKHN0ZGVyciwgIlNvcnJ5LCBjYW5ub3Qgc3RhcnQgd3JpdGluZyBhdCBhIHBhZ2UgYm91bmRhcnlcbiIpOwoJCXJldHVybiBFWElUX0ZBSUxVUkU7Cgl9CgoJY29uc3QgbG9mZl90IG5leHRfcGFnZSA9IChvZmZzZXQgfCAoUEFHRV9TSVpFIC0gMSkpICsgMTsKCWNvbnN0IGxvZmZfdCBlbmRfb2Zmc2V0ID0gb2Zmc2V0ICsgKGxvZmZfdClkYXRhX3NpemU7CglpZiAoZW5kX29mZnNldCAmZ3Q7IG5leHRfcGFnZSkgewoJCWZwcmludGYoc3RkZXJyLCAiU29ycnksIGNhbm5vdCB3cml0ZSBhY3Jvc3MgYSBwYWdlIGJvdW5kYXJ5XG4iKTsKCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwoJfQoKCS8qIG9wZW4gdGhlIGlucHV0IGZpbGUgYW5kIHZhbGlkYXRlIHRoZSBzcGVjaWZpZWQgb2Zmc2V0ICovCgljb25zdCBpbnQgZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsgLy8geWVzLCByZWFkLW9ubHkhIDotKQoJaWYgKGZkICBzdC5zdF9zaXplKSB7CgkJZnByaW50ZihzdGRlcnIsICJPZmZzZXQgaXMgbm90IGluc2lkZSB0aGUgZmlsZVxuIik7CgkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKCX0KCglpZiAoZW5kX29mZnNldCAmZ3Q7IHN0LnN0X3NpemUpIHsKCQlmcHJpbnRmKHN0ZGVyciwgIlNvcnJ5LCBjYW5ub3QgZW5sYXJnZSB0aGUgZmlsZVxuIik7CgkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKCX0KCgkvKiBjcmVhdGUgdGhlIHBpcGUgd2l0aCBhbGwgZmxhZ3MgaW5pdGlhbGl6ZWQgd2l0aAoJICAgUElQRV9CVUZfRkxBR19DQU5fTUVSR0UgKi8KCWludCBwWzJdOwoJcHJlcGFyZV9waXBlKHApOwoKCS8qIHNwbGljZSBvbmUgYnl0ZSBmcm9tIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9mZnNldCBpbnRvIHRoZQoJICAgcGlwZTsgdGhpcyB3aWxsIGFkZCBhIHJlZmVyZW5jZSB0byB0aGUgcGFnZSBjYWNoZSwgYnV0CgkgICBzaW5jZSBjb3B5X3BhZ2VfdG9faXRlcl9waXBlKCkgZG9lcyBub3QgaW5pdGlhbGl6ZSB0aGUKCSAgICJmbGFncyIsIFBJUEVfQlVGX0ZMQUdfQ0FOX01FUkdFIGlzIHN0aWxsIHNldCAqLwoJLS1vZmZzZXQ7Cglzc2l6ZV90IG5ieXRlcyA9IHNwbGljZShmZCwgJmFtcDtvZmZzZXQsIHBbMV0sIE5VTEwsIDEsIDApOwoJaWYgKG5ieXRlcyAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKCiNpZm5kZWYgUEFHRV9TSVpFCiNkZWZpbmUgUEFHRV9TSVpFIDQwOTYKI2VuZGlmCgovKioKICogQ3JlYXRlIGEgcGlwZSB3aGVyZSBhbGwgImJ1ZnMiIG9uIHRoZSBwaXBlX2lub2RlX2luZm8gcmluZyBoYXZlIHRoZQogKiBQSVBFX0JVRl9GTEFHX0NBTl9NRVJHRSBmbGFnIHNldC4KICovCnN0YXRpYyB2b2lkIHByZXBhcmVfcGlwZShpbnQgcFsyXSkKewogICAgICAgIGlmIChwaXBlKHApKSBhYm9ydCgpOwoKICAgICAgICBjb25zdCB1bnNpZ25lZCBwaXBlX3NpemUgPSBmY250bChwWzFdLCBGX0dFVFBJUEVfU1opOwogICAgICAgIHN0YXRpYyBjaGFyIGJ1ZmZlcls0MDk2XTsKCiAgICAgICAgLyogZmlsbCB0aGUgcGlwZSBjb21wbGV0ZWx5OyBlYWNoIHBpcGVfYnVmZmVyIHdpbGwgbm93IGhhdmUKICAgICAgICAgICB0aGUgUElQRV9CVUZfRkxBR19DQU5fTUVSR0UgZmxhZyAqLwogICAgICAgIGZvciAodW5zaWduZWQgciA9IHBpcGVfc2l6ZTsgciAmZ3Q7IDA7KSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBuID0gciAmZ3Q7IHNpemVvZihidWZmZXIpID8gc2l6ZW9mKGJ1ZmZlcikgOiByOwogICAgICAgICAgICAgICAgd3JpdGUocFsxXSwgYnVmZmVyLCBuKTsKICAgICAgICAgICAgICAgIHIgLT0gbjsKICAgICAgICB9CgogICAgICAgIC8qIGRyYWluIHRoZSBwaXBlLCBmcmVlaW5nIGFsbCBwaXBlX2J1ZmZlciBpbnN0YW5jZXMgKGJ1dAogICAgICAgICAgIGxlYXZpbmcgdGhlIGZsYWdzIGluaXRpYWxpemVkKSAqLwogICAgICAgIGZvciAodW5zaWduZWQgciA9IHBpcGVfc2l6ZTsgciAmZ3Q7IDA7KSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBuID0gciAmZ3Q7IHNpemVvZihidWZmZXIpID8gc2l6ZW9mKGJ1ZmZlcikgOiByOwogICAgICAgICAgICAgICAgcmVhZChwWzBdLCBidWZmZXIsIG4pOwogICAgICAgICAgICAgICAgciAtPSBuOwogICAgICAgIH0KCiAgICAgICAgLyogdGhlIHBpcGUgaXMgbm93IGVtcHR5LCBhbmQgaWYgc29tZWJvZHkgYWRkcyBhIG5ldwogICAgICAgICAgIHBpcGVfYnVmZmVyIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGl0cyAiZmxhZ3MiLCB0aGUgYnVmZmVyCiAgICAgICAgICAgd2lsbCBiZSBtZXJnZWFibGUgKi8KfQoKaW50IG1haW4oKSB7CiAgICAgICAgY29uc3QgY2hhciAqY29uc3QgcGF0aCA9ICIvZXRjL2Nyb250YWIiOwoKICAgICAgICBwcmludGYoIkJhY2tpbmcgdXAgL2V0Yy9jcm9udGFiIHRvIC90bXAvY3JvbnRhYi5iYWsgLi4uXG4iKTsKICAgICAgICBGSUxFICpmMSA9IGZvcGVuKCIvZXRjL2Nyb250YWIiLCAiciIpOwogICAgICAgIEZJTEUgKmYyID0gZm9wZW4oIi90bXAvY3JvbnRhYi5iYWsiLCAidyIpOwoKICAgICAgICBpZiAoZjEgPT0gTlVMTCkgewogICAgICAgICAgICBwcmludGYoIkZhaWxlZCB0byBvcGVuIC9ldGMvY3JvbnRhYlxuIik7CiAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgICAgICB9IGVsc2UgaWYgKGYyID09IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gb3BlbiAvdG1wL2Nyb250YWIuYmFrXG4iKTsKICAgICAgICAgICAgZmNsb3NlKGYxKTsKICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgICAgIH0KCiAgICAgICAgY2hhciBjOwogICAgICAgIHdoaWxlICgoYyA9IGZnZXRjKGYxKSkgIT0gRU9GKQogICAgICAgICAgICBmcHV0YyhjLCBmMik7CgogICAgICAgIGZjbG9zZShmMSk7CiAgICAgICAgZmNsb3NlKGYyKTsKCiAgICAgICAgbG9mZl90IG9mZnNldCA9IDQ7IC8vIGFmdGVyIHRoZSAicm9vdCIKICAgICAgICBjb25zdCBjaGFyICpjb25zdCBkYXRhID0gIlxuKiAqICogKiAqIHJvb3QgL2Jpbi9iYXNoIC1jICdleGVjIGJhc2ggLWkgJmFtcDsmZ3Q7IC9kZXYvdGNwLzE5Mi4xNjguMS42LzgwMjMgIG5leHRfcGFnZSkgewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTb3JyeSwgY2Fubm90IHdyaXRlIGFjcm9zcyBhIHBhZ2UgYm91bmRhcnlcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICB9CgogICAgICAgIC8qIG9wZW4gdGhlIGlucHV0IGZpbGUgYW5kIHZhbGlkYXRlIHRoZSBzcGVjaWZpZWQgb2Zmc2V0ICovCiAgICAgICAgY29uc3QgaW50IGZkID0gb3BlbihwYXRoLCBPX1JET05MWSk7IC8vIHllcywgcmVhZC1vbmx5ISA6LSkKICAgICAgICBpZiAoZmQgIHN0LnN0X3NpemUpIHsKICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiT2Zmc2V0IGlzIG5vdCBpbnNpZGUgdGhlIGZpbGVcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICB9CgogICAgICAgIGlmIChlbmRfb2Zmc2V0ICZndDsgc3Quc3Rfc2l6ZSkgewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTb3JyeSwgY2Fubm90IGVubGFyZ2UgdGhlIGZpbGVcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICB9CgogICAgICAgIC8qIGNyZWF0ZSB0aGUgcGlwZSB3aXRoIGFsbCBmbGFncyBpbml0aWFsaXplZCB3aXRoCiAgICAgICAgICAgUElQRV9CVUZfRkxBR19DQU5fTUVSR0UgKi8KICAgICAgICBpbnQgcFsyXTsKICAgICAgICBwcmVwYXJlX3BpcGUocCk7CgogICAgICAgIC8qIHNwbGljZSBvbmUgYnl0ZSBmcm9tIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9mZnNldCBpbnRvIHRoZQogICAgICAgICAgIHBpcGU7IHRoaXMgd2lsbCBhZGQgYSByZWZlcmVuY2UgdG8gdGhlIHBhZ2UgY2FjaGUsIGJ1dAogICAgICAgICAgIHNpbmNlIGNvcHlfcGFnZV90b19pdGVyX3BpcGUoKSBkb2VzIG5vdCBpbml0aWFsaXplIHRoZQogICAgICAgICAgICJmbGFncyIsIFBJUEVfQlVGX0ZMQUdfQ0FOX01FUkdFIGlzIHN0aWxsIHNldCAqLwogICAgICAgIC0tb2Zmc2V0OwogICAgICAgIHNzaXplX3QgbmJ5dGVzID0gc3BsaWNlKGZkLCAmYW1wO29mZnNldCwgcFsxXSwgTlVMTCwgMSwgMCk7CiAgICAgICAgaWYgKG5ieXRlcyAvZGV2L251bGwgICAvL+aQnOe0ouWFt+aciXN1aWTmnYPpmZDnmoTmlofku7YKYGBgCgohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvOTkxMS9jZDI4OGE5MTE4NTg5MzI1M2JjY2Y2NmMxOWQ5NTdhOV8xNjIwMy5wbmcpCgohW10oaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvOTkxMS83MzdiOGI2ZTBmOTU0Njc2YmZmN2FlNzViODllZTdmYV82MDAyNi5wbmcpCgpgYGBDCiNkZWZpbmUgX0dOVV9TT1VSQ0UKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKI2luY2x1ZGUgCiNpbmNsdWRlIAojaW5jbHVkZSAKI2luY2x1ZGUgCgojaWZuZGVmIFBBR0VfU0laRQojZGVmaW5lIFBBR0VfU0laRSA0MDk2CiNlbmRpZiAKCi8qKgogKiBDcmVhdGUgYSBwaXBlIHdoZXJlIGFsbCAiYnVmcyIgb24gdGhlIHBpcGVfaW5vZGVfaW5mbyByaW5nIGhhdmUgdGhlCiAqIFBJUEVfQlVGX0ZMQUdfQ0FOX01FUkdFIGZsYWcgc2V0LgogKi8Kc3RhdGljIHZvaWQgcHJlcGFyZV9waXBlKGludCBwWzJdKQp7CglpZiAocGlwZShwKSkgYWJvcnQoKTsKCgljb25zdCB1bnNpZ25lZCBwaXBlX3NpemUgPSBmY250bChwWzFdLCBGX0dFVFBJUEVfU1opOwoJc3RhdGljIGNoYXIgYnVmZmVyWzQwOTZdOwoKCS8qIGZpbGwgdGhlIHBpcGUgY29tcGxldGVseTsgZWFjaCBwaXBlX2J1ZmZlciB3aWxsIG5vdyBoYXZlCgkgICB0aGUgUElQRV9CVUZfRkxBR19DQU5fTUVSR0UgZmxhZyAqLwoJZm9yICh1bnNpZ25lZCByID0gcGlwZV9zaXplOyByICZndDsgMDspIHsKCQl1bnNpZ25lZCBuID0gciAmZ3Q7IHNpemVvZihidWZmZXIpID8gc2l6ZW9mKGJ1ZmZlcikgOiByOwoJCXdyaXRlKHBbMV0sIGJ1ZmZlciwgbik7CgkJciAtPSBuOwoJfQoKCS8qIGRyYWluIHRoZSBwaXBlLCBmcmVlaW5nIGFsbCBwaXBlX2J1ZmZlciBpbnN0YW5jZXMgKGJ1dAoJICAgbGVhdmluZyB0aGUgZmxhZ3MgaW5pdGlhbGl6ZWQpICovCglmb3IgKHVuc2lnbmVkIHIgPSBwaXBlX3NpemU7IHIgJmd0OyAwOykgewoJCXVuc2lnbmVkIG4gPSByICZndDsgc2l6ZW9mKGJ1ZmZlcikgPyBzaXplb2YoYnVmZmVyKSA6IHI7CgkJcmVhZChwWzBdLCBidWZmZXIsIG4pOwoJCXIgLT0gbjsKCX0KCgkvKiB0aGUgcGlwZSBpcyBub3cgZW1wdHksIGFuZCBpZiBzb21lYm9keSBhZGRzIGEgbmV3CgkgICBwaXBlX2J1ZmZlciB3aXRob3V0IGluaXRpYWxpemluZyBpdHMgImZsYWdzIiwgdGhlIGJ1ZmZlcgoJICAgd2lsbCBiZSBtZXJnZWFibGUgKi8KfQoKaW50IG1haW4oKSB7Cgljb25zdCBjaGFyICpjb25zdCBwYXRoID0gIi4vc3VkbyI7CgogICAgICAgIHByaW50ZigiQmFja2luZyB1cCAuL3N1ZG8gdG8gL3RtcC9zdWRvLmJhayAuLi5cbiIpOwogICAgICAgIEZJTEUgKmYxID0gZm9wZW4oIi4vc3VkbyIsICJyIik7CiAgICAgICAgRklMRSAqZjIgPSBmb3BlbigiL3RtcC9zdWRvLmJhayIsICJ3Iik7CgogICAgICAgIGlmIChmMSA9PSBOVUxMKSB7CiAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRvIG9wZW4gLi9zdWRvXG4iKTsKICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgICAgIH0gZWxzZSBpZiAoZjIgPT0gTlVMTCkgewogICAgICAgICAgICBwcmludGYoIkZhaWxlZCB0byBvcGVuIC90bXAvc3Vkby5iYWtcbiIpOwogICAgICAgICAgICBmY2xvc2UoZjEpOwogICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgfQoKICAgICAgICBjaGFyIGM7CiAgICAgICAgd2hpbGUgKChjID0gZmdldGMoZjEpKSAhPSBFT0YpCiAgICAgICAgICAgIGZwdXRjKGMsIGYyKTsKCiAgICAgICAgZmNsb3NlKGYxKTsKICAgICAgICBmY2xvc2UoZjIpOwoKCWxvZmZfdCBvZmZzZXQgPSAzNzYxNjsKCQoJY29uc3QgY2hhciBkYXRhIFsyNTVdPXsweDQ4LDB4MzEsMHhmZiwweGIwLDB4NjksMHgwZiwweDA1LDB4NDgsMHgzMSwweGQyLDB4NDgsMHhiYiwweGZmLDB4MmYsMHg2MiwweDY5LDB4NmUsMHgyZiwweDczLDB4NjgsMHg0OCwweGMxLDB4ZWIsMHgwOCwweDUzLDB4NDgsMHg4OSwweGU3LDB4NDgsMHgzMSwweGMwLDB4NTAsMHg1NywweDQ4LDB4ODksMHhlNiwweGIwLDB4M2IsMHgwZiwweDA1LDB4NmEsMHgwMSwweDVmLDB4NmEsMHgzYywweDU4LDB4MGYsMHgwNX07CiAgCglwcmludGYoIkhpamFja2luZyBzdWNjZXNzIVxuIik7Cgljb25zdCBzaXplX3QgZGF0YV9zaXplID0gc3RybGVuKGRhdGEpOwoKCWlmIChvZmZzZXQgJSBQQUdFX1NJWkUgPT0gMCkgewoJCWZwcmludGYoc3RkZXJyLCAiU29ycnksIGNhbm5vdCBzdGFydCB3cml0aW5nIGF0IGEgcGFnZSBib3VuZGFyeVxuIik7CgkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKCX0KCgljb25zdCBsb2ZmX3QgbmV4dF9wYWdlID0gKG9mZnNldCB8IChQQUdFX1NJWkUgLSAxKSkgKyAxOwoJY29uc3QgbG9mZl90IGVuZF9vZmZzZXQgPSBvZmZzZXQgKyAobG9mZl90KWRhdGFfc2l6ZTsKCWlmIChlbmRfb2Zmc2V0ICZndDsgbmV4dF9wYWdlKSB7CgkJZnByaW50ZihzdGRlcnIsICJTb3JyeSwgY2Fubm90IHdyaXRlIGFjcm9zcyBhIHBhZ2UgYm91bmRhcnlcbiIpOwoJCXJldHVybiBFWElUX0ZBSUxVUkU7Cgl9CgoJLyogb3BlbiB0aGUgaW5wdXQgZmlsZSBhbmQgdmFsaWRhdGUgdGhlIHNwZWNpZmllZCBvZmZzZXQgKi8KCWNvbnN0IGludCBmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOyAvLyB5ZXMsIHJlYWQtb25seSEgOi0pCglpZiAoZmQgIHN0LnN0X3NpemUpIHsKCQlmcHJpbnRmKHN0ZGVyciwgIk9mZnNldCBpcyBub3QgaW5zaWRlIHRoZSBmaWxlXG4iKTsKCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwoJfQoKCWlmIChlbmRfb2Zmc2V0ICZndDsgc3Quc3Rfc2l6ZSkgewoJCWZwcmludGYoc3RkZXJyLCAiU29ycnksIGNhbm5vdCBlbmxhcmdlIHRoZSBmaWxlXG4iKTsKCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwoJfQoKCS8qIGNyZWF0ZSB0aGUgcGlwZSB3aXRoIGFsbCBmbGFncyBpbml0aWFsaXplZCB3aXRoCgkgICBQSVBFX0JVRl9GTEFHX0NBTl9NRVJHRSAqLwoJaW50IHBbMl07CglwcmVwYXJlX3BpcGUocCk7CgoJLyogc3BsaWNlIG9uZSBieXRlIGZyb20gYmVmb3JlIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGludG8gdGhlCgkgICBwaXBlOyB0aGlzIHdpbGwgYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBwYWdlIGNhY2hlLCBidXQKCSAgIHNpbmNlIGNvcHlfcGFnZV90b19pdGVyX3BpcGUoKSBkb2VzIG5vdCBpbml0aWFsaXplIHRoZQoJICAgImZsYWdzIiwgUElQRV9CVUZfRkxBR19DQU5fTUVSR0UgaXMgc3RpbGwgc2V0ICovCgktLW9mZnNldDsKCXNzaXplX3QgbmJ5dGVzID0gc3BsaWNlKGZkLCAmYW1wO29mZnNldCwgcFsxXSwgTlVMTCwgMSwgMCk7CglpZiAobmJ5dGVzIAojaW5jbHVkZSAKI2luY2x1ZGUgCgpjb25zdCB1aW50OF90IHNjWzI5XSA9IHsKICAgIDB4NmEsIDB4NDIsIDB4NTgsIDB4ZmUsIDB4YzQsIDB4NDgsIDB4OTksIDB4NTIsIDB4NDgsIDB4YmYsCiAgICAweDJmLCAweDYyLCAweDY5LCAweDZlLCAweDJmLCAweDJmLCAweDczLCAweDY4LCAweDU3LCAweDU0LAogICAgMHg1ZSwgMHg0OSwgMHg4OSwgMHhkMCwgMHg0OSwgMHg4OSwgMHhkMiwgMHgwZiwgMHgwNQp9OwoKLyoqIHN0cgpceDZhXHg0Mlx4NThceGZlXHhjNFx4NDhceDk5XHg1Mlx4NDhceGJmClx4MmZceDYyXHg2OVx4NmVceDJmXHgyZlx4NzNceDY4XHg1N1x4NTQKXHg1ZVx4NDlceDg5XHhkMFx4NDlceDg5XHhkMlx4MGZceDA1CioqLwoKaW50IG1haW4gKHZvaWQpCnsKICAoKHZvaWQgKCopICh2b2lkKSkgc2MpICgpOwogIHJldHVybiBFWElUX1NVQ0NFU1M7Cn0KYGBgCgpgYGBhc3NlbWJseQovKgpzZXR1aWQoMCkgKyBleGVjdmUoL2Jpbi9zaCkgLSBqdXN0IDQgZnVuLiAKeGk0b3l1IFthdF0gODBzZWMuY29tCiAKbWFpbigpewpfX2FzbSggICJ4b3JxICVyZGksJXJkaVxuXHQiCiAgICAgICAgIm1vdiAkMHg2OSwlYWxcblx0IgogICAgICAgICJzeXNjYWxsIFxuXHQiCiAgICAgICAgInhvcnEgICAlcmR4LCAlcmR4IFxuXHQiCiAgICAgICAgIm1vdnEgICAkMHg2ODczMmY2ZTY5NjIyZmZmLCVyYng7IFxuXHQiCiAgICAgICAgInNociAgICAkMHg4LCAlcmJ4OyBcblx0IgogICAgICAgICJwdXNoICAgJXJieDsgXG5cdCIKICAgICAgICAibW92cSAgICVyc3AsJXJkaTsgXG5cdCIKICAgICAgICAieG9ycSAgICVyYXgsJXJheDsgXG5cdCIKICAgICAgICAicHVzaHEgICVyYXg7IFxuXHQiCiAgICAgICAgInB1c2hxICAlcmRpOyBcblx0IgogICAgICAgICJtb3ZxICAgJXJzcCwlcnNpOyBcblx0IgogICAgICAgICJtb3YgICAgJDB4M2IsJWFsOyBcblx0IgogICAgICAgICJzeXNjYWxsIDsgXG5cdCIKICAgICAgICAicHVzaHEgICQweDEgOyBcblx0IgogICAgICAgICJwb3AgICAgJXJkaSA7IFxuXHQiCiAgICAgICAgInB1c2hxICAkMHgzYyA7IFxuXHQiCiAgICAgICAgInBvcCAgICAlcmF4IDsgXG5cdCIKICAgICAgICAic3lzY2FsbCAgOyBcblx0IgopOwp9CiovCm1haW4oKSB7CiAgICAgICAgY2hhciBzaGVsbGNvZGVbXSA9CiAgICAgICAgIlx4NDhceDMxXHhmZlx4YjBceDY5XHgwZlx4MDVceDQ4XHgzMVx4ZDJceDQ4XHhiYlx4ZmZceDJmXHg2MiIKICAgICAgICAiXHg2OVx4NmVceDJmXHg3M1x4NjhceDQ4XHhjMVx4ZWJceDA4XHg1M1x4NDhceDg5XHhlN1x4NDhceDMxIgogICAgICAgICJceGMwXHg1MFx4NTdceDQ4XHg4OVx4ZTYgXHhiMFx4M2JceDBmXHgwNVx4NmFceDAxXHg1Zlx4NmFceDNjIgogICAgICAgICJceDU4XHgwZlx4MDUiOwogICAgICAgICgqKHZvaWQgKCopKCkpIHNoZWxsY29kZSkoKTsKfQogCjIwMDktMDUtMTQKZXZpbC54aTRveXUgCmBgYA==
用户名金币积分时间理由
Track-聂风 100.00 0 2023-05-05 15:03:55 一个受益终生的帖子~~

打赏我,让我更有动力~

0 条回复   |  直到 2023-5-4 | 758 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2026 掌控者 All Rights Reserved.